From 0fd468e511ed6fcae4577943c014e500165d7628 Mon Sep 17 00:00:00 2001 From: "sam@freighttrust.com" Date: Wed, 8 Jul 2020 21:13:56 -0700 Subject: [PATCH 1/5] build(wip dir): work in progress dir excluding work in progress dir from commit --- .gitignore | 2 + docs/cdm/abnf-tokens.md | 88 -- docs/cdm/as2-main.md | 30 - docs/cdm/as2.yaml | 31 - docs/cdm/as2protocol.md | 25 - ...f2aa27feb2e425021d9f13c5058f162e53e517a36c | 1 - docs/cdm/ebcdic.md | 262 ----- docs/cdm/graphql-federated.md | 311 ------ docs/cdm/nodes.md | 38 - docs/cdm/protocol.md | 78 -- docs/cdm/schema-registry.md | 75 -- docs/cdm/service-offerings.md | 24 - docs/index.md | 3 + docs/platform/container-routes.md | 69 ++ docs/platform/edi.json | 195 ++++ docs/platform/interfaces.ts | 83 ++ docs/platform/main.go | 103 ++ docs/platform/vessel-carriers.md | 615 +++++++++++ docs/x12/X12DataElements.md | 326 ++++++ docs/x12/X12_Data_Element_KeyArray.json | 965 ++++++++++++++++++ 20 files changed, 2361 insertions(+), 963 deletions(-) delete mode 100644 docs/cdm/abnf-tokens.md delete mode 100644 docs/cdm/as2-main.md delete mode 100644 docs/cdm/as2.yaml delete mode 100644 docs/cdm/as2protocol.md delete mode 100644 docs/cdm/dc6547aef2aa27feb2e425021d9f13c5058f162e53e517a36c delete mode 100644 docs/cdm/ebcdic.md delete mode 100644 docs/cdm/graphql-federated.md delete mode 100644 docs/cdm/nodes.md delete mode 100644 docs/cdm/protocol.md delete mode 100644 docs/cdm/schema-registry.md delete mode 100644 docs/cdm/service-offerings.md create mode 100644 docs/platform/container-routes.md create mode 100644 docs/platform/edi.json create mode 100644 docs/platform/interfaces.ts create mode 100644 docs/platform/main.go create mode 100644 docs/platform/vessel-carriers.md create mode 100644 docs/x12/X12DataElements.md create mode 100644 docs/x12/X12_Data_Element_KeyArray.json diff --git a/.gitignore b/.gitignore index 2e3ec59..1432fad 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ package-lock.json yarn.lock site +docs/wip/ +wip/ diff --git a/docs/cdm/abnf-tokens.md b/docs/cdm/abnf-tokens.md deleted file mode 100644 index 1fc1eb2..0000000 --- a/docs/cdm/abnf-tokens.md +++ /dev/null @@ -1,88 +0,0 @@ -# Imported ABNF Tokens - - The formal definition of these header fields is as follows: - - entity-headers := [ content CRLF ] - [ encoding CRLF ] - [ id CRLF ] - [ description CRLF ] - *( MIME-extension-field CRLF ) - - MIME-message-headers := entity-headers - fields - version CRLF - ; The ordering of the header - ; fields implied by this BNF - ; definition should be ignored. - - MIME-part-headers := entity-headers - [ fields ] - ; Any field not beginning with - ; "content-" can have no defined - ; meaning and may be ignored. - ; The ordering of the header - ; fields implied by this BNF - ; definition should be ignored. - - version := "MIME-Version" ":" 1*DIGIT "." 1*DIGIT - - -## ABNF Tokens - - The following tokens are imported from other RFCs as noted. Those - RFCs should be considered definitive. - - The following tokens are imported from [RFC5321]: - - o "local-part" (implementation warning: this permits quoted strings) - - o "sub-domain" - - The following tokens are imported from [RFC5322]: - - o "field-name" (name of a header field) [RFC5322] - - o "dot-atom-text" (in the local-part of an email address) [RFC5322] - - The following tokens are imported from [RFC2045]: - - o "qp-section" (a single line of quoted-printable-encoded text) [RFC2045] - - ABNF - - dkim-quoted-printable = *(FWS / hex-octet / dkim-safe-char) - ; hex-octet is from RFC2045 - dkim-safe-char = %x21-3A / %x3C / %x3E-7E - ; '!' - ':', '<', '>' - '~' - - tag-list = tag-spec *( ";" tag-spec ) [ ";" ] - tag-spec = [FWS] tag-name [FWS] "=" [FWS] tag-value [FWS] - tag-name = ALPHA *ALNUMPUNC - tag-value = [ tval *( 1*(WSP / FWS) tval ) ] - ; Prohibits WSP and FWS at beginning and end - tval = 1*VALCHAR - VALCHAR = %x21-3A / %x3C-7E - ; EXCLAMATION to TILDE except SEMICOLON - ALNUMPUNC = ALPHA / DIGIT / "_" - - -### Whitespace - - There are three forms of whitespace: - - o WSP represents simple whitespace, i.e., a space or a tab character - (formal definition in [RFC5234]). - - o LWSP is linear whitespace, defined as WSP plus CRLF (formal - definition in [RFC5234]). - - o FWS is folding whitespace. It allows multiple lines separated by - CRLF followed by at least one whitespace, to be joined. - - The formal ABNF for these are (WSP and LWSP are given for information - only): - - WSP = SP / HTAB - LWSP = *(WSP / CRLF WSP) - FWS = [*WSP CRLF] 1*WSP - diff --git a/docs/cdm/as2-main.md b/docs/cdm/as2-main.md deleted file mode 100644 index e3e5aeb..0000000 --- a/docs/cdm/as2-main.md +++ /dev/null @@ -1,30 +0,0 @@ -## AS2 Identifier -Your AS2 identifier is included in outgoing AS2 messages and identifies you as the sender; additionally incoming AS2 messages must be addressed to this identifier to be accepted by the application. AS2 identifiers have a few restrictions, for example they cannot include whitespace characters and they are case-sensitive. Other than this (and any further restrictions imposed by trading partners), AS2 identifiers can be any value so long as it is mutually agreed-upon. - -### Private Certificate -Your private certificate is used for digital cryptography (decryption, digital signatures). The private certificate contains a private key that is paired with your public encryption key; when a trading partner uses your public encryption key to secure an AS2 message, it ensures that only you can decrypt the message (with the paired private key). - -Freight Trust supports private certificates in PKCS#12 format (.pfx or .p12 files), and PEM-encoded public key certificates (.cer files). - -Freight Trust includes a test pair of private and public key certificates (‘test.pfx’ and ‘test.cer’) that can be used to test the cryptographic aspects of AS2 (encryption, signatures) without needing to procure an external certificate pair. These certificates should not be used in live production transactions with a trading partner. - -Common Name - The hostname of the server using the certificate; used in conjunction with the serial number to identify the certificate -Organization - The company or group to which the certificate belongs -File Name - The name of the certificate file (with .pfx extension); the corresponding public key certificate will have the same name with a .cer extension -Serial Number - A unique serial number that is used in conjunction with the common name to identify the certificate -Password - The password required to access the private key -Validity Period - Determines the expiration date of the certificate -Key Size - Whether to create a 512, 1024, or 2048-bit key -Signature Algorithm - The algorithm to use when applying a digital signature to the certificate, verifying its authenticity - - -## Required Configuration Settings -AS2 configuration details must be solicited from the trading partner. At a minimum, the details that the trading partner provides must include: - -* AS2 identifier -* URL/endpoint where outgoing AS2 messages should be sent -* Public certificate/key for encryption - - - - diff --git a/docs/cdm/as2.yaml b/docs/cdm/as2.yaml deleted file mode 100644 index f83bd41..0000000 --- a/docs/cdm/as2.yaml +++ /dev/null @@ -1,31 +0,0 @@ ---- -mode: as2 -type: mustache template - - -{{Content-Type}}} -{{Date}} -{{From}} -{{Message-Id}} -{{MIME-Version}} -{{Content-Transfer-Encoding}} -{{Content-Disposition}} -{{Disposition-Notification-To}} -{{Disposition-Notification-Options}} -{{AS2-Version}} -{{AS2-To}} -{{AS2-From}} -{{Content-Length}} -{{User-Agent}} -{{Host}} -{{Connection}} - - - -{{HTTP_REQUEST_TYPE}} -{{destination_ip}} -{{destination_port}} -{{HTTP_REQUEST_URL}} -{{source_ip}} -{{source_port}} - \ No newline at end of file diff --git a/docs/cdm/as2protocol.md b/docs/cdm/as2protocol.md deleted file mode 100644 index 39a1c38..0000000 --- a/docs/cdm/as2protocol.md +++ /dev/null @@ -1,25 +0,0 @@ - -[Content-Type] -[Date] -[From] -[Message-Id] -[MIME-Version] -[Content-Transfer-Encoding] -[Content-Disposition] -[Disposition-Notification-To] -[Disposition-Notification-Options] -[AS2-Version] -[AS2-To] -[AS2-From] -[Content-Length] -[User-Agent] -[Host] -[Connection] - - -[HTTP_REQUEST_TYPE] -[destination_ip] -[destination_port] -[HTTP_REQUEST_URL] -[source_ip] -[source_port] \ No newline at end of file diff --git a/docs/cdm/dc6547aef2aa27feb2e425021d9f13c5058f162e53e517a36c b/docs/cdm/dc6547aef2aa27feb2e425021d9f13c5058f162e53e517a36c deleted file mode 100644 index ef90dc7..0000000 --- a/docs/cdm/dc6547aef2aa27feb2e425021d9f13c5058f162e53e517a36c +++ /dev/null @@ -1 +0,0 @@ -eG'%.Sl^0 | Greater than | -| 63 | 3F | SUB | Substitute | ? | Question mark | -| 64 | 40 | SP | Space | @ | At | -| 65 | 41 | | | A | Uppercase A | -| 66 | 42 | | | B | Uppercase B | -| 67 | 43 | | | C | Uppercase C | -| 68 | 44 | | | D | Uppercase D | -| 69 | 45 | | | E | Uppercase E | -| 70 | 46 | | | F | Uppercase F | -| 71 | 47 | | | G | Uppercase G | -| 72 | 48 | | | H | Uppercase H | -| 73 | 49 | | | I | Uppercase I | -| 74 | 4A | � | Cent Sign | J | Uppercase J | -| 75 | 4B | \. | Full stop | K | Uppercase K | -| 76 | 4C | < | Less\-than | L | Uppercase L | -| 77 | 4D | \( | Left Parenthesis | M | Uppercase M | -| 78 | 4E | \_\. =\+ | Plus | N | Uppercase N | -| 79 | 4F | | | O | Uppercase O | -| 80 | 50 | & | Ampersand | P | Uppercase P | -| 81 | 51 | | | Q | Uppercase Q | -| 82 | 52 | | | R | Uppercase R | -| 83 | 53 | | | S | Uppercase S | -| 84 | 54 | | | T | Uppercase T | -| 85 | 55 | | | U | Uppercase U | -| 86 | 56 | | | V | Uppercase V | -| 87 | 57 | | | W | Uppercase W | -| 88 | 58 | | | X | Uppercase X | -| 89 | 59 | | | Y | Uppercase Y | -| 90 | 5A | \! | Exclamation mark | Z | Uppercase Z | -| 91 | 5B | $ | Dollar | \[ | Open square bracket | -| 92 | 5C | \* | Asterisk | \\ | Backslash | -| 93 | 5D | \) | Right Parenthesis | \] | Close square bracket | -| 94 | 5E | ; | Semicolon | ^ | Caret / hat | -| 95 | 5F | ¬ | Logical NOT | \_ | Underscore | -| 96 | 60 | \- | Dash | \` | Grave accent | -| 97 | 61 | / | Slash | a | Lowercase a | -| 98 | 62 | | | b | Lowercase b | -| 99 | 63 | | | c | Lowercase c | -| 100 | 64 | | | d | Lowercase d | -| 101 | 65 | | | e | Lowercase e | -| 102 | 66 | | | f | Lowercase f | -| 103 | 67 | | | g | Lowercase g | -| 104 | 68 | | | h | Lowercase h | -| 105 | 69 | | | i | Lowercase i | -| 106 | 6A | \| | Logical OR | j | Lowercase j | -| 107 | 6B | , | Comma | k | Lowercase k | -| 108 | 6C | % | Percent | l | Lowercase l | -| 109 | 6D | \_ | Underscore | m | Lowercase m | -| 110 | 6E | > | Greater\-than | n | Lowercase n | -| 111 | 6F | ? | Question mark | o | Lowercase o | -| 112 | 70 | | | p | Lowercase p | -| 113 | 71 | | | q | Lowercase q | -| 114 | 72 | | | r | Lowercase r | -| 115 | 73 | | | s | Lowercase s | -| 116 | 74 | | | t | Lowercase t | -| 117 | 75 | | | u | Lowercase u | -| 118 | 76 | | | v | Lowercase v | -| 119 | 77 | | | w | Lowercase w | -| 120 | 78 | | | x | Lowercase x | -| 121 | 79 | | | y | Lowercase y | -| 122 | 7A | : | Colon | z | Lowercase z | -| 123 | 7B | \# | Number Sign | \{ | Open brace | -| 124 | 7C | @ | At | \| | Pipe | -| 125 | 7D | | Apostrophe | \} | Close brace | -| 126 | 7E | \_ = | Equals | ~ | Tilde | -| 127 | 7F | " | Quotation mark | | Delete | -| 128 | 80 | | | | | -| 129 | 81 | a | Lowercase a | | | -| 130 | 82 | b | Lowercase b | | | -| 131 | 83 | c | Lowercase c | | | -| 132 | 84 | d | Lowercase d | | | -| 133 | 85 | e | Lowercase e | | | -| 134 | 86 | f | Lowercase f | | | -| 135 | 87 | g | Lowercase g | | | -| 136 | 88 | h | Lowercase h | | | -| 137 | 89 | i | Lowercase i | | | -| 138 | 8A | | | | | -| 139 | 8B | | | | | -| 140 | 8C | | | | | -| 141 | 8D | | | | | -| 142 | 8E | | | | | -| 143 | 8F | | | | | -| 144 | 90 | | | | | -| 145 | 91 | j | Lowercase j | | | -| 146 | 92 | k | Lowercase k | | | -| 147 | 93 | l | Lowercase l | | | -| 148 | 94 | m | Lowercase m | | | -| 149 | 95 | n | Lowercase n | | | -| 150 | 96 | o | Lowercase o | | | -| 151 | 97 | p | Lowercase p | | | -| 152 | 98 | q | Lowercase q | | | -| 153 | 99 | r | Lowercase r | | | -| 154 | 9A | | | | | -| 155 | 9B | | | | | -| 156 | 9C | | | | | -| 157 | 9D | | | | | -| 158 | 9E | | | | | -| 159 | 9F | | | | | -| 160 | A0 | | | | | -| 161 | A1 | ~ | Tilde | | | -| 162 | A2 | s | Lowercase s | | | -| 163 | A3 | t | Lowercase t | | | -| 164 | A4 | u | Lowercase u | | | -| 165 | A5 | v | Lowercase v | | | -| 166 | A6 | w | Lowercase w | | | -| 167 | A7 | x | Lowercase x | | | -| 168 | A8 | y | Lowercase y | | | -| 169 | A9 | z | Lowercase z | | | -| 170 | AA | | | | | -| 171 | AB | | | | | -| 172 | AC | | | | | -| 173 | AD | | | | | -| 174 | AE | | | | | -| 175 | AF | | | | | -| 176 | B0 | | | | | -| 177 | B1 | | | | | -| 178 | B2 | | | | | -| 179 | B3 | | | | | -| 180 | B4 | | | | | -| 181 | B5 | | | | | -| 182 | B6 | | | | | -| 183 | B7 | | | | | -| 184 | B8 | | | | | -| 185 | B9 | \` | Grave Accent | | | -| 186 | BA | | | | | -| 187 | BB | | | | | -| 188 | BC | | | | | -| 189 | BD | | | | | -| 190 | BE | | | | | -| 191 | BF | | | | | -| 192 | C0 | \{ | Opening Brace | | | -| 193 | C1 | A | Uppercase A | | | -| 194 | C2 | B | Uppercase B | | | -| 195 | C3 | C | Uppercase C | | | -| 196 | C4 | D | Uppercase D | | | -| 197 | C5 | E | Uppercase E | | | -| 198 | C6 | F | Uppercase F | | | -| 199 | C7 | G | Uppercase G | | | -| 200 | C8 | H | Uppercase H | | | -| 201 | C9 | I | Uppercase I | | | -| 202 | CA | | | | | -| 203 | CB | | | | | -| 204 | CC | | | | | -| 205 | CD | | | | | -| 206 | CE | | | | | -| 207 | CF | | | | | -| 208 | D0 | \} | Closing Brace | | | -| 209 | D1 | J | Uppercase J | | | -| 210 | D2 | K | Uppercase K | | | -| 211 | D3 | L | Uppercase L | | | -| 212 | D4 | M | Uppercase M | | | -| 213 | D5 | N | Uppercase N | | | -| 214 | D6 | O | Uppercase O | | | -| 215 | D7 | P | Uppercase P | | | -| 216 | D8 | Q | Uppercase Q | | | -| 217 | D9 | R | Uppercase R | | | -| 218 | DA | | | | | -| 219 | DB | | | | | -| 220 | DC | | | | | -| 221 | DD | | | | | -| 222 | DE | | | | | -| 223 | DF | | | | | -| 224 | E0 | \\ | Backslash | | | -| 225 | E1 | | | | | -| 226 | E2 | S | Uppercase S | | | -| 227 | E3 | T | Uppercase T | | | -| 228 | E4 | U | Uppercase U | | | -| 229 | E5 | V | Uppercase V | | | -| 230 | E6 | W | Uppercase W | | | -| 231 | E7 | X | Uppercase X | | | -| 232 | E8 | Y | Uppercase Y | | | -| 233 | E9 | Z | Uppercase Z | | | -| 234 | EA | | | | | -| 235 | EB | | | | | -| 236 | EC | | | | | -| 237 | ED | | | | | -| 238 | EE | | | | | -| 239 | EF | | | | | -| 240 | F0 | 0 | Zero | | | -| 241 | F1 | 1 | One | | | -| 242 | F2 | 2 | Two | | | -| 243 | F3 | 3 | Three | | | -| 244 | F4 | 4 | Four | | | -| 245 | F5 | 5 | Five | | | -| 246 | F6 | 6 | Six | | | -| 247 | F7 | 7 | Seven | | | -| 248 | F8 | 8 | Eight | | | -| 249 | F9 | 9 | Nine | | | -| 250 | FA | | | | | -| 251 | FB | | | | | -| 252 | FC | | | | | -| 253 | FD | | | | | -| 254 | FE | | | | | -| 255 | FF | | | | | diff --git a/docs/cdm/graphql-federated.md b/docs/cdm/graphql-federated.md deleted file mode 100644 index 2f02a2d..0000000 --- a/docs/cdm/graphql-federated.md +++ /dev/null @@ -1,311 +0,0 @@ ---- -title: Apollo Federation specification -sidebar_title: Specification -description: For implementing federation in other languages ---- - -> This content is meant for developers adding federation support to alternative GraphQL servers, and for anyone curious about the inner workings of federation. It is not needed to use or understand federation when using Apollo Server. - -To make a GraphQL service federation capable, it needs the following: - -* Implementation of the federation schema specification -* Support for fetching service capabilities -* Implementation of stub type generation for references -* Implementation of request resolving for entities. - -## Federation schema specification - -Federated services will need to implement the following additions to the schema to allow the gateway to use the service for execution: - -```graphql -scalar _Any -scalar _FieldSet - -# a union of all types that use the @key directive -union _Entity - -type _Service { - sdl: String -} - -extend type Query { - _entities(representations: [_Any!]!): [_Entity]! - _service: _Service! -} - -directive @external on FIELD_DEFINITION -directive @requires(fields: _FieldSet!) on FIELD_DEFINITION -directive @provides(fields: _FieldSet!) on FIELD_DEFINITION -directive @key(fields: _FieldSet!) on OBJECT | INTERFACE - -# this is an optional directive discussed below -directive @extends on OBJECT | INTERFACE -``` - -For more information on these additions, see the [glossary](#schema-modifications-glossary). - -## Fetch service capabilities - -Schema composition at the gateway requires having each service's schema, annotated with its federation configuration. This information is fetched from each service using `_service`, an enhanced introspection entry point added to the query root of each federated service. - -> Note that the `_service` field is not exposed by the gateway; it is solely for internal use. - -The `_service` resolver should return the `_Service` type which has a single field called `sdl`. This SDL (schema definition language) is a printed version of the service's schema **including** the annotations of federation directives. This SDL does **not** include the additions of the federation spec above. Given an input like this: - -```graphql -extend type Query { - me: User -} - -type User @key(fields: "id") { - id: ID! -} -``` - -The generated SDL should match that exactly with no additions. It is important to preserve the type extensions and directive locations and to omit the federation types. - -Some libraries such as `graphql-java` don't have native support for type extensions in their printer. Apollo Federation supports using an `@extends` directive in place of `extend type` to annotate type references: - -```graphql{1} -type User @key(fields: "id") @extends { - id: ID! @external - reviews: [Review] -} -``` - -## Create stub types - -Individual federated services should be runnable without having the entire graph present. Fields marked with `@external` are declarations of fields that are defined in another service. All fields referred to in `@key`, `@requires`, and `@provides` directives need to have corresponding `@external` fields in the same service. This allows us to be explicit about dependencies on another service, and service composition will verify that an `@external` field matches up with the original field definition, which can catch mistakes or migration issues (when the original field changes its type for example). `@external` fields also give an individual service the type information it needs to validate and decode incoming representations (this is especially important for custom scalars), without requiring the composed graph schema to be available at runtime in each service. - -A federated service should take the `@external` fields and types and create them locally so the service can run on its own. - -## Resolve requests for entities - -Execution of a federated graph requires being able to "enter" into a service at an entity type. To do this, federated services need to do two things: - -* Make each entity in the schema part of the `_Entity` union -* Implement the `_entities` field on the query root - -To implement the `_Entity` union, each type annotated with `@key` should be added to the `_Entity` union. If no types are annotated with the key directive, then the `_Entity` union and `Query._entities` field should be removed from the schema. For example, given the following partial schema: - -```graphql -type Review @key(fields: "id") { - id: ID! - body: String - author: User - product: Product -} - -extend type User @key(fields: "email") { - email: String! @external -} - -extend type Product @key(fields: "sku") { - sku: String! @external -} -``` - -The `_Entity` union for that partial schema should be the following: - -```graphql -union _Entity = Review | User | Product -``` - -The `_Entity` union is critical to support the `_entities` root field: - -```graphql -_entities(representations: [_Any!]!): [_Entity]! -``` - -Queries across service boundaries will start off from the `_entities` root field. The resolver for this field receives a list of representations. A representation is a blob of data that is supposed to match the combined requirements of the fields requested on an entity. - -For example, if we execute a query for the top product's `reviews`: - -```graphql -query GetTopProductReviews { - topProducts { - reviews { - body - } - } -} -``` - -The gateway will first fetch the `topProducts` from the Products service, asking for the `upc` of each product: - -```graphql -query { - topProducts { - upc - } -} -``` - -The reason it requests `upc` is because that field is specified as a requirement on `reviews`: - -```graphql -extend type Product @key(fields: "upc") { - upc: String @external - reviews: [Review] -} -``` - -The gateway will then send a list of representations for the fetched products to the Reviews service: - -```json -{ - "query": ..., - "variables": { - "_representations": [ - { - "__typename": "Product", - "upc": "B00005N5PF" - }, - ... - ] - } -} -``` - -```graphql -query ($_representations: [_Any!]!) { - _entities(representations: $_representations) { - ... on Product { - reviews { - body - } - } - } -} -``` - -GraphQL execution will then go over each representation in the list, use the `__typename` to match type conditions, build up a merged selection set, and execute it. Here, the inline fragment on `Product` will match and the `reviews` resolver will be called repeatedly with the representation for each product. Since `Product` is part of the `_Entity` union, it can be selected as a return of the `_entities` resolver. - -To ensure the required fields are provided, and of the right type, the source object properties should coerce the input into the expected type for the property (by calling parseValue on the scalar type). - -The real resolver will then be able to access the required properties from the (partial) object: - -```graphql -{ - Product: { - reviews(object) { - return fetchReviewsForProductWithUPC(object.upc); - } - } -} -``` - -## Schema modifications glossary - -### `type _Service` - -A new object type called `_Service` must be created. This type must have an `sdl: String!` field which exposes the SDL of the service's schema - -### `Query._service` - -A new field must be added to the query root called `_service`. This field must return a non-nullable `_Service` type. The `_service` field on the query root must return SDL which includes all of the service's types (after any non-federation transforms), as well as federation directive annotations on the fields and types. The federation schema modifications (i.e. new types and directive definitions) *should not be* included in this SDL. - -### `union _Entity` - -A new union called `_Entity` must be created. This should be a union of all types that use the `@key` directive, including both types native to the schema and extended types. - -### `scalar _Any` - -A new scalar called `_Any` must be created. The `_Any` scalar is used to pass representations of entities from external services into the root `_entities` field for execution. Validation of the `_Any` scalar is done by matching the `__typename` and `@external` fields defined in the schema. - -### `scalar _FieldSet` - -A new scalar called `_FieldSet` is a custom scalar type that is used to represent a set of fields. Grammatically, a field set is a [selection set](https://facebook.github.io/graphql/draft/#sec-Selection-Sets) minus the braces. This means it can represent a single field `"upc"`, multiple fields `"id countryCode"`, and even nested selection sets `"id organization { id }"`. - -### `Query._entities` - -A new field must be added to the query root called `_entities`. This field must return a non-nullable list of `_Entity` types and have a single argument with an argument name of `representations` and type `[_Any!]!` (non-nullable list of non-nullable `_Any` scalars). The `_entities` field on the query root must allow a list of `_Any` scalars which are "representations" of entities from external services. These representations should be validated with the following rules: - -* Any representation without a `__typename: String` field is invalid. -* Representations must contain at least the fields defined in the fieldset of a `@key` directive on the base type. - -### `@key` - -```graphql -directive @key(fields: _FieldSet!) on OBJECT -directive @key(fields: _FieldSet!) on INTERFACE -``` - -The `@key` directive is used to indicate a combination of fields that can be used to uniquely identify and fetch an object or interface. - -```graphql -type Product @key(fields: "upc") { - upc: UPC! - name: String -} -``` - -Multiple keys can be defined on a single object type: - -```graphql -type Product @key(fields: "upc") @key(fields: "sku") { - upc: UPC! - sku: SKU! - name: String -} -``` - -> Note: Repeated directives (in this case, `@key`, used multiple times) require support by the underlying GraphQL implementation. - -### `@provides` - -```graphql -directive @provides(fields: _FieldSet!) on FIELD_DEFINITION -``` - -The `@provides` directive is used to annotate the expected returned fieldset from a field on a base type that is guaranteed to be selectable by the gateway. Given the following example: - -```graphql -type Review @key(fields: "id") { - product: Product @provides(fields: "name") -} - -extend type Product @key(fields: "upc") { - upc: String @external - name: String @external -} -``` - -When fetching `Review.product` from the Reviews service, it is possible to request the `name` with the expectation that the Reviews service can provide it when going from review to product. `Product.name` is an external field on an external type which is why the local type extension of `Product` and annotation of `name` is required. - -### `@requires` - -```graphql -directive @requires(fields: _FieldSet!) on FIELD_DEFINITION -``` - -The `@requires` directive is used to annotate the required input fieldset from a base type for a resolver. It is used to develop a query plan where the required fields may not be needed by the client, but the service may need additional information from other services. For example: - -```graphql -# extended from the Users service -extend type User @key(fields: "id") { - id: ID! @external - email: String @external - reviews: [Review] @requires(fields: "email") -} -``` - -In this case, the Reviews service adds new capabilities to the `User` type by providing a list of `reviews` related to a user. In order to fetch these reviews, the Reviews service needs to know the `email` of the `User` from the Users service in order to look up the reviews. This means the `reviews` field / resolver *requires* the `email` field from the base `User` type. - -### `@external` - -```graphql -directive @external on FIELD_DEFINITION -``` - -The `@external` directive is used to mark a field as owned by another service. This allows service A to use fields from service B while also knowing at runtime the types of that field. For example: - -```graphql -# extended from the Users service -extend type User @key(fields: "email") { - email: String @external - reviews: [Review] -} -``` - -This type extension in the Reviews service extends the `User` type from the Users service. It extends it for the purpose of adding a new field called `reviews`, which returns a list of `Review`s. \ No newline at end of file diff --git a/docs/cdm/nodes.md b/docs/cdm/nodes.md deleted file mode 100644 index 18fa6a1..0000000 --- a/docs/cdm/nodes.md +++ /dev/null @@ -1,38 +0,0 @@ - -Signing vs. Sealing - - Signing is the process of affixing a digital signature to a message - as a header field, such as when a DKIM-Signature (as in [RFC6376], - Section 2.1), an AMS, or an AS is added. Sealing is when an ADMD - affixes a complete and valid ARC Set to a message to create or - continue an Authenticated Received Chain. - -Sealer - - A Sealer is an Internet Mail Handler that attaches a complete and - valid ARC Set to a message. - - In general concept terms, a Sealer adds its testimony (assertion of - authentication assessment) and proof of custody to the chain of - custody. - -Validator - - A Validator is an ARC-enabled Internet Mail Handler that evaluates an - Authenticated Received Chain for validity and content. The process - of evaluation of the individual ARC Sets that compose an - Authenticated Received Chain is described in Section 5.2. - - In general concept terms, a Validator inspects the chain of custody - to determine the content and validity of individual evidence supplied - by custodians. - -Imported ABNF Tokens - - The following ABNF tokens are imported: - - o tag-list ([RFC6376], Section 3.2) - - o authres-payload ([RFC8601], Section 2.2) - - o CFWS ([RFC5322], Section 3.2.2) \ No newline at end of file diff --git a/docs/cdm/protocol.md b/docs/cdm/protocol.md deleted file mode 100644 index 10fad9f..0000000 --- a/docs/cdm/protocol.md +++ /dev/null @@ -1,78 +0,0 @@ -# Transaction Envelope - -** draft protocol v2 ** - - -## Header -* Version - version := "MIME-Version" ":" 1*DIGIT "." 1*DIGIT -* Content-type: - Content-type: text/plain; charset=us-ascii (Plain text) - - Content-type: text/plain; charset="us-ascii" -* Content-Transfer-Encoding - encoding := "Content-Transfer-Encoding" ":" mechanism - - mechanism := "7bit" / "8bit" / "binary" / - "quoted-printable" / "base64" / - ietf-token / x-token - - -## Content Type - -Content-Type: header field value is defined as follows: - - content := "Content-Type" ":" type "/" subtype - *(";" parameter) - ; Matching of media type and subtype - ; is ALWAYS case-insensitive. - - type := discrete-type / composite-type - - discrete-type := "text" / "image" / "audio" / "video" / - "application" / extension-token - - composite-type := "message" / "multipart" / extension-token - - extension-token := ietf-token / x-token - - ietf-token := - - x-token := - - subtype := extension-token / iana-token - - iana-token := - - parameter := attribute "=" value - - attribute := token - ; Matching of attributes - ; is ALWAYS case-insensitive. - - value := token / quoted-string - - token := 1* - - tspecials := "(" / ")" / "<" / ">" / "@" / - "," / ";" / ":" / "\" / <"> - "/" / "[" / "]" / "?" / "=" - ; Must be in quoted-string, - ; to use within parameter values - - -There are two acceptable mechanisms for defining new media subtypes: - - (1) Private values (starting with "X-") may be defined - bilaterally between two cooperating agents without - outside registration or standardization. Such values - cannot be registered or standardized. - - (2) New standard values should be registered with IANA as - described in RFC 2048. \ No newline at end of file diff --git a/docs/cdm/schema-registry.md b/docs/cdm/schema-registry.md deleted file mode 100644 index 1ebed79..0000000 --- a/docs/cdm/schema-registry.md +++ /dev/null @@ -1,75 +0,0 @@ - - -## JSON Schema Objects and Keywords - -Object properties that are applied to the instance are called keywords, or schema keywords. Broadly speaking, keywords fall into one of four categories: - -1. identifiers: - control schema identification through setting the schema's canonical URI and/or changing how the base URI is determined -2. assertions: - produce a boolean result when applied to an instance -3. annotations: - attach information to an instance for application use -4. applicators: - apply one or more subschemas to a particular location in the instance, and combine or modify their results -5. reserved locations: - do not directly affect results, but reserve a place for a specific purpose to ensure interoperability - - -A schema vocabulary, or simply a vocabulary, is a set of keywords, their syntax, and their semantics. A **vocabulary is generally organized around a particular purpose**. Different uses of JSON Schema, such as **validation**, **hypermedia**, or user interface generation, will involve different sets of vocabularies. - - Since **vocabularies are identified by URIs in the meta-schema**, generic implementations can load extensions to support previously unknown vocabularies. While keywords can be supported outside of any vocabulary, there is no analogous mechanism to indicate individual keyword usage. - -# Root Schema and Subschemas and Resources - -A JSON Schema resource is a schema which is canonically identified by an absolute URI. - -> ome keywords take schemas themselves, allowing JSON Schemas to be nested: -```json -{ - "title": "root", - "items": { - "title": "array item" - } -} -``` - -In this example document, the schema titled "array item" is a subschema, and the schema titled "root" is the root schema. - -As with the root schema, a subschema is either an object or a boolean. - -As discussed in section 8.2.2, a JSON Schema document can contain multiple JSON Schema resources. When used without qualification, the term "root schema" refers to the document's root schema. In some cases, resource root schemas are discussed. A resource's root schema is its top-level schema object, which would also be a document root schema if the resource were to be extracted to a standalone JSON Schema document. - -### - - -## Regular Expressions -Keywords MAY use regular expressions to express constraints, or constrain the instance value to be a regular expression. These regular expressions SHOULD be valid according to the regular expression dialect described in ECMA 262, section 15.10.1. - -Furthermore, given the high disparity in regular expression constructs support, schema authors SHOULD limit themselves to the following regular expression tokens: - -individual Unicode characters, as defined by the JSON specification; - - - simple character classes ([abc]), range character classes ([a-z]); - - complemented character classes ([^abc], [^a-z]); - - simple quantifiers: "+" (one or more), "*" (zero or more), "?" (zero or one), and their lazy versions ("+?", "*?", "??"); - - range quantifiers: "{x}" (exactly x occurrences), "{x,y}" (at least x, at most y, occurrences), {x,} (x occurrences or more), and their lazy versions; - - the beginning-of-input ("^") and end-of-input ("$") anchors; - - simple grouping ("(...)") and alternation ("|"). - -## Keyword Behaviors - -Assertions validate that an instance satisfies constraints, producing a boolean result. - -Annotations attach information that applications may use in any way they see fit. - -Applicators apply subschemas to parts of the instance and combine their results. - -** Extension Keywords ** MAY define other behaviors for specialized purposes. - -$id" core keyword and the "base" JSON Hyper-Schema keyword are examples of this sort of behavior. - -## Default Behaviors - -. Keywords known to an implementation to have assertion or applicator behavior that depend on annotation results MUST then be treated as errors, unless an alternate implementation producing the same behavior is available. Keywords of this sort SHOULD describe reasonable alternate approaches when appropriate. This approach is demonstrated by the "additionalItems" and "additionalProperties - diff --git a/docs/cdm/service-offerings.md b/docs/cdm/service-offerings.md deleted file mode 100644 index 2f5d111..0000000 --- a/docs/cdm/service-offerings.md +++ /dev/null @@ -1,24 +0,0 @@ - - -Converting To and From XML -Freight Trust uses XML as an intermediary format for data transformation and manipulation. The first step in most mapping projects is to convert the source file format (in this case X12) into XML, and the last step in most mapping projects is to convert XML into the destination format (in this case CSV). - -Since translating to and from XML is such an important step in data transformation, Freight Trust includes many dedicated connectors for translating files to and from XML. This guide will use an X12 Connector and a CSV Connector. These connectors automatically convert their respective file formats into XML and vice versa. Using these connectors, both the source format (an X12 850 Purchase Order) and the destination format (a CSV file with the desired columns) can be modeled as XML. - -Transforming XML -Once the source format and the destination format have both been modeled as XML, the task is to convert one XML structure into another. This is accomplished by the powerful XML Map Connector. - -The XML Map Connector requires a sample Source File and Destination File, which represent the starting XML structure and ending XML structure respectively. After these have been specified, the XML Map Connector’s visual designer is populated with the two XML structures. - -Inside the XML Map Connector’s visual designer, the elements from the source structure can be dragged and dropped onto the elements in the destination structure to create a mapping relationship between them. This mapping step requires an understanding of the data within the source file so that the appropriate elements are included in the output file. - -The XML Map Connector includes value formatters, conditional logic, and even custom scripting to manipulate and compute data during the mapping process. - -Once the mapping relationship has been created, the XML Map Connector can automatically convert any files that match the Source XML structure into a file with the Destination XML structure. In this example, this means that the XML model of an X12 850 document will automatically be converted into an XML model of a CSV file. The final step is to take this XML model of a CSV file and convert it to an actual CSV file, which is easily accomplished with the CSV Connector. - -Flattening a Purchase Order -A specific conceptual challenge when mapping an 850 Purchase Order to CSV is the need to ‘flatten’ the Purchase Order. A single 850 document may contain multiple orders, and each order contains varying numbers of line items. CSV files, in contrast, have a static number of columns with which to store this data. - -Since the number of CSV columns cannot expand to accommodate the varying number of orders in an 850, an 850 cannot be mapped to a single record (row) in a CSV file. Similarly, since the number of CSV columns cannot expand to accommodate the varying number of line items in an order, an order cannot be mapped to a single record (row) in a CSV file. Each record in the CSV must store the data for a single line item within an order, since a single line item can be represented as a static set of values regardless of the number of line items and orders in an 850. ‘Flattening’ an 850 refers to taking its multi-layered and variable structure and reducing it to a set of static line items. - -The XML Map Connector uses the concept of a Foreach looping relationship to flatten structures during a mapping. In this case, a new CSV record should be created “for each” line item in the 850. Establishing this relationship within an XML Map Connector is simply a matter of using the visual designer to drag one element (the ‘PO1’ element that represents a line item) onto another element (the element that represents a CSV record/row). Flattening structures with the XML Map Connector is thus very easy, but does require an understanding of the source and destination XML structures so that the appropriate Foreach relationship is established. \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index 2921aee..e79930c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -23,6 +23,9 @@ * [End-market fundamentals](#end-market-fundamentals) + [Governance](#governance) +!!! note + [For a system design model, vist our design page here](https://freight-trust-model.netlify.app/) + ### Resources Quick System Scope diff --git a/docs/platform/container-routes.md b/docs/platform/container-routes.md new file mode 100644 index 0000000..c8b8e18 --- /dev/null +++ b/docs/platform/container-routes.md @@ -0,0 +1,69 @@ +# Container Routes + +> notice: container rate pricing data is owned by Drewry Shipping Consultants Limited + +| **$ref** | **Route** | +|----------|-----------------------------------------------------------------------| +| 1 | Central China \(Shanghai\) > Australia \(Brisbane\) | +| 2 | Central China \(Shanghai\) > Canada East \(>ron> via New York\) | +| 3 | Central China \(Shanghai\) > Canada East Coast \(Halifax\) | +| 4 | Central China \(Shanghai\) > Canada East Coast \(Montreal\) | +| 5 | Central China \(Shanghai\) > Canada West Coast \(Vancouver\) | +| 6 | Central China \(Shanghai\) > Egypt \(Port Said\) | +| 7 | Central China \(Shanghai\) > Hong Kong | +| 8 | Central China \(Shanghai\) > Israel \(Ashdod\) | +| 9 | Central China \(Shanghai\) > Kenya \(Mombasa\) | +| 10 | Central China \(Shanghai\) > Malaysia \(Tanjung Pelepas\) | +| 11 | Central China \(Shanghai\) > Mexico \(Manzanillo\) | +| 12 | Central China \(Shanghai\) > Mexico \(Veracruz\) | +| 13 | Central China \(Shanghai\) > New Zealand \(Auckland\) | +| 14 | Central China \(Shanghai\) > Peru \(Callao\) | +| 15 | Central China \(Shanghai\) > Philippines \(Manila\) | +| 16 | Central China \(Shanghai\) > Russia \(St Petersburg\) | +| 17 | Central China \(Shanghai\) > Saudi Arabia \(Dammam\) | +| 18 | Central China \(Shanghai\) > Singapore | +| 19 | Central China \(Shanghai\) > Taiwan \(Kaohsiung\) | +| 20 | Central China \(Shanghai\) > Turkey \(Istanbul\) | +| 21 | Central China \(Shanghai\) > US Mid West Coast \(Chicago via LA\-LB\) | +| 22 | Central China \(Shanghai\) > US South East \(Memphis via Savannah\) | +| 23 | Central China \(Shanghai\) > Vietnam \(Ho Chi Minh\) | +| 24 | Central China \(Shanghai\) > West Africa \(Lagos\) | +| 25 | North China \(Tianjin\) > Australia \(Brisbane\) | +| 26 | North China \(Tianjin\) > Canada East Coast \(Montreal\) | +| 27 | North China \(Tianjin\) > Canada West Coast \(Vancouver\) | +| 28 | North China \(Tianjin\) > Egypt \(Port Said\) | +| 29 | North China \(Tianjin\) > Hong Kong | +| 30 | North China \(Tianjin\) > Japan \(Yokohama\) | +| 31 | North China \(Tianjin\) > Korea \(Busan\) | +| 32 | North China \(Tianjin\) > Malaysia \(Tanjung Pelepas\) | +| 33 | North China \(Tianjin\) > New Zealand \(Auckland\) | +| 34 | North China \(Tianjin\) > Philippines \(Manila\) | +| 35 | North China \(Tianjin\) > Russia \(St Petersburg\) | +| 36 | North China \(Tianjin\) > Saudi Arabia \(Dammam\) | +| 37 | North China \(Tianjin\) > Singapore | +| 38 | North China \(Tianjin\) > Taiwan \(Kaohsiung\) | +| 39 | North China \(Tianjin\) > Thailand \(Laem Chabang\) | +| 40 | North China \(Tianjin\) > Turkey \(Istanbul\) | +| 41 | North China \(Tianjin\) > Vietnam \(Ho Chi Minh\) | +| 42 | North China \(Tianjin\) > West Africa \(Lagos\) | +| 43 | South China \(Yantian\) > Australia \(Brisbane\) | +| 44 | South China \(Yantian\) > Canada East Coast \(Halifax\) | +| 45 | South China \(Yantian\) > Canada East Coast \(Montreal\) | +| 46 | South China \(Yantian\) > Canada West Coast \(Vancouver\) | +| 47 | South China \(Yantian\) > Egypt \(Port Said\) | +| 48 | South China \(Yantian\) > Japan \(Yokohama\) | +| 49 | South China \(Yantian\) > Korea \(Busan\) | +| 50 | South China \(Yantian\) > Malaysia \(Tanjung Pelepas\) | +| 51 | South China \(Yantian\) > New Zealand \(Auckland\) | +| 52 | South China \(Yantian\) > Philippines \(Manila\) | +| 53 | South China \(Yantian\) > Russia \(St Petersburg\) | +| 54 | South China \(Yantian\) > Saudi Arabia \(Dammam\) | +| 55 | South China \(Yantian\) > Singapore | +| 56 | South China \(Yantian\) > Taiwan \(Kaohsiung\) | +| 57 | South China \(Yantian\) > Thailand \(Laem Chabang\) | +| 58 | South China \(Yantian\) > Turkey \(Istanbul\) | +| 59 | South China \(Yantian\) > Vietnam \(Ho Chi Minh\) | +| 60 | South China \(Yantian\) > West Africa \(Lagos\) | + +## License +© Copyright 2020 | Drewry Shipping Consultants Limited. All Rights Reserved \ No newline at end of file diff --git a/docs/platform/edi.json b/docs/platform/edi.json new file mode 100644 index 0000000..376dc87 --- /dev/null +++ b/docs/platform/edi.json @@ -0,0 +1,195 @@ + [ { + "DataElementDelimiter" : "DataElementDelimiter", + "SegmentDelimiter" : "SegmentDelimiter", + "TA1" : { + "InterchangeDate_2" : "InterchangeDate_2", + "InterchangeAcknowledgmentCode_4" : "InterchangeAcknowledgmentCode_4", + "InterchangeTime_3" : "InterchangeTime_3", + "InterchangeControlNumber_1" : "InterchangeControlNumber_1", + "InterchangeNoteCode_5" : "InterchangeNoteCode_5" + }, + "ISA" : { + "InterchangeReceiverID_8" : "InterchangeReceiverID_8", + "SenderIDQualifier_5" : "SenderIDQualifier_5", + "AcknowledgementRequested_14" : "AcknowledgementRequested_14", + "SecurityInformation_4" : "SecurityInformation_4", + "InterchangeDate_9" : "InterchangeDate_9", + "InterchangeControlStandardsIdentifier_11" : "InterchangeControlStandardsIdentifier_11", + "ComponentElementSeparator_16" : "ComponentElementSeparator_16", + "SecurityInformationQualifier_3" : "SecurityInformationQualifier_3", + "AuthorizationInformationQualifier_1" : "AuthorizationInformationQualifier_1", + "InterchangeControlNumber_13" : "InterchangeControlNumber_13", + "InterchangeSenderID_6" : "InterchangeSenderID_6", + "UsageIndicator_15" : "UsageIndicator_15", + "ReceiverIDQualifier_7" : "ReceiverIDQualifier_7", + "InterchangeTime_10" : "InterchangeTime_10", + "AuthorizationInformation_2" : "AuthorizationInformation_2", + "InterchangeControlVersionNumber_12" : "InterchangeControlVersionNumber_12" + }, + "Groups" : [ { + "Transactions" : [ { }, { } ], + "GETrailers" : [ { + "NumberOfIncludedSets_1" : "NumberOfIncludedSets_1", + "GroupControlNumber_2" : "GroupControlNumber_2" + }, { + "NumberOfIncludedSets_1" : "NumberOfIncludedSets_1", + "GroupControlNumber_2" : "GroupControlNumber_2" + } ], + "GS" : { + "Time_5" : "Time_5", + "ReceiverIDCode_3" : "ReceiverIDCode_3", + "CodeIdentifyingInformationType_1" : "CodeIdentifyingInformationType_1", + "VersionAndRelease_8" : "VersionAndRelease_8", + "SenderIDCode_2" : "SenderIDCode_2", + "Date_4" : "Date_4", + "TransactionTypeCode_7" : "TransactionTypeCode_7", + "GroupControlNumber_6" : "GroupControlNumber_6" + } + }, { + "Transactions" : [ { }, { } ], + "GETrailers" : [ { + "NumberOfIncludedSets_1" : "NumberOfIncludedSets_1", + "GroupControlNumber_2" : "GroupControlNumber_2" + }, { + "NumberOfIncludedSets_1" : "NumberOfIncludedSets_1", + "GroupControlNumber_2" : "GroupControlNumber_2" + } ], + "GS" : { + "Time_5" : "Time_5", + "ReceiverIDCode_3" : "ReceiverIDCode_3", + "CodeIdentifyingInformationType_1" : "CodeIdentifyingInformationType_1", + "VersionAndRelease_8" : "VersionAndRelease_8", + "SenderIDCode_2" : "SenderIDCode_2", + "Date_4" : "Date_4", + "TransactionTypeCode_7" : "TransactionTypeCode_7", + "GroupControlNumber_6" : "GroupControlNumber_6" + } + } ], + "IEATrailers" : [ { + "InterchangeControlNumber_2" : "InterchangeControlNumber_2", + "NumberOfIncludedGroups_1" : "NumberOfIncludedGroups_1" + }, { + "InterchangeControlNumber_2" : "InterchangeControlNumber_2", + "NumberOfIncludedGroups_1" : "NumberOfIncludedGroups_1" + } ], + "Result" : { + "Status" : "Status", + "Details" : [ { + "Status" : "Status", + "Message" : "Message", + "SegmentId" : "SegmentId", + "TransactionIndex" : 1, + "TransactionRef" : "TransactionRef", + "Value" : "Value", + "Index" : 6, + "DataElementIndex" : 5 + }, { + "Status" : "Status", + "Message" : "Message", + "SegmentId" : "SegmentId", + "TransactionIndex" : 1, + "TransactionRef" : "TransactionRef", + "Value" : "Value", + "Index" : 6, + "DataElementIndex" : 5 + } ], + "LastIndex" : 0 + } +}, { + "DataElementDelimiter" : "DataElementDelimiter", + "SegmentDelimiter" : "SegmentDelimiter", + "TA1" : { + "InterchangeDate_2" : "InterchangeDate_2", + "InterchangeAcknowledgmentCode_4" : "InterchangeAcknowledgmentCode_4", + "InterchangeTime_3" : "InterchangeTime_3", + "InterchangeControlNumber_1" : "InterchangeControlNumber_1", + "InterchangeNoteCode_5" : "InterchangeNoteCode_5" + }, + "ISA" : { + "InterchangeReceiverID_8" : "InterchangeReceiverID_8", + "SenderIDQualifier_5" : "SenderIDQualifier_5", + "AcknowledgementRequested_14" : "AcknowledgementRequested_14", + "SecurityInformation_4" : "SecurityInformation_4", + "InterchangeDate_9" : "InterchangeDate_9", + "InterchangeControlStandardsIdentifier_11" : "InterchangeControlStandardsIdentifier_11", + "ComponentElementSeparator_16" : "ComponentElementSeparator_16", + "SecurityInformationQualifier_3" : "SecurityInformationQualifier_3", + "AuthorizationInformationQualifier_1" : "AuthorizationInformationQualifier_1", + "InterchangeControlNumber_13" : "InterchangeControlNumber_13", + "InterchangeSenderID_6" : "InterchangeSenderID_6", + "UsageIndicator_15" : "UsageIndicator_15", + "ReceiverIDQualifier_7" : "ReceiverIDQualifier_7", + "InterchangeTime_10" : "InterchangeTime_10", + "AuthorizationInformation_2" : "AuthorizationInformation_2", + "InterchangeControlVersionNumber_12" : "InterchangeControlVersionNumber_12" + }, + "Groups" : [ { + "Transactions" : [ { }, { } ], + "GETrailers" : [ { + "NumberOfIncludedSets_1" : "NumberOfIncludedSets_1", + "GroupControlNumber_2" : "GroupControlNumber_2" + }, { + "NumberOfIncludedSets_1" : "NumberOfIncludedSets_1", + "GroupControlNumber_2" : "GroupControlNumber_2" + } ], + "GS" : { + "Time_5" : "Time_5", + "ReceiverIDCode_3" : "ReceiverIDCode_3", + "CodeIdentifyingInformationType_1" : "CodeIdentifyingInformationType_1", + "VersionAndRelease_8" : "VersionAndRelease_8", + "SenderIDCode_2" : "SenderIDCode_2", + "Date_4" : "Date_4", + "TransactionTypeCode_7" : "TransactionTypeCode_7", + "GroupControlNumber_6" : "GroupControlNumber_6" + } + }, { + "Transactions" : [ { }, { } ], + "GETrailers" : [ { + "NumberOfIncludedSets_1" : "NumberOfIncludedSets_1", + "GroupControlNumber_2" : "GroupControlNumber_2" + }, { + "NumberOfIncludedSets_1" : "NumberOfIncludedSets_1", + "GroupControlNumber_2" : "GroupControlNumber_2" + } ], + "GS" : { + "Time_5" : "Time_5", + "ReceiverIDCode_3" : "ReceiverIDCode_3", + "CodeIdentifyingInformationType_1" : "CodeIdentifyingInformationType_1", + "VersionAndRelease_8" : "VersionAndRelease_8", + "SenderIDCode_2" : "SenderIDCode_2", + "Date_4" : "Date_4", + "TransactionTypeCode_7" : "TransactionTypeCode_7", + "GroupControlNumber_6" : "GroupControlNumber_6" + } + } ], + "IEATrailers" : [ { + "InterchangeControlNumber_2" : "InterchangeControlNumber_2", + "NumberOfIncludedGroups_1" : "NumberOfIncludedGroups_1" + }, { + "InterchangeControlNumber_2" : "InterchangeControlNumber_2", + "NumberOfIncludedGroups_1" : "NumberOfIncludedGroups_1" + } ], + "Result" : { + "Status" : "Status", + "Details" : [ { + "Status" : "Status", + "Message" : "Message", + "SegmentId" : "SegmentId", + "TransactionIndex" : 1, + "TransactionRef" : "TransactionRef", + "Value" : "Value", + "Index" : 6, + "DataElementIndex" : 5 + }, { + "Status" : "Status", + "Message" : "Message", + "SegmentId" : "SegmentId", + "TransactionIndex" : 1, + "TransactionRef" : "TransactionRef", + "Value" : "Value", + "Index" : 6, + "DataElementIndex" : 5 + } ], + "LastIndex" : 0 + } +} ] \ No newline at end of file diff --git a/docs/platform/interfaces.ts b/docs/platform/interfaces.ts new file mode 100644 index 0000000..648f72f --- /dev/null +++ b/docs/platform/interfaces.ts @@ -0,0 +1,83 @@ +export interface EDI { + DataElementDelimiter: string; + SegmentDelimiter: string; + TA1: Ta1; + ISA: Isa; + Groups: Group[]; + IEATrailers: IeaTrailer[]; + Result: Result; +} + +export interface Group { + Transactions: Transaction[]; + GETrailers: GeTrailer[]; + GS: Gs; +} + +export interface GeTrailer { + NumberOfIncludedSets_1: string; + GroupControlNumber_2: string; +} + +export interface G { + Time_5: string; + ReceiverIDCode_3: string; + CodeIdentifyingInformationType_1: string; + VersionAndRelease_8: string; + SenderIDCode_2: string; + Date_4: string; + TransactionTypeCode_7: string; + GroupControlNumber_6: string; +} + +export interface Transaction { +} + +export interface IeaTrailer { + InterchangeControlNumber_2: string; + NumberOfIncludedGroups_1: string; +} + +export interface Isa { + InterchangeReceiverID_8: string; + SenderIDQualifier_5: string; + AcknowledgementRequested_14: string; + SecurityInformation_4: string; + InterchangeDate_9: string; + InterchangeControlStandardsIdentifier_11: string; + ComponentElementSeparator_16: string; + SecurityInformationQualifier_3: string; + AuthorizationInformationQualifier_1: string; + InterchangeControlNumber_13: string; + InterchangeSenderID_6: string; + UsageIndicator_15: string; + ReceiverIDQualifier_7: string; + InterchangeTime_10: string; + AuthorizationInformation_2: string; + InterchangeControlVersionNumber_12: string; +} + +export interface Result { + Status: string; + Details: Detail[]; + LastIndex: number; +} + +export interface Detail { + Status: string; + Message: string; + SegmentId: string; + TransactionIndex: number; + TransactionRef: string; + Value: string; + Index: number; + DataElementIndex: number; +} + +export interface Ta1 { + InterchangeDate_2: string; + InterchangeAcknowledgmentCode_4: string; + InterchangeTime_3: string; + InterchangeControlNumber_1: string; + InterchangeNoteCode_5: string; +} diff --git a/docs/platform/main.go b/docs/platform/main.go new file mode 100644 index 0000000..d2ef7e2 --- /dev/null +++ b/docs/platform/main.go @@ -0,0 +1,103 @@ +// To parse and unparse do; +// Interchange, err := UnmarshalInterchange(bytes) +// bytes, err = Interchange.Marshal() + +package main + +import "encoding/json" + +type Interchange []InterchangeElement + +func UnmarshalInterchange(data []byte) (Interchange, error) { + var r Interchange + err := json.Unmarshal(data, &r) + return r, err +} + +func (r *Interchange) Marshal() ([]byte, error) { + return json.Marshal(r) +} + +type InterchangeElement struct { + DataElementDelimiter string `json:"DataElementDelimiter"` + SegmentDelimiter string `json:"SegmentDelimiter"` + Ta1 Ta1 `json:"TA1"` + ISA ISA `json:"ISA"` + Groups []Group `json:"Groups"` + IEATrailers []IEATrailer `json:"IEATrailers"` + Result Result `json:"Result"` +} + +type Group struct { + Transactions []Transaction `json:"Transactions"` + GETrailers []GETrailer `json:"GETrailers"` + Gs Gs `json:"GS"` +} + +type GETrailer struct { + NumberOfIncludedSets1 string `json:"NumberOfIncludedSets_1"` + GroupControlNumber2 string `json:"GroupControlNumber_2"` +} + +type Gs struct { + Time5 string `json:"Time_5"` + ReceiverIDCode3 string `json:"ReceiverIDCode_3"` + CodeIdentifyingInformationType1 string `json:"CodeIdentifyingInformationType_1"` + VersionAndRelease8 string `json:"VersionAndRelease_8"` + SenderIDCode2 string `json:"SenderIDCode_2"` + Date4 string `json:"Date_4"` + TransactionTypeCode7 string `json:"TransactionTypeCode_7"` + GroupControlNumber6 string `json:"GroupControlNumber_6"` +} + +type Transaction struct { +} + +type IEATrailer struct { + InterchangeControlNumber2 string `json:"InterchangeControlNumber_2"` + NumberOfIncludedGroups1 string `json:"NumberOfIncludedGroups_1"` +} + +type ISA struct { + InterchangeReceiverID8 string `json:"InterchangeReceiverID_8"` + SenderIDQualifier5 string `json:"SenderIDQualifier_5"` + AcknowledgementRequested14 string `json:"AcknowledgementRequested_14"` + SecurityInformation4 string `json:"SecurityInformation_4"` + InterchangeDate9 string `json:"InterchangeDate_9"` + InterchangeControlStandardsIdentifier11 string `json:"InterchangeControlStandardsIdentifier_11"` + ComponentElementSeparator16 string `json:"ComponentElementSeparator_16"` + SecurityInformationQualifier3 string `json:"SecurityInformationQualifier_3"` + AuthorizationInformationQualifier1 string `json:"AuthorizationInformationQualifier_1"` + InterchangeControlNumber13 string `json:"InterchangeControlNumber_13"` + InterchangeSenderID6 string `json:"InterchangeSenderID_6"` + UsageIndicator15 string `json:"UsageIndicator_15"` + ReceiverIDQualifier7 string `json:"ReceiverIDQualifier_7"` + InterchangeTime10 string `json:"InterchangeTime_10"` + AuthorizationInformation2 string `json:"AuthorizationInformation_2"` + InterchangeControlVersionNumber12 string `json:"InterchangeControlVersionNumber_12"` +} + +type Result struct { + Status string `json:"Status"` + Details []Detail `json:"Details"` + LastIndex int64 `json:"LastIndex"` +} + +type Detail struct { + Status string `json:"Status"` + Message string `json:"Message"` + SegmentID string `json:"SegmentId"` + TransactionIndex int64 `json:"TransactionIndex"` + TransactionRef string `json:"TransactionRef"` + Value string `json:"Value"` + Index int64 `json:"Index"` + DataElementIndex int64 `json:"DataElementIndex"` +} + +type Ta1 struct { + InterchangeDate2 string `json:"InterchangeDate_2"` + InterchangeAcknowledgmentCode4 string `json:"InterchangeAcknowledgmentCode_4"` + InterchangeTime3 string `json:"InterchangeTime_3"` + InterchangeControlNumber1 string `json:"InterchangeControlNumber_1"` + InterchangeNoteCode5 string `json:"InterchangeNoteCode_5"` +} diff --git a/docs/platform/vessel-carriers.md b/docs/platform/vessel-carriers.md new file mode 100644 index 0000000..449d1f8 --- /dev/null +++ b/docs/platform/vessel-carriers.md @@ -0,0 +1,615 @@ +# Vessel Owning Common Carriers + +**work in progress** + + + +| **$ref** | **Prefix** | **Owner** | **Owner - Abbreviation** | +|-------|------------|--------------------------------------------------------------|--------------------------| +| 3 | AAAU | Asia Container | | +| 4 | ACCU | Atlantic Coast Container \(ACCBS\) | | +| 5 | ACLU | Atlantic Container Line | ACL | +| 6 | ACXU | Grieg Star Shipping | Grieg Star | +| 7 | AEXU | Africa Express Line | AEL | +| 8 | AGLU | Agunsa Chile | | +| 9 | AKLU | Ocean Network Express | ONE | +| 10 | ALLU | Allied Container Network | | +| 11 | ALMU | Almar Container Group | | +| 12 | ALNU | Caru | | +| 13 | ALRU | Almar Container Group | | +| 14 | AMCU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 15 | AMFU | Textainer | | +| 16 | AMZU | Textainer | | +| 17 | ANNU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 18 | ANYU | One Way Lease | | +| 19 | APDU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 20 | APHU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 21 | APIU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 22 | APLU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 23 | APMU | Maersk Line | Maersk | +| 24 | APRU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 25 | APZU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 26 | ARDU | Caru | | +| 27 | ARKU | Arkas Container Transport S\.A\. | Arkas | +| 28 | ARMU | Adeptainer | | +| 29 | ARTU | Caru | | +| 30 | ATBU | A\-Tainer & Service | | +| 31 | ATIU | Eurotainer SA | | +| 32 | ATVU | Peacock | | +| 33 | AWSU | Swire Shipping | Swire | +| 34 | AXIU | Textainer | | +| 35 | AZLU | Hapag Lloyd Container Line | Hapag | +| 36 | BAFU | Bulkhaul Ltd\. | | +| 37 | BBXU | BestBox\-Containerhandel e\.K\. | | +| 38 | BCGU | Bloedorn Container | | +| 39 | BCHU | Braun Container Handels GmbH | | +| 40 | BCLU | Bermuda Container Line | BCL | +| 41 | BEAU | Beacon Intermodal | | +| 42 | BECU | Eurotainer SA | | +| 43 | BGFU | BG Freight Line | BG Freight | +| 44 | BHCU | Bridgehead Container Services Ltd | | +| 45 | BISU | Bermuda International Shipping Ltd | BISL | +| 46 | BLJU | Balaji Shipping Lines FZCO | Balaji | +| 47 | BLKU | Bulkhaul Ltd\. | | +| 48 | BLTU | Balticon | | +| 49 | BMLU | King Ocean Sercies | King Ocean | +| 50 | BMOU | Beacon Intermodal | | +| 51 | BORU | Borchard Lines Ltd | Borchard | +| 52 | BOXU | Bulkhaul Ltd\. | | +| 53 | BRFU | Bulkhaul Ltd\. | | +| 54 | BRKU | Bulkhaul Ltd\. | | +| 55 | BSIU | Blue Sky Intermodal \(UK\) Ltd | | +| 56 | BUTU | Brointermed Lines Limited | BT | +| 57 | BVIU | Stolt Tank Containers | | +| 58 | BXRU | TITAN Containers International A/S | | +| 59 | CAAU | CAI \(Container Applications International\) | | +| 60 | CADU | Maersk Line | Maersk | +| 61 | CAEU | Caru | | +| 62 | CAIU | CAI \(Container Applications International\) | | +| 63 | CARU | Caru | | +| 64 | CASU | Hapag Lloyd Container Line | Hapag | +| 65 | CATU | Caru | | +| 66 | CAXU | CAI \(Container Applications International\) | | +| 67 | CAZU | CAI \(Container Applications International\) | | +| 68 | CBCU | Container Brokerage Company | | +| 69 | CBHU | COSCO Container Lines | COSCON | +| 70 | CCGU | CATU Containers | | +| 71 | CCLU | COSCO Container Lines | COSCON | +| 72 | CCRU | Eurotainer SA | | +| 73 | CCSU | Servial CC ApS | | +| 74 | CDDU | Container Providers International | | +| 75 | CDKU | Containerland Danmark | | +| 76 | CEOU | Textainer | | +| 77 | CESU | CAI \(Container Applications International\) | | +| 78 | CGHU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 79 | CGIU | Conglobal Industries | | +| 80 | CGMU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 81 | CGTU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 82 | CHIU | Textainer | | +| 83 | CHSU | CHS Container | | +| 84 | CIPU | CAI \(Container Applications International\) | | +| 85 | CKLU | CK Line | CK Line | +| 86 | CLCU | Caru | | +| 87 | CLHU | Textainer | | +| 88 | CLOU | SeaCo | | +| 89 | CLTU | Sogeco | | +| 90 | CLXU | Container Leasing A/S | | +| 91 | CMAU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 92 | CMCU | Crowley | Crowley | +| 93 | CMNU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 94 | CMTU | IJ\-Container ApS | | +| 95 | CMUU | Hapag Lloyd Container Line | Hapag | +| 96 | CNCU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 97 | CNEU | CAI \(Container Applications International\) | | +| 98 | CNIU | Maersk Line | Maersk | +| 99 | CNSU | Spinnaker Equipment Services | | +| 100 | COCU | Samskip | Samskip | +| 101 | CORU | Caru | | +| 102 | COZU | Maersk Line | Maersk | +| 103 | CPIU | Container Providers International | | +| 104 | CPLU | ContainerPLUS | | +| 105 | CPSU | Hapag Lloyd Container Line | Hapag | +| 106 | CPWU | Container Providers International | | +| 107 | CRLU | SeaCube Container Leasing Ltd | | +| 108 | CRSU | SeaCo | | +| 109 | CRTU | SeaCo | | +| 110 | CRXU | SeaCo | | +| 111 | CSFU | Containerships | Containerships | +| 112 | CSLU | COSCO Container Lines | COSCON | +| 113 | CSNU | COSCO Container Lines | COSCON | +| 114 | CSOU | Containerships | Containerships | +| 115 | CSQU | Hapag Lloyd Container Line | Hapag | +| 116 | CSVU | Hapag Lloyd Container Line | Hapag | +| 117 | CTMU | Cetem Containers | | +| 118 | CTWU | SeaCube Container Leasing Ltd | | +| 119 | CTXU | Containex | | +| 120 | CUBU | Caru | | +| 121 | CUCU | SeaCo | | +| 122 | CULU | China United Lines | CU Lines | +| 123 | CXCU | Matson | Matson | +| 124 | CXDU | SeaCo | | +| 125 | CXIU | TITAN Containers International A/S | | +| 126 | CXRU | SeaCo | | +| 127 | CXSU | SeaCo | | +| 128 | CXTU | SeaCo | | +| 129 | CZLU | Containerships | Containerships | +| 130 | CZZU | CAI \(Container Applications International\) | | +| 131 | DACU | DanContainer A/S | | +| 132 | DAMU | Caru | | +| 133 | DAYU | Deutsche Afrika\-Linien | DAL | +| 134 | DBOU | De Boer Container Trading | | +| 135 | DCSU | Danish Container Supply A/S | | +| 136 | DDCU | Deutsche Afrika\-Linien | DAL | +| 137 | DFIU | Dole Ocean Cargo | Dole | +| 138 | DFOU | Florens Container Services | | +| 139 | DFSU | Florens Container Services | | +| 140 | DJLU | Dongjin Shipping | Dongjin | +| 141 | DLKU | Stolt Tank Containers | | +| 142 | DNAU | SeaCo | | +| 143 | DNCU | DanContainer A/S | | +| 144 | DRYU | SeaCube Container Leasing Ltd | | +| 145 | DTPU | Dole Ocean Cargo | Dole | +| 146 | DVRU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 147 | DYLU | Dong Young Shipping | Dong Young | +| 148 | EASU | Waterfront Container Leasing Co\. Inc\. | | +| 149 | ECMU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 150 | ECSU | Balticon | | +| 151 | EGHU | Evergreen Line | Evergreen | +| 152 | EGSU | Evergreen Line | Evergreen | +| 153 | EIMU | Eimskip | Eimskip | +| 154 | EISU | Evergreen Line | Evergreen | +| 155 | EITU | Evergreen Line | Evergreen | +| 156 | EKLU | Ocean Network Express | ONE | +| 157 | EMAU | SeaCo | | +| 158 | EMCU | Evergreen Line | Evergreen | +| 159 | ENAU | Maersk Line | Maersk | +| 160 | EQRU | Triton Container International Limited | | +| 161 | ERFU | Eurotainer SA | | +| 162 | ESDU | Emirates Shipping Line | Emirates | +| 163 | ESLU | Ethiopian Shipping Lines | ESL | +| 164 | ESPU | Emirates Shipping Line | Emirates | +| 165 | ESSU | Ocean Network Express | ONE | +| 166 | ETNU | Eurotainer SA | | +| 167 | EUCU | Eucon | Eucon | +| 168 | EULU | EuroAfrica Shipping Lines co\. Ltd\. | ESL | +| 169 | EURU | Eurotainer SA | | +| 170 | EUXU | Eurotainer SA | | +| 171 | EVAU | Eurotainer SA | | +| 172 | EXFU | EXSIF Worldwide, Inc\. | | +| 173 | EXXU | EXSIF Worldwide, Inc\. | | +| 174 | FAAU | Maersk Line | Maersk | +| 175 | FAMU | Flex\-Box Limited | | +| 176 | FANU | Hapag Lloyd Container Line | Hapag | +| 177 | FBIU | Florens Container Services | | +| 178 | FBLU | Florens Container Services | | +| 179 | FBXU | Flex\-Box Limited | | +| 180 | FCBU | Flex\-Box Limited | | +| 181 | FCCU | Far Eastern Shipping Company | FESCO | +| 182 | FCGU | Florens Container Services | | +| 183 | FCIU | Florens Container Services | | +| 184 | FCLU | Florens Container Services | | +| 185 | FCXU | Florens Container Services | | +| 186 | FESU | Far Eastern Shipping Company | FESCO | +| 187 | FFAU | Florens Container Services | | +| 188 | FJKU | Florens Container Services | | +| 189 | FLTU | Eimskip | Eimskip | +| 190 | FPTU | Raffles Lease | | +| 191 | FRLU | Maersk Line | Maersk | +| 192 | FSCU | Florens Container Services | | +| 193 | FTAU | Florens Container Services | | +| 194 | FVIU | SeaCo | | +| 195 | FWUU | Eurotainer SA | | +| 196 | FXLU | Flex\-Box Limited | | +| 197 | GAEU | Textainer | | +| 198 | GAFU | Maritime Carrier Shipping Center GmbH & Co\. | MACS | +| 199 | GAOU | SeaCube Container Leasing Ltd | | +| 200 | GASU | Bulkhaul Ltd\. | | +| 201 | GATU | Textainer | | +| 202 | GAZU | Textainer | | +| 203 | GCEU | SeaCo | | +| 204 | GCNU | Grimaldi | Grimaldi | +| 205 | GCUU | Global Container Rental Pte Ltd | | +| 206 | GELU | Hoyer Global Transport | | +| 207 | GESU | SeaCo | | +| 208 | GETU | Tarros S\.p\.A\. | Tarros | +| 209 | GGOU | Grieg Star Shipping | Grieg Star | +| 210 | GIPU | SeaCube Container Leasing Ltd | | +| 211 | GLDU | Touax Global Container Solutions | | +| 212 | GMOU | Gold Star Line Ltd\. | GSL | +| 213 | GNSU | Samskip | Samskip | +| 214 | GRCU | Borchard Lines Ltd | Borchard | +| 215 | GRDU | Touax Global Container Solutions | | +| 216 | GRIU | Maersk Line | Maersk | +| 217 | GSLU | Gold Star Line Ltd\. | GSL | +| 218 | GSPU | SeaCube Container Leasing Ltd | | +| 219 | GSSU | Grieg Star Shipping | Grieg Star | +| 220 | GSTU | SeaCo | | +| 221 | GTIU | Mediterranean Shipping Company | MSC | +| 222 | GUTU | UES International \(HK\) Ltd\. | | +| 223 | GVCU | UES International \(HK\) Ltd\. | | +| 224 | GVDU | UES International \(HK\) Ltd\. | | +| 225 | GVTU | Grand View Container Trading | | +| 226 | HAKU | Caru | | +| 227 | HALU | Heung\-A Shipping Co\., Ltd\. | Heung\-A | +| 228 | HAMU | Hapag Lloyd Container Line | Hapag | +| 229 | HASU | Maersk Line | Maersk | +| 230 | HBSU | HANBAO Container Shipping & Trading | | +| 231 | HBTU | HANBAO Container Shipping & Trading | | +| 232 | HCIU | Textainer | | +| 233 | HCSU | HACON Containers B\.V\. | | +| 234 | HDMU | Hyundai Merchant Marine Co\., Ltd\. | HMM | +| 235 | HGBU | Hoyer Global Transport | | +| 236 | HGFU | Hoyer Global Transport | | +| 237 | HGHU | Hoyer Global Transport | | +| 238 | HGTU | Hoyer Global Transport | | +| 239 | HIBU | Hoyer Global Transport | | +| 240 | HJMU | SeaCo | | +| 241 | HLBU | Hapag Lloyd Container Line | Hapag | +| 242 | HLCU | Hapag Lloyd Container Line | Hapag | +| 243 | HLSU | HLS Container Bremen | | +| 244 | HLXU | Hapag Lloyd Container Line | Hapag | +| 245 | HMCU | Evergreen Line | Evergreen | +| 246 | HMKU | West European Container Lines | WEC | +| 247 | HMMU | Hyundai Merchant Marine Co\., Ltd\. | HMM | +| 248 | HMPU | Hoyer Global Transport | | +| 249 | HNPU | SeaCo | | +| 250 | HNSU | Triton Container International Limited | | +| 251 | HOTU | Hoyer Global Transport | | +| 252 | HOYU | Hoyer Global Transport | | +| 253 | HRZU | Matson | Matson | +| 254 | HSIU | Hoyer Global Transport | | +| 255 | HSTU | Maritime Carrier Shipping Center GmbH & Co\. | MACS | +| 256 | HTCU | Haldor Topsoe A/S | | +| 257 | IAAU | Interasia Lines | Interasia | +| 258 | IBLU | InterBulk Group | | +| 259 | ICDU | ICON International Container Service | | +| 260 | ICHU | Eurotainer SA | | +| 261 | ICLU | EXSIF Worldwide, Inc\. | | +| 262 | ICOU | ICON International Container Service | | +| 263 | ICSU | Triton Container International Limited | | +| 264 | ICUU | Independent Container Line | ICL | +| 265 | IEAU | SeaCo | | +| 266 | IHOU | Intermodal Tank Transport | | +| 267 | IJCU | IJ\-Container ApS | | +| 268 | IKKU | SeaCo | | +| 269 | IKSU | Triton Container International Limited | | +| 270 | IMTU | Evergreen Line | Evergreen | +| 271 | INBU | SeaCube Container Leasing Ltd | | +| 272 | INGU | Trifleet Leasing | | +| 273 | INKU | SeaCube Container Leasing Ltd | | +| 274 | INNU | SeaCube Container Leasing Ltd | | +| 275 | INTU | SeaCube Container Leasing Ltd | | +| 276 | IPXU | SeaCube Container Leasing Ltd | | +| 277 | IRNU | SeaCube Container Leasing Ltd | | +| 278 | ITAU | Hapag Lloyd Container Line | Hapag | +| 279 | ITLU | SeaCo | | +| 280 | ITTU | Intermodal Tank Transport | | +| 281 | IVLU | Hapag Lloyd Container Line | Hapag | +| 282 | IXWU | Eurotainer SA | | +| 283 | JAYU | Jay Group of Container Companies | | +| 284 | JSSU | The China Navigation Co\.,Ltd | CNCo | +| 285 | JTMU | Florens Container Services | | +| 286 | JXJU | Gold Star Line Ltd\. | GSL | +| 287 | JXLU | Gold Star Line Ltd\. | GSL | +| 288 | KHJU | Maersk Line | Maersk | +| 289 | KHLU | Maersk Line | Maersk | +| 290 | KKFU | Ocean Network Express | ONE | +| 291 | KKLU | Ocean Network Express | ONE | +| 292 | KKTU | Ocean Network Express | ONE | +| 293 | KLCU | Containerships | Containerships | +| 294 | KLFU | Ocean Network Express | ONE | +| 295 | KLTU | Ocean Network Express | ONE | +| 296 | KMTU | Korea Marine Transport Co\., Ltd\. | KMTC | +| 297 | KNLU | Maersk Line | Maersk | +| 298 | KOSU | King Ocean Sercies | King Ocean | +| 299 | KTNU | K\-tainer Trading & Transport GmbH | | +| 300 | KWCU | Textainer | | +| 301 | KXTU | Ocean Network Express | ONE | +| 302 | LBIU | Hapag Lloyd Container Line | Hapag | +| 303 | LCRU | Caru | | +| 304 | LGEU | Caru | | +| 305 | LLTU | Textainer | | +| 306 | LMCU | Linea Messina | Linea Messina | +| 307 | LNXU | Hapag Lloyd Container Line | Hapag | +| 308 | LOGU | Eurotainer SA | | +| 309 | LOTU | Maersk Line | Maersk | +| 310 | LSEU | One Way Lease | | +| 311 | LTIU | Evergreen Line | Evergreen | +| 312 | LVNU | Flex\-Box Limited | | +| 313 | LYKU | Hapag Lloyd Container Line | Hapag | +| 314 | MAEU | Maersk Line | Maersk | +| 315 | MAGU | Textainer | | +| 316 | MALU | Maersk Line | Maersk | +| 317 | MANU | Caru | | +| 318 | MARU | Caru | | +| 319 | MATU | Matson | Matson | +| 320 | MAXU | Textainer | | +| 321 | MBBU | Multiboxx | | +| 322 | MBDU | Multiboxx | | +| 323 | MBGU | Multiboxx | | +| 324 | MBIU | Bridgehead Container Services Ltd | | +| 325 | MBTU | Multiboxx | | +| 326 | MCAU | Maersk Line | Maersk | +| 327 | MCHU | Maersk Line | Maersk | +| 328 | MCLU | Borchard Lines Ltd | Borchard | +| 329 | MCPU | MCC Transport Pte\. Ltd\. | MCC | +| 330 | MCRU | Maersk Line | Maersk | +| 331 | MCTU | Mariana Express Lines Ltd | MELL | +| 332 | MEDU | Mediterranean Shipping Company | MSC | +| 333 | MERU | Mariana Express Lines Ltd | MELL | +| 334 | MEXU | Mariana Express Lines Ltd | MELL | +| 335 | MFRU | Marfret Compagnie Maritime | Marfret | +| 336 | MFTU | Marfret Compagnie Maritime | Marfret | +| 337 | MGLU | Textainer | | +| 338 | MGNU | SeaCube Container Leasing Ltd | | +| 339 | MHHU | Maersk Line | Maersk | +| 340 | MIEU | Maersk Line | Maersk | +| 341 | MLCU | Textainer | | +| 342 | MMAU | Maersk Line | Maersk | +| 343 | MMCU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 344 | MNBU | Maersk Line | Maersk | +| 345 | MOAU | Ocean Network Express | ONE | +| 346 | MOCU | Maritime Carrier Shipping Center GmbH & Co\. | MACS | +| 347 | MOEU | Ocean Network Express | ONE | +| 348 | MOFU | Ocean Network Express | ONE | +| 349 | MOGU | Ocean Network Express | ONE | +| 350 | MOLU | Ocean Network Express | ONE | +| 351 | MOMU | Hapag Lloyd Container Line | Hapag | +| 352 | MORU | Ocean Network Express | ONE | +| 353 | MOSU | Ocean Network Express | ONE | +| 354 | MOTU | Ocean Network Express | ONE | +| 355 | MRKU | Maersk Line | Maersk | +| 356 | MRSU | Maersk Line | Maersk | +| 357 | MSAU | Maersk Line | Maersk | +| 358 | MSCU | Mediterranean Shipping Company | MSC | +| 359 | MSDU | Mediterranean Shipping Company | MSC | +| 360 | MSFU | Maersk Line | Maersk | +| 361 | MSHU | Malaysia International Shipping Corporation Berhad | MISC | +| 362 | MSKU | Maersk Line | Maersk | +| 363 | MSMU | Mediterranean Shipping Company | MSC | +| 364 | MSNU | Mediterranean Shipping Company | MSC | +| 365 | MSOU | M/S Container A/S | | +| 366 | MSPU | Mediterranean Shipping Company | MSC | +| 367 | MSTU | Mediterranean Shipping Company | MSC | +| 368 | MSUU | M/S Container A/S | | +| 369 | MSWU | Maersk Line | Maersk | +| 370 | MSYU | Mediterranean Shipping Company | MSC | +| 371 | MSZU | Mediterranean Shipping Company | MSC | +| 372 | MTBU | Multiboxx | | +| 373 | MTRU | Triton Container International Limited | | +| 374 | MTSU | SeaCube Container Leasing Ltd | | +| 375 | MTYU | SeaCube Container Leasing Ltd | | +| 376 | MVIU | Maersk Line | Maersk | +| 377 | MWCU | Maersk Line | Maersk | +| 378 | MWMU | Maersk Line | Maersk | +| 379 | NDSU | Nile Dutch Africa Line | NDS | +| 380 | NEPU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 381 | NEVU | CAI \(Container Applications International\) | | +| 382 | NIDU | Nile Dutch Africa Line | NDS | +| 383 | NIRU | Nirint Shipping | Nirint Shipping | +| 384 | NLLU | Noble Container Leasing Limited | | +| 385 | NOLU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 386 | NOSU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 387 | NPRU | TOTE Maritime \(Sea Star Line\) | TOTE Maritime | +| 388 | NSAU | Bahri / National Shipping Company of Saudi Arabia | Bahri | +| 389 | NSCU | NSC Arkhangelsk | NSC | +| 390 | NSRU | Namsung Shipping Co\., Ltd\. | Namsung | +| 391 | NSSU | Namsung Shipping Co\., Ltd\. | Namsung | +| 392 | NUSU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 393 | NYKU | Ocean Network Express | ONE | +| 394 | NZDU | Novozymes | | +| 395 | NZKU | Novozymes | | +| 396 | OALU | Ocean Africa Container Lines | Ocean Africa | +| 397 | OCLU | Maersk Line | Maersk | +| 398 | OCVU | Overbeek | | +| 399 | OFFU | Caru | | +| 400 | ONEU | Ocean Network Express | ONE | +| 401 | OOCU | Orient Overseas Container Line Ltd\. | OOCL | +| 402 | OOLU | Orient Overseas Container Line Ltd\. | OOCL | +| 403 | OPDU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 404 | OTAU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 405 | OTEU | CAI \(Container Applications International\) | | +| 406 | OTPU | SeaCube Container Leasing Ltd | | +| 407 | OWLU | One Way Lease | | +| 408 | OWNU | Tarros S\.p\.A\. | Tarros | +| 409 | PBIU | Pro Box | | +| 410 | PCIU | Pacific International Lines | PIL | +| 411 | PCLU | Pan Continental Shipping Co\., Ltd\. | PanCon | +| 412 | PCVU | Peacock | | +| 413 | PDLU | Pacific Direct Line | PDL | +| 414 | PGTU | Touax Global Container Solutions | | +| 415 | PGXU | Florens Container Services | | +| 416 | PHLU | Spinnaker Equipment Services | | +| 417 | PILU | Pacific International Lines | PIL | +| 418 | POCU | Maersk Line | Maersk | +| 419 | PONU | Maersk Line | Maersk | +| 420 | PRGU | Progeco | | +| 421 | PRKU | Protank Logistics Co\., Ltd\. | | +| 422 | PRSU | Textainer | | +| 423 | PSCU | Caru | | +| 424 | PSOU | Pentalver Transport | | +| 425 | PSSU | Pentalver Transport | | +| 426 | PVDU | Unit45 | | +| 427 | PXCU | Ocean Network Express | ONE | +| 428 | QBXU | CHS Container | | +| 429 | QIBU | Hapag Lloyd Container Line | Hapag | +| 430 | QNNU | Hapag Lloyd Container Line | Hapag | +| 431 | RALU | Royal Arctic Line | RAL | +| 432 | RAVU | Flex\-Box Limited | | +| 433 | RCDU | Unit45 | | +| 434 | RCLU | R\.M\.I\. Global Logistics Services | | +| 435 | REGU | Regional Container Lines | RCL | +| 436 | RFCU | Raffles Lease | | +| 437 | RFLU | R\.M\.I\. Global Logistics Services | | +| 438 | RFSU | Textainer | | +| 439 | RILU | Zeamarine | Zeamarine | +| 440 | RJCU | Flex\-Box Limited | | +| 441 | RLTU | Raffles Lease | | +| 442 | RMCU | Multistar | | +| 443 | RMTU | R\.M\.I\. Global Logistics Services | | +| 444 | RRIU | Triton Container International Limited | | +| 445 | RSLU | Reef Shipping | Reef | +| 446 | RSSU | Royal Wolf | | +| 447 | RSTU | Unit45 | | +| 448 | RTHU | Caru | | +| 449 | RWLU | Royal Wolf | | +| 450 | RWTU | Royal Wolf | | +| 451 | SACU | Wallenius Wilhelmsen Logistics | WWL | +| 452 | SANU | Samskip | Samskip | +| 453 | SAXU | Noble Container Leasing Limited | | +| 454 | SBGU | TOTE Maritime \(Sea Star Line\) | TOTE Maritime | +| 455 | SBIU | Sea Box | | +| 456 | SBOU | SeaCo | | +| 457 | SCEU | SeaCo | | +| 458 | SCMU | Maersk Line | Maersk | +| 459 | SCNU | Sea Cargo | Sea Cargo | +| 460 | SCPU | SeaCo | | +| 461 | SCSU | Caru | | +| 462 | SCXU | SeaCo | | +| 463 | SCZU | SeaCo | | +| 464 | SDDU | SeaCube Container Leasing Ltd | | +| 465 | SDOU | Spinnaker Equipment Services | | +| 466 | SEAU | SeaLand | SeaLand | +| 467 | SECU | Eurotainer SA | | +| 468 | SEFU | Crowley | Crowley | +| 469 | SEGU | SeaCo | | +| 470 | SEKU | SeaCo | | +| 471 | SELU | SeaCo | | +| 472 | SEMU | SeaCo | | +| 473 | SESU | Spinnaker Equipment Services | | +| 474 | SEXU | Container Norway AS | | +| 475 | SGCU | Sogeco | | +| 476 | SGRU | Sogeco | | +| 477 | SIIU | The Shipping Coporation of India Ltd\. | SCI | +| 478 | SIKU | Samudera Shipping Line Ltd | Samudera | +| 479 | SITU | SITC Container Lines Co\., LTD | SITC | +| 480 | SJKU | Sarjak Container Lines | Sarjak | +| 481 | SKHU | Sinokor Merchant Marine Co\.,Ltd | Sinokor | +| 482 | SKIU | Blue Sky Intermodal \(UK\) Ltd | | +| 483 | SKLU | Sinokor Merchant Marine Co\.,Ltd | Sinokor | +| 484 | SKRU | Sinokor Merchant Marine Co\.,Ltd | Sinokor | +| 485 | SKYU | CAI \(Container Applications International\) | | +| 486 | SLEU | Spinnaker Equipment Services | | +| 487 | SLSU | Spinnaker Equipment Services | | +| 488 | SLZU | Caru | | +| 489 | SMCU | SM Line | SM Line | +| 490 | SMLU | Seaboard Marine | Seaboard Marine | +| 491 | SMUU | Containerships | Containerships | +| 492 | SNBU | Sinotrans Container Lines Co\.,Ltd | Sinolines | +| 493 | SNGU | Sinotrans Container Lines Co\.,Ltd | Sinolines | +| 494 | SNHU | Sinotrans Container Lines Co\.,Ltd | Sinolines | +| 495 | SNIU | Stolt Tank Containers | | +| 496 | SNSU | Sloman Neptun Schiffahrts AG | Sloman | +| 497 | SNTU | Stolt Tank Containers | | +| 498 | SOCU | Star Service | | +| 499 | SOFU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 500 | SPKU | Spinnaker Equipment Services | | +| 501 | SPLU | SeaCo | | +| 502 | SPWU | SpaceWise | | +| 503 | STBU | Stolt Tank Containers | | +| 504 | STMU | Compagnie Maritime d Affretement Compagnie Generale Maritime | CMA CGM | +| 505 | STRU | TOTE Maritime \(Sea Star Line\) | TOTE Maritime | +| 506 | STXU | STX Pan Ocean | STX | +| 507 | SUDU | Maersk Line | Maersk | +| 508 | SVDU | Samskip | Samskip | +| 509 | SVWU | CHS Container | | +| 510 | SWLU | Samskip | Samskip | +| 511 | SWTU | Stolt Tank Containers | | +| 512 | SZLU | SeaCube Container Leasing Ltd | | +| 513 | TABU | Stolt Tank Containers | | +| 514 | TAIU | Stolt Tank Containers | | +| 515 | TARU | Tarros S\.p\.A\. | Tarros | +| 516 | TASU | Tankspan | | +| 517 | TCIU | TITAN Containers International A/S | | +| 518 | TCKU | Triton Container International Limited | | +| 519 | TCLU | Triton Container International Limited | | +| 520 | TCNU | Triton Container International Limited | | +| 521 | TCUU | Trifleet Leasing | | +| 522 | TDRU | Triton Container International Limited | | +| 523 | TDTU | Triton Container International Limited | | +| 524 | TEDU | Agunsa Chile | | +| 525 | TEMU | Textainer | | +| 526 | TENU | Textainer | | +| 527 | TEXU | Textainer | | +| 528 | TGBU | Textainer | | +| 529 | TGCU | Touax Global Container Solutions | | +| 530 | TGHU | Textainer | | +| 531 | TGSU | Touax Global Container Solutions | | +| 532 | TIFU | Trifleet Leasing | | +| 533 | TIIU | Triton Container International Limited | | +| 534 | TISU | TIS \(Transport Industrial Service\) | | +| 535 | TITU | TITAN Containers International A/S | | +| 536 | TLCU | Unifeeder | Unifeeder | +| 537 | TLEU | Hapag Lloyd Container Line | Hapag | +| 538 | TLLU | Triton Container International Limited | | +| 539 | TLNU | Trident Container Leasing | | +| 540 | TLXU | Trans Asia Line | TA | +| 541 | TMIU | Trifleet Leasing | | +| 542 | TMLU | Eurotainer SA | | +| 543 | TMMU | Hapag Lloyd Container Line | Hapag | +| 544 | TMYU | Transportes Maritimos Insulares, S\.A\. | Transinsular | +| 545 | TOLU | Triton Container International Limited | | +| 546 | TOPU | TOPtainer | | +| 547 | TORU | Maersk Line | Maersk | +| 548 | TPCU | Wan Hai Lines | WHL | +| 549 | TPHU | Triton Container International Limited | | +| 550 | TPMU | EXSIF Worldwide, Inc\. | | +| 551 | TPTU | EXSIF Worldwide, Inc\. | | +| 552 | TPXU | Triton Container International Limited | | +| 553 | TQMU | Intermodal Tank Transport | | +| 554 | TRDU | Triton Container International Limited | | +| 555 | TRHU | Triton Container International Limited | | +| 556 | TRIU | Triton Container International Limited | | +| 557 | TRKU | Turkon Line Inc | Turkon | +| 558 | TRLU | Triton Container International Limited | | +| 559 | TRTU | Caru | | +| 560 | TRVU | Triton Container International Limited | | +| 561 | TSGU | Dole Ocean Cargo | Dole | +| 562 | TSSU | T\. S\. Lines | TSL | +| 563 | TSTU | T\. S\. Lines | TSL | +| 564 | TTNU | Triton Container International Limited | | +| 565 | TTTU | Eurotainer SA | | +| 566 | TXGU | Textainer | | +| 567 | UACU | Hapag Lloyd Container Line | Hapag | +| 568 | UAEU | Hapag Lloyd Container Line | Hapag | +| 569 | UASU | Hapag Lloyd Container Line | Hapag | +| 570 | UCLU | Ocean Africa Container Lines | Ocean Africa | +| 571 | UESU | UES International \(HK\) Ltd\. | | +| 572 | UETU | UES International \(HK\) Ltd\. | | +| 573 | UFCU | SeaCo | | +| 574 | UGMU | Evergreen Line | Evergreen | +| 575 | UNDU | UniTainer | | +| 576 | UNIU | Unitas Container Leasing | | +| 577 | UNOU | Uniteam Norway | | +| 578 | UNXU | Unitas Container Leasing | | +| 579 | USPU | EXSIF Worldwide, Inc\. | | +| 580 | UTCU | Stolt Tank Containers | | +| 581 | UXXU | UES International \(HK\) Ltd\. | | +| 582 | VDMU | Samskip | Samskip | +| 583 | VMLU | Vasco Maritime | Vasco | +| 584 | VSBU | VS&B Containers Group | | +| 585 | VSTU | VS&B Containers Group | | +| 586 | WABU | Hoyer Global Transport | | +| 587 | WBPU | SeaCube Container Leasing Ltd | | +| 588 | WCIU | Textainer | | +| 589 | WCXU | West European Container Lines | WEC | +| 590 | WECU | West European Container Lines | WEC | +| 591 | WEDU | Caru | | +| 592 | WFHU | Waterfront Container Leasing Co\. Inc\. | | +| 593 | WHLU | Wan Hai Lines | WHL | +| 594 | WHSU | Wan Hai Lines | WHL | +| 595 | WLNU | Wallenius Wilhelmsen Logistics | WWL | +| 596 | WSCU | Caru | | +| 597 | WSLU | Westwood Shipping Lines | Westwood | +| 598 | WTLU | White Line Shipping | WLS | +| 599 | WWLU | Wallenius Wilhelmsen Logistics | WWL | +| 600 | XINU | Textainer | | +| 601 | XTRU | SeaCo | | +| 602 | YMLU | Yang Ming Line | YML | +| 603 | YMMU | Yang Ming Line | YML | +| 604 | YOIU | Triton Container International Limited | | +| 605 | ZCLU | ZIM Integrated Shipping Services Ltd | ZIM | +| 606 | ZCSU | ZIM Integrated Shipping Services Ltd | ZIM | +| 607 | ZIMU | ZIM Integrated Shipping Services Ltd | ZIM | +| 608 | ZMCU | Zeamarine | Zeamarine | +| 609 | ZMOU | ZIM Integrated Shipping Services Ltd | ZIM | diff --git a/docs/x12/X12DataElements.md b/docs/x12/X12DataElements.md new file mode 100644 index 0000000..0163121 --- /dev/null +++ b/docs/x12/X12DataElements.md @@ -0,0 +1,326 @@ +# X12 Data Elements + + + +| **$ref_X12_DataElement** | **Data Element Number** | **Data Type** | **Minimum Length** | **Maximum Length** | **Data Element Name** | +|--------------------------|-------------------------|---------------|--------------------|--------------------|---------------------------------------------------------------------| +| 2 | 100 | ID | 3 | 3 | Currency Code | +| 3 | 1004 | ID | 1 | 2 | Percent Qualifier | +| 4 | 1005 | ID | 4 | 4 | Hierarchical Structure Code | +| 5 | 1018 | R | 1 | 15 | Exponent | +| 6 | 102 | ID | 1 | 1 | Ownership Code | +| 7 | 1028 | AN | 1 | 38 | Claim Submitters Identifier | +| 8 | 1029 | ID | 1 | 2 | Claim Status Code | +| 9 | 103 | AN | 3 | 5 | Packaging Code | +| 10 | 1032 | ID | 1 | 2 | Claim Filing Indicator Code | +| 11 | 1033 | ID | 1 | 2 | Claim Adjustment Group Code | +| 12 | 1034 | ID | 1 | 5 | Claim Adjustment Reason Code | +| 13 | 1035 | AN | 1 | 35 | Name Last or Organization Name | +| 14 | 1036 | AN | 1 | 25 | Name First | +| 15 | 1037 | AN | 1 | 25 | Name Middle | +| 16 | 1038 | AN | 1 | 10 | Name Prefix | +| 17 | 1039 | AN | 1 | 10 | Name Suffix | +| 18 | 1048 | ID | 1 | 3 | Business Function Code | +| 19 | 1065 | ID | 1 | 1 | Entity Type Qualifier | +| 20 | 1066 | ID | 1 | 2 | Citizenship Status Code | +| 21 | 1067 | ID | 1 | 1 | Marital Status Code | +| 22 | 1068 | ID | 1 | 1 | Gender Code | +| 23 | 1069 | ID | 2 | 2 | Individual Relationship Code | +| 24 | 107 | ID | 1 | 2 | Payment Method Code | +| 25 | 1073 | ID | 1 | 1 | Yes/No Condition or Response Code | +| 26 | 1074 | ID | 2 | 2 | Type of Real Estate Asset Code | +| 27 | 1095 | N0 | 4 | 4 | Year | +| 28 | 1109 | ID | 1 | 1 | Race or Ethnicity Code | +| 29 | 1129 | ID | 1 | 2 | Adjustment Reason Code Characteristic | +| 30 | 1130 | ID | 1 | 1 | Primary or Contingent Code | +| 31 | 1136 | ID | 2 | 2 | Code Category | +| 32 | 1137 | AN | 1 | 15 | Medical Code Value | +| 33 | 1138 | ID | 1 | 1 | Payer Responsibility Sequence Number Code | +| 34 | 1143 | ID | 1 | 1 | Coordination of Benefits Code | +| 35 | 1146 | ID | 1 | 1 | Disability Type Code | +| 36 | 1149 | ID | 4 | 6 | Occupation Code | +| 37 | 1154 | ID | 1 | 1 | Work Intensity Code | +| 38 | 116 | ID | 3 | 15 | Postal Code | +| 39 | 1161 | ID | 1 | 2 | Product Option Code | +| 40 | 1165 | ID | 1 | 1 | Confidentiality Code | +| 41 | 1166 | ID | 2 | 2 | Contract Type Code | +| 42 | 1167 | R | 1 | 6 | Sample Selection Modulus | +| 43 | 1176 | ID | 2 | 3 | Employment Class Code | +| 44 | 118 | R | 1 | 9 | Rate | +| 45 | 1186 | ID | 2 | 2 | Type of Income Code | +| 46 | 1187 | ID | 2 | 2 | Type of Account Code | +| 47 | 1188 | ID | 2 | 2 | Type of Personal or Business Asset Code | +| 48 | 1201 | ID | 1 | 1 | Information Status Code | +| 49 | 1202 | ID | 1 | 1 | Flexible Spending Account Selection Code | +| 50 | 1203 | ID | 2 | 3 | Maintenance Reason Code | +| 51 | 1204 | AN | 1 | 50 | Plan Coverage Description | +| 52 | 1205 | ID | 2 | 3 | Insurance Line Code | +| 53 | 1207 | ID | 3 | 3 | Coverage Level Code | +| 54 | 1209 | ID | 1 | 1 | Underwriting Decision Code | +| 55 | 1211 | ID | 2 | 3 | Drug House Code | +| 56 | 1212 | ID | 1 | 1 | Health\-Related Code | +| 57 | 1213 | ID | 1 | 1 | Current Health Condition Code | +| 58 | 1214 | AN | 1 | 5 | Salary Grade | +| 59 | 1215 | ID | 1 | 1 | Identification Card Type Code | +| 60 | 1216 | ID | 1 | 1 | Benefit Status Code | +| 61 | 1218 | ID | 1 | 1 | Medicare Plan Code | +| 62 | 1219 | ID | 1 | 2 | Consolidated Omnibus Budget Reconciliation Act \(COBRA\) Qualifying | +| 63 | 1220 | ID | 1 | 1 | Student Status Code | +| 64 | 1221 | ID | 1 | 3 | Provider Code | +| 65 | 1222 | AN | 1 | 3 | Provider Specialty Code | +| 66 | 1223 | ID | 3 | 3 | Provider Organization Code | +| 67 | 1224 | ID | 2 | 2 | Contribution Code | +| 68 | 123 | N0 | 1 | 6 | Number of Received Transaction Sets | +| 69 | 124 | AN | 2 | 15 | 124 | +| 70 | 1250 | ID | 2 | 3 | Date Time Period Format Qualifier | +| 71 | 1251 | AN | 1 | 35 | Date Time Period | +| 72 | 1253 | ID | 3 | 6 | Immunization Type Code | +| 73 | 1254 | ID | 1 | 2 | Immunization Status Code | +| 74 | 127 | AN | 1 | 30 | Reference Identification | +| 75 | 1270 | ID | 1 | 3 | Code List Qualifier Code | +| 76 | 1271 | AN | 1 | 30 | Industry Code | +| 77 | 128 | ID | 2 | 3 | Reference Identification Qualifier | +| 78 | 1295 | ID | 1 | 2 | Participant Status Code | +| 79 | 1296 | AN | 1 | 6 | Special Processing Type | +| 80 | 1303 | ID | 1 | 2 | Use of Language Indicator | +| 81 | 1314 | ID | 1 | 1 | Admission Source Code | +| 82 | 1315 | ID | 1 | 1 | Admission Type Code | +| 83 | 1316 | ID | 1 | 1 | Ambulance Transport Code | +| 84 | 1317 | ID | 1 | 1 | Ambulance Transport Reason Code | +| 85 | 1318 | ID | 1 | 1 | Approval Code | +| 86 | 1319 | ID | 1 | 2 | Basis of Cost Determination Code | +| 87 | 1320 | ID | 1 | 1 | Basis of Days Supply Determination Code | +| 88 | 1321 | ID | 2 | 2 | Condition Indicator | +| 89 | 1322 | ID | 1 | 1 | Certification Type Code | +| 90 | 1325 | ID | 1 | 1 | Claim Frequency Type Code | +| 91 | 1327 | ID | 1 | 1 | Copay Status Code | +| 92 | 1328 | N0 | 1 | 2 | Diagnosis Code Pointer | +| 93 | 1329 | ID | 1 | 1 | Dispense as Written Code | +| 94 | 1330 | ID | 2 | 2 | Dosage Form Code | +| 95 | 1331 | AN | 1 | 2 | Facility Code Value | +| 96 | 1332 | ID | 1 | 2 | Facility Code Qualifier | +| 97 | 1333 | ID | 1 | 2 | Record Format Code | +| 98 | 1334 | ID | 1 | 1 | Health Care Professional Shortage Area Code | +| 99 | 1335 | ID | 1 | 1 | Insulin Dependent Code | +| 100 | 1336 | ID | 1 | 3 | Insurance Type Code | +| 101 | 1337 | ID | 1 | 1 | Level of Care Code | +| 102 | 1338 | ID | 1 | 3 | Level of Service Code | +| 103 | 1339 | AN | 2 | 2 | Procedure Modifier | +| 104 | 1340 | ID | 1 | 2 | Multiple Procedure Code | +| 105 | 1341 | AN | 1 | 2 | National or Local Assigned Review Value | +| 106 | 1342 | ID | 1 | 1 | Nature of Condition Code | +| 107 | 1343 | ID | 1 | 2 | Non\-Institutional Claim Type Code | +| 108 | 1344 | ID | 1 | 1 | Non\-Visit Code | +| 109 | 1345 | ID | 1 | 1 | Nursing Home Residential Status Code | +| 110 | 1346 | ID | 1 | 1 | Nutrient Administration Method Code | +| 111 | 1347 | ID | 1 | 1 | Nutrient Administration Technique Code | +| 112 | 1348 | ID | 1 | 1 | Oxygen Equipment Type Code | +| 113 | 1349 | ID | 1 | 1 | Oxygen Test Condition Code | +| 114 | 1350 | ID | 1 | 1 | Oxygen Test Findings Code | +| 115 | 1351 | ID | 1 | 1 | Patient Signature Source Code | +| 116 | 1352 | ID | 1 | 2 | Patient Status Code | +| 117 | 1354 | ID | 1 | 4 | Diagnosis Related Group \(DRG\) Code | +| 118 | 1355 | ID | 2 | 2 | Prescription Denial Override Code | +| 119 | 1356 | ID | 1 | 1 | Prescription Origin Code | +| 120 | 1357 | ID | 1 | 1 | Prior Authorization Type Code | +| 121 | 1358 | ID | 1 | 1 | Prosthesis | +| 122 | 1359 | ID | 1 | 1 | Provider Accept Assignment Code | +| 123 | 1360 | ID | 1 | 1 | Provider Agreement Code | +| 124 | 1361 | ID | 1 | 3 | Oral Cavity Designation Code | +| 125 | 1362 | ID | 2 | 3 | Related\-Causes Code | +| 126 | 1363 | ID | 1 | 1 | Release of Information Code | +| 127 | 1364 | ID | 1 | 2 | Review Code | +| 128 | 1365 | ID | 1 | 2 | Service Type Code | +| 129 | 1366 | ID | 2 | 3 | Special Program Code | +| 130 | 1367 | ID | 2 | 3 | Subluxation Level Code | +| 131 | 1368 | ID | 1 | 2 | Tooth Status Code | +| 132 | 1369 | ID | 1 | 2 | Tooth Surface Code | +| 133 | 1370 | ID | 1 | 1 | Unit Dose Code | +| 134 | 1371 | R | 1 | 10 | Unit Rate | +| 135 | 1373 | ID | 2 | 4 | Measurement Method or Device | +| 136 | 1382 | ID | 1 | 1 | Oxygen Delivery System Code | +| 137 | 1383 | ID | 2 | 2 | Claim Submission Reason Code | +| 138 | 1384 | ID | 1 | 1 | Patient Location Code | +| 139 | 1390 | ID | 1 | 2 | Eligibility or Benefit Information | +| 140 | 1403 | ID | 1 | 1 | Implant Type Code | +| 141 | 1404 | ID | 1 | 1 | Implant Status Code | +| 142 | 142 | AN | 2 | 15 | Application Senders Code | +| 143 | 1429 | ID | 1 | 2 | Construction Type | +| 144 | 143 | ID | 3 | 3 | Transaction Set Identifier Code | +| 145 | 1470 | N0 | 1 | 9 | Number | +| 146 | 1473 | ID | 2 | 2 | Pricing Methodology | +| 147 | 1476 | ID | 1 | 1 | Language Proficiency Indicator | +| 148 | 151 | AN | 1 | 20 | Authority | +| 149 | 1514 | ID | 1 | 2 | Delay Reason Code | +| 150 | 1525 | ID | 1 | 2 | Request Category Code | +| 151 | 1526 | ID | 1 | 2 | Policy Compliance Code | +| 152 | 1527 | ID | 1 | 2 | Exception Code | +| 153 | 1528 | N0 | 1 | 2 | Composite Data Element Position in Composite | +| 154 | 156 | ID | 2 | 2 | State or Province Code | +| 155 | 166 | AN | 1 | 55 | Address Information | +| 156 | 1685 | ID | 1 | 2 | Tax Treatment Code | +| 157 | 1687 | R | 1 | 15 | Earnings Rate of Pay | +| 158 | 1705 | AN | 1 | 35 | Implementation Convention Reference | +| 159 | 183 | R | 1 | 8 | Volume | +| 160 | 184 | ID | 1 | 1 | Volume Unit Qualifier | +| 161 | 188 | ID | 1 | 1 | Weight Unit Code | +| 162 | 19 | AN | 2 | 30 | City Name | +| 163 | 2 | N0 | 1 | 6 | Number of Accepted Transaction Sets | +| 164 | 212 | R | 1 | 17 | Unit Price | +| 165 | 22 | AN | 1 | 30 | Commodity Code | +| 166 | 23 | ID | 1 | 1 | Commodity Code Qualifier | +| 167 | 234 | AN | 1 | 48 | Product/Service ID | +| 168 | 235 | ID | 2 | 2 | Product/Service ID Qualifier | +| 169 | 236 | ID | 3 | 3 | Price Identifier Code | +| 170 | 26 | ID | 2 | 3 | Country Code | +| 171 | 28 | N0 | 1 | 9 | Group Control Number | +| 172 | 29 | DT | 6 | 8 | Date | +| 173 | 30 | TM | 4 | 4 | Time | +| 174 | 280 | R | 4 | 10 | Exchange Rate | +| 175 | 289 | N0 | 1 | 2 | Multiple Price Quantity | +| 176 | 305 | ID | 1 | 2 | Transaction Handling Code | +| 177 | 306 | ID | 1 | 2 | Action Code | +| 178 | 309 | ID | 1 | 2 | Location Qualifier | +| 179 | 310 | AN | 1 | 30 | Location Identifier | +| 180 | 324 | AN | 1 | 22 | Purchase Order Number | +| 181 | 328 | AN | 1 | 30 | Release Number | +| 182 | 329 | AN | 4 | 9 | Transaction Set Control Number | +| 183 | 332 | R | 1 | 6 | Percent | +| 184 | 337 | TM | 4 | 8 | Time | +| 185 | 338 | R | 1 | 6 | Terms Discount Percent | +| 186 | 349 | ID | 1 | 1 | Item Description Type | +| 187 | 350 | AN | 1 | 20 | Assigned Identification | +| 188 | 352 | AN | 1 | 80 | Description | +| 189 | 353 | ID | 2 | 2 | Transaction Set Purpose Code | +| 190 | 354 | N0 | 1 | 6 | Number of Line Items | +| 191 | 355 | ID | 2 | 2 | Unit or Basis for Measurement Code | +| 192 | 358 | R | 1 | 10 | Quantity Invoiced | +| 193 | 363 | ID | 3 | 3 | Note Reference Code | +| 194 | 364 | AN | 1 | 80 | Communication Number | +| 195 | 365 | ID | 2 | 2 | Communication Number Qualifier | +| 196 | 366 | ID | 2 | 2 | Contact Function Code | +| 197 | 373 | DT | 8 | 8 | Date | +| 198 | 374 | ID | 3 | 3 | Date/Time Qualifier | +| 199 | 380 | R | 1 | 15 | Quantity | +| 200 | 426 | ID | 2 | 2 | Adjustment Reason Code | +| 201 | 429 | AN | 1 | 16 | Check Number | +| 202 | 443 | AN | 1 | 20 | Contact Inquiry Reference | +| 203 | 447 | AN | 1 | 6 | Loop Identifier Code | +| 204 | 449 | AN | 1 | 80 | Fixed Format Information | +| 205 | 455 | ID | 1 | 2 | Responsible Agency Code | +| 206 | 478 | ID | 1 | 1 | Credit/Debit Flag Code | +| 207 | 479 | ID | 2 | 2 | Functional Identifier Code | +| 208 | 480 | AN | 1 | 12 | Version / Release / Industry Identifier Code | +| 209 | 481 | ID | 1 | 2 | Trace Type Code | +| 210 | 482 | ID | 2 | 2 | Payment Action Code | +| 211 | 499 | AN | 1 | 10 | Condition Value | +| 212 | 506 | ID | 2 | 2 | \(DFI\) ID Number Qualifier | +| 213 | 507 | AN | 3 | 12 | \(DFI\) Identification Number | +| 214 | 508 | AN | 1 | 35 | Account Number | +| 215 | 509 | AN | 10 | 10 | Originating Company Identifier | +| 216 | 510 | AN | 9 | 9 | Originating Company Supplemental Code | +| 217 | 522 | ID | 1 | 3 | Amount Qualifier Code | +| 218 | 539 | AN | 1 | 25 | Vehicle Identification Number | +| 219 | 554 | N0 | 1 | 6 | Assigned Number | +| 220 | 559 | ID | 2 | 2 | Agency Qualifier Code | +| 221 | 569 | ID | 1 | 3 | Account Number Qualifier | +| 222 | 584 | ID | 2 | 2 | Employment Status Code | +| 223 | 591 | ID | 3 | 3 | Payment Method Code | +| 224 | 594 | ID | 1 | 1 | Frequency Code | +| 225 | 609 | N0 | 1 | 9 | Count | +| 226 | 61 | AN | 1 | 30 | Free\-Form Message | +| 227 | 610 | N2 | 1 | 15 | Amount | +| 228 | 615 | ID | 1 | 2 | Time Period Qualifier | +| 229 | 616 | N0 | 1 | 3 | Number of Periods | +| 230 | 623 | ID | 2 | 2 | Time Code | +| 231 | 628 | AN | 1 | 12 | Hierarchical ID Number | +| 232 | 639 | ID | 2 | 2 | Basis of Unit Price Code | +| 233 | 640 | ID | 2 | 2 | Transaction Type Code | +| 234 | 648 | ID | 3 | 3 | Price Multiplier Qualifier | +| 235 | 649 | R | 1 | 10 | Multiplier | +| 236 | 65 | R | 1 | 8 | Height | +| 237 | 659 | ID | 1 | 2 | Basis of Verification Code | +| 238 | 66 | ID | 1 | 2 | Identification Code Qualifier | +| 239 | 662 | ID | 1 | 1 | Relationship Code | +| 240 | 669 | ID | 3 | 3 | Currency Market/Exchange Code | +| 241 | 67 | AN | 2 | 80 | Identification Code | +| 242 | 672 | ID | 2 | 2 | Resource Authorization Code | +| 243 | 673 | ID | 2 | 2 | Quantity Qualifier | +| 244 | 675 | ID | 2 | 2 | Schedule Type Qualifier | +| 245 | 676 | ID | 1 | 1 | Schedule Quantity Qualifier | +| 246 | 678 | ID | 1 | 2 | Ship/Delivery or Calendar Pattern Code | +| 247 | 679 | ID | 1 | 1 | Ship/Delivery Pattern Time Code | +| 248 | 680 | ID | 1 | 1 | Forecast Qualifier | +| 249 | 681 | ID | 1 | 1 | Forecast Timing Qualifier | +| 250 | 687 | ID | 2 | 2 | Class of Trade Code | +| 251 | 689 | ID | 2 | 2 | Occupancy Code | +| 252 | 704 | ID | 1 | 2 | Paperwork/Report Action Code | +| 253 | 706 | ID | 2 | 2 | Entity Relationship Code | +| 254 | 715 | ID | 1 | 1 | Functional Group Acknowledgment Code | +| 255 | 716 | ID | 1 | 3 | Functional Group Syntax Error Code | +| 256 | 717 | ID | 1 | 1 | Transaction Set Acknowledgment Code | +| 257 | 718 | ID | 1 | 3 | Transaction Set Syntax Error Code | +| 258 | 719 | N0 | 1 | 6 | Segment Position in Transaction Set | +| 259 | 720 | ID | 1 | 3 | Segment Syntax Error Code | +| 260 | 721 | ID | 2 | 3 | Segment ID Code | +| 261 | 722 | N0 | 1 | 2 | Element Position in Segment | +| 262 | 723 | ID | 1 | 3 | Data Element Syntax Error Code | +| 263 | 724 | AN | 1 | 99 | Copy of Bad Data Element | +| 264 | 725 | N0 | 1 | 4 | Data Element Reference Number | +| 265 | 734 | AN | 1 | 12 | Hierarchical Parent ID Number | +| 266 | 735 | ID | 1 | 2 | Hierarchical Level Code | +| 267 | 736 | ID | 1 | 1 | Hierarchical Child Code | +| 268 | 737 | ID | 2 | 2 | Measurement Reference ID Code | +| 269 | 738 | ID | 1 | 3 | Measurement Qualifier | +| 270 | 739 | R | 1 | 20 | Measurement Value | +| 271 | 740 | R | 1 | 20 | Range Minimum | +| 272 | 741 | R | 1 | 20 | Range Maximum | +| 273 | 750 | ID | 2 | 3 | Product/Process Characteristic Code | +| 274 | 751 | AN | 1 | 12 | Product Description Code | +| 275 | 752 | ID | 2 | 2 | Surface/Layer/Position Code | +| 276 | 754 | AN | 1 | 7 | Packaging Description Code | +| 277 | 755 | ID | 2 | 2 | Report Type Code | +| 278 | 756 | ID | 1 | 2 | Report Transmission Code | +| 279 | 757 | N0 | 1 | 2 | Report Copies Needed | +| 280 | 782 | R | 1 | 18 | Monetary Amount | +| 281 | 786 | ID | 2 | 2 | Security Level Code | +| 282 | 799 | AN | 1 | 30 | Version Identifier | +| 283 | 81 | R | 1 | 10 | Weight | +| 284 | 812 | ID | 1 | 10 | Payment Format Code | +| 285 | 819 | ID | 2 | 3 | Language Code | +| 286 | 82 | R | 1 | 8 | Length | +| 287 | 821 | ID | 3 | 3 | Safety Characteristic/Hazard Code | +| 288 | 822 | AN | 1 | 15 | Source Subqualifier | +| 289 | 875 | ID | 3 | 3 | Maintenance Type Code | +| 290 | 889 | ID | 1 | 1 | Follow\-up Action Code | +| 291 | 9 | ID | 2 | 2 | Late Reason Code | +| 292 | 901 | ID | 2 | 2 | Reject Reason Code | +| 293 | 921 | ID | 2 | 2 | Discipline Type Code | +| 294 | 923 | ID | 1 | 1 | Prognosis Code | +| 295 | 93 | AN | 1 | 60 | Name | +| 296 | 933 | AN | 1 | 264 | Free\-Form Message Text | +| 297 | 934 | ID | 2 | 2 | Printer Carriage Control Code | +| 298 | 935 | ID | 2 | 2 | Measurement Significance Code | +| 299 | 936 | ID | 2 | 2 | Measurement Attribute Code | +| 300 | 954 | R | 1 | 10 | Percent | +| 301 | 96 | N0 | 1 | 10 | Number of Included Segments | +| 302 | 97 | N0 | 1 | 6 | 97 | +| 303 | 98 | ID | 2 | 3 | Entity Identifier Code | +| 304 | I01 | ID | 2 | 2 | I01 | +| 305 | I02 | AN | 10 | 10 | I02 | +| 306 | I03 | ID | 2 | 2 | I03 | +| 307 | I04 | AN | 10 | 10 | I04 | +| 308 | I05 | ID | 2 | 2 | I05 | +| 309 | I06 | AN | 15 | 15 | I06 | +| 310 | I07 | AN | 15 | 15 | I07 | +| 311 | I08 | DT | 6 | 6 | I08 | +| 312 | I09 | TM | 4 | 4 | I09 | +| 313 | I10 | ID | 1 | 1 | I10 | +| 314 | I11 | ID | 5 | 5 | I11 | +| 315 | I12 | N0 | 9 | 9 | I12 | +| 316 | I13 | ID | 1 | 1 | I13 | +| 317 | I14 | ID | 1 | 1 | I14 | +| 318 | I15 | AN | 1 | 1 | I15 | +| 319 | I16 | N0 | 1 | 5 | I16 | +| 320 | I17 | ID | 1 | 1 | I17 | +| 321 | I18 | ID | 3 | 3 | I18 | diff --git a/docs/x12/X12_Data_Element_KeyArray.json b/docs/x12/X12_Data_Element_KeyArray.json new file mode 100644 index 0000000..d55461e --- /dev/null +++ b/docs/x12/X12_Data_Element_KeyArray.json @@ -0,0 +1,965 @@ +[ + { + "0": ["$ref_X12_DataElement","DataElementNumber","DataType","MinimumLength","MaximumLength","DataElementName"] + }, + { + "1": ["2","100","ID","3","3","CurrencyCode"] + }, + { + "2": ["3","1004","ID","1","2","PercentQualifier"] + }, + { + "3": ["4","1005","ID","4","4","HierarchicalStructureCode"] + }, + { + "4": ["5","1018","R","1","15","Exponent"] + }, + { + "5": ["6","102","ID","1","1","OwnershipCode"] + }, + { + "6": ["7","1028","AN","1","38","ClaimSubmittersIdentifier"] + }, + { + "7": ["8","1029","ID","1","2","ClaimStatusCode"] + }, + { + "8": ["9","103","AN","3","5","PackagingCode"] + }, + { + "9": ["10","1032","ID","1","2","ClaimFilingIndicatorCode"] + }, + { + "10": ["11","1033","ID","1","2","ClaimAdjustmentGroupCode"] + }, + { + "11": ["12","1034","ID","1","5","ClaimAdjustmentReasonCode"] + }, + { + "12": ["13","1035","AN","1","35","NameLastorOrganizationName"] + }, + { + "13": ["14","1036","AN","1","25","NameFirst"] + }, + { + "14": ["15","1037","AN","1","25","NameMiddle"] + }, + { + "15": ["16","1038","AN","1","10","NamePrefix"] + }, + { + "16": ["17","1039","AN","1","10","NameSuffix"] + }, + { + "17": ["18","1048","ID","1","3","BusinessFunctionCode"] + }, + { + "18": ["19","1065","ID","1","1","EntityTypeQualifier"] + }, + { + "19": ["20","1066","ID","1","2","CitizenshipStatusCode"] + }, + { + "20": ["21","1067","ID","1","1","MaritalStatusCode"] + }, + { + "21": ["22","1068","ID","1","1","GenderCode"] + }, + { + "22": ["23","1069","ID","2","2","IndividualRelationshipCode"] + }, + { + "23": ["24","107","ID","1","2","PaymentMethodCode"] + }, + { + "24": ["25","1073","ID","1","1","Yes/NoConditionorResponseCode"] + }, + { + "25": ["26","1074","ID","2","2","TypeofRealEstateAssetCode"] + }, + { + "26": ["27","1095","N0","4","4","Year"] + }, + { + "27": ["28","1109","ID","1","1","RaceorEthnicityCode"] + }, + { + "28": ["29","1129","ID","1","2","AdjustmentReasonCodeCharacteristic"] + }, + { + "29": ["30","1130","ID","1","1","PrimaryorContingentCode"] + }, + { + "30": ["31","1136","ID","2","2","CodeCategory"] + }, + { + "31": ["32","1137","AN","1","15","MedicalCodeValue"] + }, + { + "32": ["33","1138","ID","1","1","PayerResponsibilitySequenceNumberCode"] + }, + { + "33": ["34","1143","ID","1","1","CoordinationofBenefitsCode"] + }, + { + "34": ["35","1146","ID","1","1","DisabilityTypeCode"] + }, + { + "35": ["36","1149","ID","4","6","OccupationCode"] + }, + { + "36": ["37","1154","ID","1","1","WorkIntensityCode"] + }, + { + "37": ["38","116","ID","3","15","PostalCode"] + }, + { + "38": ["39","1161","ID","1","2","ProductOptionCode"] + }, + { + "39": ["40","1165","ID","1","1","ConfidentialityCode"] + }, + { + "40": ["41","1166","ID","2","2","ContractTypeCode"] + }, + { + "41": ["42","1167","R","1","6","SampleSelectionModulus"] + }, + { + "42": ["43","1176","ID","2","3","EmploymentClassCode"] + }, + { + "43": ["44","118","R","1","9","Rate"] + }, + { + "44": ["45","1186","ID","2","2","TypeofIncomeCode"] + }, + { + "45": ["46","1187","ID","2","2","TypeofAccountCode"] + }, + { + "46": ["47","1188","ID","2","2","TypeofPersonalorBusinessAssetCode"] + }, + { + "47": ["48","1201","ID","1","1","InformationStatusCode"] + }, + { + "48": ["49","1202","ID","1","1","FlexibleSpendingAccountSelectionCode"] + }, + { + "49": ["50","1203","ID","2","3","MaintenanceReasonCode"] + }, + { + "50": ["51","1204","AN","1","50","PlanCoverageDescription"] + }, + { + "51": ["52","1205","ID","2","3","InsuranceLineCode"] + }, + { + "52": ["53","1207","ID","3","3","CoverageLevelCode"] + }, + { + "53": ["54","1209","ID","1","1","UnderwritingDecisionCode"] + }, + { + "54": ["55","1211","ID","2","3","DrugHouseCode"] + }, + { + "55": ["56","1212","ID","1","1","Health-RelatedCode"] + }, + { + "56": ["57","1213","ID","1","1","CurrentHealthConditionCode"] + }, + { + "57": ["58","1214","AN","1","5","SalaryGrade"] + }, + { + "58": ["59","1215","ID","1","1","IdentificationCardTypeCode"] + }, + { + "59": ["60","1216","ID","1","1","BenefitStatusCode"] + }, + { + "60": ["61","1218","ID","1","1","MedicarePlanCode"] + }, + { + "61": ["62","1219","ID","1","2","ConsolidatedOmnibusBudgetReconciliationAct(COBRA)Qualifying"] + }, + { + "62": ["63","1220","ID","1","1","StudentStatusCode"] + }, + { + "63": ["64","1221","ID","1","3","ProviderCode"] + }, + { + "64": ["65","1222","AN","1","3","ProviderSpecialtyCode"] + }, + { + "65": ["66","1223","ID","3","3","ProviderOrganizationCode"] + }, + { + "66": ["67","1224","ID","2","2","ContributionCode"] + }, + { + "67": ["68","123","N0","1","6","NumberofReceivedTransactionSets"] + }, + { + "68": ["69","124","AN","2","15","124"] + }, + { + "69": ["70","1250","ID","2","3","DateTimePeriodFormatQualifier"] + }, + { + "70": ["71","1251","AN","1","35","DateTimePeriod"] + }, + { + "71": ["72","1253","ID","3","6","ImmunizationTypeCode"] + }, + { + "72": ["73","1254","ID","1","2","ImmunizationStatusCode"] + }, + { + "73": ["74","127","AN","1","30","ReferenceIdentification"] + }, + { + "74": ["75","1270","ID","1","3","CodeListQualifierCode"] + }, + { + "75": ["76","1271","AN","1","30","IndustryCode"] + }, + { + "76": ["77","128","ID","2","3","ReferenceIdentificationQualifier"] + }, + { + "77": ["78","1295","ID","1","2","ParticipantStatusCode"] + }, + { + "78": ["79","1296","AN","1","6","SpecialProcessingType"] + }, + { + "79": ["80","1303","ID","1","2","UseofLanguageIndicator"] + }, + { + "80": ["81","1314","ID","1","1","AdmissionSourceCode"] + }, + { + "81": ["82","1315","ID","1","1","AdmissionTypeCode"] + }, + { + "82": ["83","1316","ID","1","1","AmbulanceTransportCode"] + }, + { + "83": ["84","1317","ID","1","1","AmbulanceTransportReasonCode"] + }, + { + "84": ["85","1318","ID","1","1","ApprovalCode"] + }, + { + "85": ["86","1319","ID","1","2","BasisofCostDeterminationCode"] + }, + { + "86": ["87","1320","ID","1","1","BasisofDaysSupplyDeterminationCode"] + }, + { + "87": ["88","1321","ID","2","2","ConditionIndicator"] + }, + { + "88": ["89","1322","ID","1","1","CertificationTypeCode"] + }, + { + "89": ["90","1325","ID","1","1","ClaimFrequencyTypeCode"] + }, + { + "90": ["91","1327","ID","1","1","CopayStatusCode"] + }, + { + "91": ["92","1328","N0","1","2","DiagnosisCodePointer"] + }, + { + "92": ["93","1329","ID","1","1","DispenseasWrittenCode"] + }, + { + "93": ["94","1330","ID","2","2","DosageFormCode"] + }, + { + "94": ["95","1331","AN","1","2","FacilityCodeValue"] + }, + { + "95": ["96","1332","ID","1","2","FacilityCodeQualifier"] + }, + { + "96": ["97","1333","ID","1","2","RecordFormatCode"] + }, + { + "97": ["98","1334","ID","1","1","HealthCareProfessionalShortageAreaCode"] + }, + { + "98": ["99","1335","ID","1","1","InsulinDependentCode"] + }, + { + "99": ["100","1336","ID","1","3","InsuranceTypeCode"] + }, + { + "100": ["101","1337","ID","1","1","LevelofCareCode"] + }, + { + "101": ["102","1338","ID","1","3","LevelofServiceCode"] + }, + { + "102": ["103","1339","AN","2","2","ProcedureModifier"] + }, + { + "103": ["104","1340","ID","1","2","MultipleProcedureCode"] + }, + { + "104": ["105","1341","AN","1","2","NationalorLocalAssignedReviewValue"] + }, + { + "105": ["106","1342","ID","1","1","NatureofConditionCode"] + }, + { + "106": ["107","1343","ID","1","2","Non-InstitutionalClaimTypeCode"] + }, + { + "107": ["108","1344","ID","1","1","Non-VisitCode"] + }, + { + "108": ["109","1345","ID","1","1","NursingHomeResidentialStatusCode"] + }, + { + "109": ["110","1346","ID","1","1","NutrientAdministrationMethodCode"] + }, + { + "110": ["111","1347","ID","1","1","NutrientAdministrationTechniqueCode"] + }, + { + "111": ["112","1348","ID","1","1","OxygenEquipmentTypeCode"] + }, + { + "112": ["113","1349","ID","1","1","OxygenTestConditionCode"] + }, + { + "113": ["114","1350","ID","1","1","OxygenTestFindingsCode"] + }, + { + "114": ["115","1351","ID","1","1","PatientSignatureSourceCode"] + }, + { + "115": ["116","1352","ID","1","2","PatientStatusCode"] + }, + { + "116": ["117","1354","ID","1","4","DiagnosisRelatedGroup(DRG)Code"] + }, + { + "117": ["118","1355","ID","2","2","PrescriptionDenialOverrideCode"] + }, + { + "118": ["119","1356","ID","1","1","PrescriptionOriginCode"] + }, + { + "119": ["120","1357","ID","1","1","PriorAuthorizationTypeCode"] + }, + { + "120": ["121","1358","ID","1","1","Prosthesis"] + }, + { + "121": ["122","1359","ID","1","1","ProviderAcceptAssignmentCode"] + }, + { + "122": ["123","1360","ID","1","1","ProviderAgreementCode"] + }, + { + "123": ["124","1361","ID","1","3","OralCavityDesignationCode"] + }, + { + "124": ["125","1362","ID","2","3","Related-CausesCode"] + }, + { + "125": ["126","1363","ID","1","1","ReleaseofInformationCode"] + }, + { + "126": ["127","1364","ID","1","2","ReviewCode"] + }, + { + "127": ["128","1365","ID","1","2","ServiceTypeCode"] + }, + { + "128": ["129","1366","ID","2","3","SpecialProgramCode"] + }, + { + "129": ["130","1367","ID","2","3","SubluxationLevelCode"] + }, + { + "130": ["131","1368","ID","1","2","ToothStatusCode"] + }, + { + "131": ["132","1369","ID","1","2","ToothSurfaceCode"] + }, + { + "132": ["133","1370","ID","1","1","UnitDoseCode"] + }, + { + "133": ["134","1371","R","1","10","UnitRate"] + }, + { + "134": ["135","1373","ID","2","4","MeasurementMethodorDevice"] + }, + { + "135": ["136","1382","ID","1","1","OxygenDeliverySystemCode"] + }, + { + "136": ["137","1383","ID","2","2","ClaimSubmissionReasonCode"] + }, + { + "137": ["138","1384","ID","1","1","PatientLocationCode"] + }, + { + "138": ["139","1390","ID","1","2","EligibilityorBenefitInformation"] + }, + { + "139": ["140","1403","ID","1","1","ImplantTypeCode"] + }, + { + "140": ["141","1404","ID","1","1","ImplantStatusCode"] + }, + { + "141": ["142","142","AN","2","15","ApplicationSendersCode"] + }, + { + "142": ["143","1429","ID","1","2","ConstructionType"] + }, + { + "143": ["144","143","ID","3","3","TransactionSetIdentifierCode"] + }, + { + "144": ["145","1470","N0","1","9","Number"] + }, + { + "145": ["146","1473","ID","2","2","PricingMethodology"] + }, + { + "146": ["147","1476","ID","1","1","LanguageProficiencyIndicator"] + }, + { + "147": ["148","151","AN","1","20","Authority"] + }, + { + "148": ["149","1514","ID","1","2","DelayReasonCode"] + }, + { + "149": ["150","1525","ID","1","2","RequestCategoryCode"] + }, + { + "150": ["151","1526","ID","1","2","PolicyComplianceCode"] + }, + { + "151": ["152","1527","ID","1","2","ExceptionCode"] + }, + { + "152": ["153","1528","N0","1","2","CompositeDataElementPositioninComposite"] + }, + { + "153": ["154","156","ID","2","2","StateorProvinceCode"] + }, + { + "154": ["155","166","AN","1","55","AddressInformation"] + }, + { + "155": ["156","1685","ID","1","2","TaxTreatmentCode"] + }, + { + "156": ["157","1687","R","1","15","EarningsRateofPay"] + }, + { + "157": ["158","1705","AN","1","35","ImplementationConventionReference"] + }, + { + "158": ["159","183","R","1","8","Volume"] + }, + { + "159": ["160","184","ID","1","1","VolumeUnitQualifier"] + }, + { + "160": ["161","188","ID","1","1","WeightUnitCode"] + }, + { + "161": ["162","19","AN","2","30","CityName"] + }, + { + "162": ["163","2","N0","1","6","NumberofAcceptedTransactionSets"] + }, + { + "163": ["164","212","R","1","17","UnitPrice"] + }, + { + "164": ["165","22","AN","1","30","CommodityCode"] + }, + { + "165": ["166","23","ID","1","1","CommodityCodeQualifier"] + }, + { + "166": ["167","234","AN","1","48","Product/ServiceID"] + }, + { + "167": ["168","235","ID","2","2","Product/ServiceIDQualifier"] + }, + { + "168": ["169","236","ID","3","3","PriceIdentifierCode"] + }, + { + "169": ["170","26","ID","2","3","CountryCode"] + }, + { + "170": ["171","28","N0","1","9","GroupControlNumber"] + }, + { + "171": ["172","29","DT","6","8","Date"] + }, + { + "172": ["173","30","TM","4","4","Time"] + }, + { + "173": ["174","280","R","4","10","ExchangeRate"] + }, + { + "174": ["175","289","N0","1","2","MultiplePriceQuantity"] + }, + { + "175": ["176","305","ID","1","2","TransactionHandlingCode"] + }, + { + "176": ["177","306","ID","1","2","ActionCode"] + }, + { + "177": ["178","309","ID","1","2","LocationQualifier"] + }, + { + "178": ["179","310","AN","1","30","LocationIdentifier"] + }, + { + "179": ["180","324","AN","1","22","PurchaseOrderNumber"] + }, + { + "180": ["181","328","AN","1","30","ReleaseNumber"] + }, + { + "181": ["182","329","AN","4","9","TransactionSetControlNumber"] + }, + { + "182": ["183","332","R","1","6","Percent"] + }, + { + "183": ["184","337","TM","4","8","Time"] + }, + { + "184": ["185","338","R","1","6","TermsDiscountPercent"] + }, + { + "185": ["186","349","ID","1","1","ItemDescriptionType"] + }, + { + "186": ["187","350","AN","1","20","AssignedIdentification"] + }, + { + "187": ["188","352","AN","1","80","Description"] + }, + { + "188": ["189","353","ID","2","2","TransactionSetPurposeCode"] + }, + { + "189": ["190","354","N0","1","6","NumberofLineItems"] + }, + { + "190": ["191","355","ID","2","2","UnitorBasisforMeasurementCode"] + }, + { + "191": ["192","358","R","1","10","QuantityInvoiced"] + }, + { + "192": ["193","363","ID","3","3","NoteReferenceCode"] + }, + { + "193": ["194","364","AN","1","80","CommunicationNumber"] + }, + { + "194": ["195","365","ID","2","2","CommunicationNumberQualifier"] + }, + { + "195": ["196","366","ID","2","2","ContactFunctionCode"] + }, + { + "196": ["197","373","DT","8","8","Date"] + }, + { + "197": ["198","374","ID","3","3","Date/TimeQualifier"] + }, + { + "198": ["199","380","R","1","15","Quantity"] + }, + { + "199": ["200","426","ID","2","2","AdjustmentReasonCode"] + }, + { + "200": ["201","429","AN","1","16","CheckNumber"] + }, + { + "201": ["202","443","AN","1","20","ContactInquiryReference"] + }, + { + "202": ["203","447","AN","1","6","LoopIdentifierCode"] + }, + { + "203": ["204","449","AN","1","80","FixedFormatInformation"] + }, + { + "204": ["205","455","ID","1","2","ResponsibleAgencyCode"] + }, + { + "205": ["206","478","ID","1","1","Credit/DebitFlagCode"] + }, + { + "206": ["207","479","ID","2","2","FunctionalIdentifierCode"] + }, + { + "207": ["208","480","AN","1","12","Version/Release/IndustryIdentifierCode"] + }, + { + "208": ["209","481","ID","1","2","TraceTypeCode"] + }, + { + "209": ["210","482","ID","2","2","PaymentActionCode"] + }, + { + "210": ["211","499","AN","1","10","ConditionValue"] + }, + { + "211": ["212","506","ID","2","2","(DFI)IDNumberQualifier"] + }, + { + "212": ["213","507","AN","3","12","(DFI)IdentificationNumber"] + }, + { + "213": ["214","508","AN","1","35","AccountNumber"] + }, + { + "214": ["215","509","AN","10","10","OriginatingCompanyIdentifier"] + }, + { + "215": ["216","510","AN","9","9","OriginatingCompanySupplementalCode"] + }, + { + "216": ["217","522","ID","1","3","AmountQualifierCode"] + }, + { + "217": ["218","539","AN","1","25","VehicleIdentificationNumber"] + }, + { + "218": ["219","554","N0","1","6","AssignedNumber"] + }, + { + "219": ["220","559","ID","2","2","AgencyQualifierCode"] + }, + { + "220": ["221","569","ID","1","3","AccountNumberQualifier"] + }, + { + "221": ["222","584","ID","2","2","EmploymentStatusCode"] + }, + { + "222": ["223","591","ID","3","3","PaymentMethodCode"] + }, + { + "223": ["224","594","ID","1","1","FrequencyCode"] + }, + { + "224": ["225","609","N0","1","9","Count"] + }, + { + "225": ["226","61","AN","1","30","Free-FormMessage"] + }, + { + "226": ["227","610","N2","1","15","Amount"] + }, + { + "227": ["228","615","ID","1","2","TimePeriodQualifier"] + }, + { + "228": ["229","616","N0","1","3","NumberofPeriods"] + }, + { + "229": ["230","623","ID","2","2","TimeCode"] + }, + { + "230": ["231","628","AN","1","12","HierarchicalIDNumber"] + }, + { + "231": ["232","639","ID","2","2","BasisofUnitPriceCode"] + }, + { + "232": ["233","640","ID","2","2","TransactionTypeCode"] + }, + { + "233": ["234","648","ID","3","3","PriceMultiplierQualifier"] + }, + { + "234": ["235","649","R","1","10","Multiplier"] + }, + { + "235": ["236","65","R","1","8","Height"] + }, + { + "236": ["237","659","ID","1","2","BasisofVerificationCode"] + }, + { + "237": ["238","66","ID","1","2","IdentificationCodeQualifier"] + }, + { + "238": ["239","662","ID","1","1","RelationshipCode"] + }, + { + "239": ["240","669","ID","3","3","CurrencyMarket/ExchangeCode"] + }, + { + "240": ["241","67","AN","2","80","IdentificationCode"] + }, + { + "241": ["242","672","ID","2","2","ResourceAuthorizationCode"] + }, + { + "242": ["243","673","ID","2","2","QuantityQualifier"] + }, + { + "243": ["244","675","ID","2","2","ScheduleTypeQualifier"] + }, + { + "244": ["245","676","ID","1","1","ScheduleQuantityQualifier"] + }, + { + "245": ["246","678","ID","1","2","Ship/DeliveryorCalendarPatternCode"] + }, + { + "246": ["247","679","ID","1","1","Ship/DeliveryPatternTimeCode"] + }, + { + "247": ["248","680","ID","1","1","ForecastQualifier"] + }, + { + "248": ["249","681","ID","1","1","ForecastTimingQualifier"] + }, + { + "249": ["250","687","ID","2","2","ClassofTradeCode"] + }, + { + "250": ["251","689","ID","2","2","OccupancyCode"] + }, + { + "251": ["252","704","ID","1","2","Paperwork/ReportActionCode"] + }, + { + "252": ["253","706","ID","2","2","EntityRelationshipCode"] + }, + { + "253": ["254","715","ID","1","1","FunctionalGroupAcknowledgmentCode"] + }, + { + "254": ["255","716","ID","1","3","FunctionalGroupSyntaxErrorCode"] + }, + { + "255": ["256","717","ID","1","1","TransactionSetAcknowledgmentCode"] + }, + { + "256": ["257","718","ID","1","3","TransactionSetSyntaxErrorCode"] + }, + { + "257": ["258","719","N0","1","6","SegmentPositioninTransactionSet"] + }, + { + "258": ["259","720","ID","1","3","SegmentSyntaxErrorCode"] + }, + { + "259": ["260","721","ID","2","3","SegmentIDCode"] + }, + { + "260": ["261","722","N0","1","2","ElementPositioninSegment"] + }, + { + "261": ["262","723","ID","1","3","DataElementSyntaxErrorCode"] + }, + { + "262": ["263","724","AN","1","99","CopyofBadDataElement"] + }, + { + "263": ["264","725","N0","1","4","DataElementReferenceNumber"] + }, + { + "264": ["265","734","AN","1","12","HierarchicalParentIDNumber"] + }, + { + "265": ["266","735","ID","1","2","HierarchicalLevelCode"] + }, + { + "266": ["267","736","ID","1","1","HierarchicalChildCode"] + }, + { + "267": ["268","737","ID","2","2","MeasurementReferenceIDCode"] + }, + { + "268": ["269","738","ID","1","3","MeasurementQualifier"] + }, + { + "269": ["270","739","R","1","20","MeasurementValue"] + }, + { + "270": ["271","740","R","1","20","RangeMinimum"] + }, + { + "271": ["272","741","R","1","20","RangeMaximum"] + }, + { + "272": ["273","750","ID","2","3","Product/ProcessCharacteristicCode"] + }, + { + "273": ["274","751","AN","1","12","ProductDescriptionCode"] + }, + { + "274": ["275","752","ID","2","2","Surface/Layer/PositionCode"] + }, + { + "275": ["276","754","AN","1","7","PackagingDescriptionCode"] + }, + { + "276": ["277","755","ID","2","2","ReportTypeCode"] + }, + { + "277": ["278","756","ID","1","2","ReportTransmissionCode"] + }, + { + "278": ["279","757","N0","1","2","ReportCopiesNeeded"] + }, + { + "279": ["280","782","R","1","18","MonetaryAmount"] + }, + { + "280": ["281","786","ID","2","2","SecurityLevelCode"] + }, + { + "281": ["282","799","AN","1","30","VersionIdentifier"] + }, + { + "282": ["283","81","R","1","10","Weight"] + }, + { + "283": ["284","812","ID","1","10","PaymentFormatCode"] + }, + { + "284": ["285","819","ID","2","3","LanguageCode"] + }, + { + "285": ["286","82","R","1","8","Length"] + }, + { + "286": ["287","821","ID","3","3","SafetyCharacteristic/HazardCode"] + }, + { + "287": ["288","822","AN","1","15","SourceSubqualifier"] + }, + { + "288": ["289","875","ID","3","3","MaintenanceTypeCode"] + }, + { + "289": ["290","889","ID","1","1","Follow-upActionCode"] + }, + { + "290": ["291","9","ID","2","2","LateReasonCode"] + }, + { + "291": ["292","901","ID","2","2","RejectReasonCode"] + }, + { + "292": ["293","921","ID","2","2","DisciplineTypeCode"] + }, + { + "293": ["294","923","ID","1","1","PrognosisCode"] + }, + { + "294": ["295","93","AN","1","60","Name"] + }, + { + "295": ["296","933","AN","1","264","Free-FormMessageText"] + }, + { + "296": ["297","934","ID","2","2","PrinterCarriageControlCode"] + }, + { + "297": ["298","935","ID","2","2","MeasurementSignificanceCode"] + }, + { + "298": ["299","936","ID","2","2","MeasurementAttributeCode"] + }, + { + "299": ["300","954","R","1","10","Percent"] + }, + { + "300": ["301","96","N0","1","10","NumberofIncludedSegments"] + }, + { + "301": ["302","97","N0","1","6","97"] + }, + { + "302": ["303","98","ID","2","3","EntityIdentifierCode"] + }, + { + "303": ["304","I01","ID","2","2","I01"] + }, + { + "304": ["305","I02","AN","10","10","I02"] + }, + { + "305": ["306","I03","ID","2","2","I03"] + }, + { + "306": ["307","I04","AN","10","10","I04"] + }, + { + "307": ["308","I05","ID","2","2","I05"] + }, + { + "308": ["309","I06","AN","15","15","I06"] + }, + { + "309": ["310","I07","AN","15","15","I07"] + }, + { + "310": ["311","I08","DT","6","6","I08"] + }, + { + "311": ["312","I09","TM","4","4","I09"] + }, + { + "312": ["313","I10","ID","1","1","I10"] + }, + { + "313": ["314","I11","ID","5","5","I11"] + }, + { + "314": ["315","I12","N0","9","9","I12"] + }, + { + "315": ["316","I13","ID","1","1","I13"] + }, + { + "316": ["317","I14","ID","1","1","I14"] + }, + { + "317": ["318","I15","AN","1","1","I15"] + }, + { + "318": ["319","I16","N0","1","5","I16"] + }, + { + "319": ["320","I17","ID","1","1","I17"] + }, + { + "320": ["321","I18","ID","3","3","I18"] + } +] \ No newline at end of file From 716d46495abf1185d0f7d49116c14bde6d6f250a Mon Sep 17 00:00:00 2001 From: "sam@freighttrust.com" Date: Wed, 8 Jul 2020 21:25:29 -0700 Subject: [PATCH 2/5] ci(files changed.yaml): adding chagelog workflow --- .github/workflows/files-changed.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .github/workflows/files-changed.yaml diff --git a/.github/workflows/files-changed.yaml b/.github/workflows/files-changed.yaml new file mode 100644 index 0000000..74d7a1d --- /dev/null +++ b/.github/workflows/files-changed.yaml @@ -0,0 +1,16 @@ +name: PR Changelog Addition +on: + pull_request: + types: + - opened + - edited + - synchronized + - labeled + - unlabeled +jobs: + add_to_changelog: + runs-on: ubuntu-latest + steps: + - uses: guzzler/file-changelog-issue-action@master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 856ad6f78a0d9b80fe1acfdcc784bb75ecc25574 Mon Sep 17 00:00:00 2001 From: "sam@freighttrust.com" Date: Wed, 8 Jul 2020 21:37:28 -0700 Subject: [PATCH 3/5] refactor(removed bloat): removing extra files no longer needed --- fix-deploy | 0 goodcheck.yml | 16 ++++++++-------- omnibus.git | 1 + urn | 0 4 files changed, 9 insertions(+), 8 deletions(-) delete mode 100644 fix-deploy create mode 120000 omnibus.git delete mode 100644 urn diff --git a/fix-deploy b/fix-deploy deleted file mode 100644 index e69de29..0000000 diff --git a/goodcheck.yml b/goodcheck.yml index d618c59..51fc55b 100644 --- a/goodcheck.yml +++ b/goodcheck.yml @@ -1,16 +1,16 @@ rules: # id, pattern, message are required attributes. - - id: example.github - pattern: Github - message: Do you want to write GitHub? + - id: freight-trust + pattern: Freighttrust + message: Do you want to write FreightTrust? glob: - "**/*.rb" - "**/*.{yaml,yml}" - "public/**/*.html" fail: - - Signup via Github + - Signup via Freighttrust pass: - - Signup via GitHub + - Signup via FreightTrust # You can have *justification* to explain the exceptional cases. - id: example.localStorage @@ -49,6 +49,6 @@ rules: # - https://example.com/example-rules.yml # You can skip checking files. -# exclude: -# - node_modules -# - vendor +exclude: + - node_modules + - vendor diff --git a/omnibus.git b/omnibus.git new file mode 120000 index 0000000..efbfb9e --- /dev/null +++ b/omnibus.git @@ -0,0 +1 @@ +.git@github.com:freight-trust/omnibus.git \ No newline at end of file diff --git a/urn b/urn deleted file mode 100644 index e69de29..0000000 From cd33239f618a9d3409068e7287c0531d0eba664b Mon Sep 17 00:00:00 2001 From: "sam@freighttrust.com" Date: Mon, 13 Jul 2020 02:43:11 -0700 Subject: [PATCH 4/5] feat(spec release of interface): releasing spec interface v2-rc1 --- ...jor rhel7stig-sphinx master doc-source.zip | Bin 0 -> 494253 bytes docs/platform/1.txt | 51 + docs/platform/2.txt | 17 + docs/platform/3.txt | 45 + docs/platform/4.txt | 12 + docs/platform/5.txt | 35 + ...ighway FTP Integration Package (1) (1).zip | Bin 0 -> 904414 bytes .../Canadian Frontier Ports With Province.pdf | Bin 0 -> 39438 bytes .../Canadian Frontier Ports.docx | Bin 0 -> 23404 bytes .../Canadian Frontier Ports.pdf | Bin 0 -> 44266 bytes ...f New and Modified Error Codes for R37.xls | Bin 0 -> 42496 bytes .../aci_highway_codes_list.pdf | Bin 0 -> 386177 bytes .../aci_highway_submission_processing.pdf | Bin 0 -> 20081 bytes .../Cargo_With_Multiple_CCN_Warning.xml | 304 + .../aci_highway_external_response.xsd | 536 + .../aci_highway_external_response.xsd.bak | 536 + ...way_external_response_fields_explained.doc | Bin 0 -> 742912 bytes .../samples/Cargo release notification.xml | 13 + .../Conveyance arrival notification.xml | 12 + .../response/samples/Fail_File1.xml | 16 + .../response/samples/Generic sample.xml | 155 + ...ntains error and not processed by CBSA.xml | 16 + ...ive response - Report rejected by CBSA.xml | 14 + ...ed successfully to CBSA for processing.xml | 12 + ...ive response - Report accepted by CBSA.xml | 10 + .../response/samples/Success_File1.xml | 12 + ..._ARRIVAL_1234L001170_20120218010815275.xml | 14 + ...ay_external_submit_fields_explained_v2.doc | Bin 0 -> 858112 bytes .../aci_highway_external_submit_v2.xsd | 877 + .../submission/samples/CSA.xml | 55 + .../submission/samples/Cargo_01.xml | 60 + .../samples/Complete_Manifest_01.xml | 97 + .../submission/samples/IN-BOND.xml | 68 + .../samples/Individual_Conveyance_01.xml | 36 + .../submission/samples/REGULAR.xml | 60 + docs/platform/EEtMi3-X4AAt43v.png | Bin 0 -> 742994 bytes docs/platform/INCA/aztec_cheatsheet.pdf | Bin 0 -> 139330 bytes docs/platform/INCA/seedPhrase.txt | 1 + ...d_networks_-_why_is_this_so_dang_hard_.pdf | Bin 0 -> 169786 bytes .../MethodID_Parity_Contract_Registry.xlsx | Bin 0 -> 27130 bytes docs/platform/billoflading.svg | 83 + docs/platform/corporate-docs | 1 + docs/platform/drewry.yaml | 793 + docs/platform/esb-freight-trust.yaml | 3213 +++ .../freight-trust smi-spec master .github.zip | Bin 0 -> 1386 bytes .../ISSUE_TEMPLATE/proposal.md | 19 + .../ISSUE_TEMPLATE/question.md | 9 + .../workflows/main.yml | 19 + docs/platform/freight-trust-api.json | 4856 +++++ docs/platform/freight-trust-primitives.yaml | 1039 + docs/platform/icons/factory.svg | 17 + docs/platform/icons/factory.xml | 17 + docs/platform/raw.txt | 79 + docs/tos.md | 335 + docs/tradedocs/README.md | 54 + docs/tradedocs/documents.png | Bin 0 -> 724510 bytes docs/tradedocs/events.png | Bin 0 -> 109780 bytes docs/tradedocs/service-mesh.png | Bin 0 -> 371540 bytes docs/tradedocs/ts.png | Bin 0 -> 72303 bytes docs/tradedocs/vopen2.png | Bin 0 -> 217820 bytes mkdocs.yml | 30 +- node_modules/.bin/markdown-link-check | 1 - node_modules/.bin/marked | 1 - node_modules/.bin/sshpk-conv | 1 - node_modules/.bin/sshpk-sign | 1 - node_modules/.bin/sshpk-verify | 1 - node_modules/.bin/uuid | 1 - node_modules/ajv/.tonic_example.js | 20 - node_modules/ajv/LICENSE | 22 - node_modules/ajv/README.md | 1452 -- node_modules/ajv/dist/ajv.bundle.js | 7165 ------- node_modules/ajv/dist/ajv.min.js | 3 - node_modules/ajv/dist/ajv.min.js.map | 1 - node_modules/ajv/lib/ajv.d.ts | 395 - node_modules/ajv/lib/ajv.js | 506 - node_modules/ajv/lib/cache.js | 26 - node_modules/ajv/lib/compile/async.js | 90 - node_modules/ajv/lib/compile/equal.js | 5 - node_modules/ajv/lib/compile/error_classes.js | 34 - node_modules/ajv/lib/compile/formats.js | 142 - node_modules/ajv/lib/compile/index.js | 387 - node_modules/ajv/lib/compile/resolve.js | 270 - node_modules/ajv/lib/compile/rules.js | 66 - node_modules/ajv/lib/compile/schema_obj.js | 9 - node_modules/ajv/lib/compile/ucs2length.js | 20 - node_modules/ajv/lib/compile/util.js | 274 - node_modules/ajv/lib/data.js | 49 - node_modules/ajv/lib/definition_schema.js | 37 - node_modules/ajv/lib/dot/_limit.jst | 104 - node_modules/ajv/lib/dot/_limitItems.jst | 10 - node_modules/ajv/lib/dot/_limitLength.jst | 10 - node_modules/ajv/lib/dot/_limitProperties.jst | 10 - node_modules/ajv/lib/dot/allOf.jst | 34 - node_modules/ajv/lib/dot/anyOf.jst | 48 - node_modules/ajv/lib/dot/coerce.def | 61 - node_modules/ajv/lib/dot/comment.jst | 9 - node_modules/ajv/lib/dot/const.jst | 11 - node_modules/ajv/lib/dot/contains.jst | 57 - node_modules/ajv/lib/dot/custom.jst | 191 - node_modules/ajv/lib/dot/defaults.def | 47 - node_modules/ajv/lib/dot/definitions.def | 201 - node_modules/ajv/lib/dot/dependencies.jst | 80 - node_modules/ajv/lib/dot/enum.jst | 30 - node_modules/ajv/lib/dot/errors.def | 194 - node_modules/ajv/lib/dot/format.jst | 106 - node_modules/ajv/lib/dot/if.jst | 75 - node_modules/ajv/lib/dot/items.jst | 100 - node_modules/ajv/lib/dot/missing.def | 39 - node_modules/ajv/lib/dot/multipleOf.jst | 20 - node_modules/ajv/lib/dot/not.jst | 43 - node_modules/ajv/lib/dot/oneOf.jst | 54 - node_modules/ajv/lib/dot/pattern.jst | 14 - node_modules/ajv/lib/dot/properties.jst | 244 - node_modules/ajv/lib/dot/propertyNames.jst | 54 - node_modules/ajv/lib/dot/ref.jst | 85 - node_modules/ajv/lib/dot/required.jst | 108 - node_modules/ajv/lib/dot/uniqueItems.jst | 62 - node_modules/ajv/lib/dot/validate.jst | 282 - node_modules/ajv/lib/dotjs/README.md | 3 - node_modules/ajv/lib/dotjs/_limit.js | 157 - node_modules/ajv/lib/dotjs/_limitItems.js | 77 - node_modules/ajv/lib/dotjs/_limitLength.js | 82 - .../ajv/lib/dotjs/_limitProperties.js | 77 - node_modules/ajv/lib/dotjs/allOf.js | 43 - node_modules/ajv/lib/dotjs/anyOf.js | 74 - node_modules/ajv/lib/dotjs/comment.js | 14 - node_modules/ajv/lib/dotjs/const.js | 56 - node_modules/ajv/lib/dotjs/contains.js | 82 - node_modules/ajv/lib/dotjs/custom.js | 228 - node_modules/ajv/lib/dotjs/dependencies.js | 168 - node_modules/ajv/lib/dotjs/enum.js | 66 - node_modules/ajv/lib/dotjs/format.js | 150 - node_modules/ajv/lib/dotjs/if.js | 104 - node_modules/ajv/lib/dotjs/index.js | 33 - node_modules/ajv/lib/dotjs/items.js | 141 - node_modules/ajv/lib/dotjs/multipleOf.js | 77 - node_modules/ajv/lib/dotjs/not.js | 84 - node_modules/ajv/lib/dotjs/oneOf.js | 73 - node_modules/ajv/lib/dotjs/pattern.js | 75 - node_modules/ajv/lib/dotjs/properties.js | 330 - node_modules/ajv/lib/dotjs/propertyNames.js | 82 - node_modules/ajv/lib/dotjs/ref.js | 124 - node_modules/ajv/lib/dotjs/required.js | 270 - node_modules/ajv/lib/dotjs/uniqueItems.js | 86 - node_modules/ajv/lib/dotjs/validate.js | 494 - node_modules/ajv/lib/keyword.js | 146 - node_modules/ajv/lib/refs/data.json | 17 - .../ajv/lib/refs/json-schema-draft-04.json | 149 - .../ajv/lib/refs/json-schema-draft-06.json | 154 - .../ajv/lib/refs/json-schema-draft-07.json | 168 - .../ajv/lib/refs/json-schema-secure.json | 94 - node_modules/ajv/package.json | 129 - node_modules/ajv/scripts/.eslintrc.yml | 3 - node_modules/ajv/scripts/bundle.js | 61 - node_modules/ajv/scripts/compile-dots.js | 73 - node_modules/ajv/scripts/info | 10 - node_modules/ajv/scripts/prepare-tests | 12 - .../ajv/scripts/publish-built-version | 32 - node_modules/ajv/scripts/travis-gh-pages | 23 - node_modules/ansi-styles/index.js | 165 - node_modules/ansi-styles/license | 9 - node_modules/ansi-styles/package.json | 88 - node_modules/ansi-styles/readme.md | 147 - node_modules/asn1/LICENSE | 19 - node_modules/asn1/README.md | 50 - node_modules/asn1/lib/ber/errors.js | 13 - node_modules/asn1/lib/ber/index.js | 27 - node_modules/asn1/lib/ber/reader.js | 262 - node_modules/asn1/lib/ber/types.js | 36 - node_modules/asn1/lib/ber/writer.js | 317 - node_modules/asn1/lib/index.js | 20 - node_modules/asn1/package.json | 75 - node_modules/assert-plus/AUTHORS | 6 - node_modules/assert-plus/CHANGES.md | 14 - node_modules/assert-plus/README.md | 162 - node_modules/assert-plus/assert.js | 211 - node_modules/assert-plus/package.json | 87 - node_modules/async/CHANGELOG.md | 275 - node_modules/async/LICENSE | 19 - node_modules/async/README.md | 56 - node_modules/async/all.js | 50 - node_modules/async/allLimit.js | 42 - node_modules/async/allSeries.js | 37 - node_modules/async/any.js | 52 - node_modules/async/anyLimit.js | 43 - node_modules/async/anySeries.js | 38 - node_modules/async/apply.js | 68 - node_modules/async/applyEach.js | 51 - node_modules/async/applyEachSeries.js | 37 - node_modules/async/asyncify.js | 110 - node_modules/async/auto.js | 289 - node_modules/async/autoInject.js | 170 - node_modules/async/bower.json | 17 - node_modules/async/cargo.js | 94 - node_modules/async/compose.js | 58 - node_modules/async/concat.js | 43 - node_modules/async/concatLimit.js | 65 - node_modules/async/concatSeries.js | 36 - node_modules/async/constant.js | 66 - node_modules/async/detect.js | 61 - node_modules/async/detectLimit.js | 48 - node_modules/async/detectSeries.js | 38 - node_modules/async/dir.js | 43 - node_modules/async/dist/async.js | 5609 ----- node_modules/async/dist/async.min.js | 2 - node_modules/async/dist/async.min.map | 1 - node_modules/async/doDuring.js | 66 - node_modules/async/doUntil.js | 39 - node_modules/async/doWhilst.js | 59 - node_modules/async/during.js | 76 - node_modules/async/each.js | 82 - node_modules/async/eachLimit.js | 45 - node_modules/async/eachOf.js | 111 - node_modules/async/eachOfLimit.js | 41 - node_modules/async/eachOfSeries.js | 35 - node_modules/async/eachSeries.js | 37 - node_modules/async/ensureAsync.js | 73 - node_modules/async/every.js | 50 - node_modules/async/everyLimit.js | 42 - node_modules/async/everySeries.js | 37 - node_modules/async/filter.js | 45 - node_modules/async/filterLimit.js | 37 - node_modules/async/filterSeries.js | 35 - node_modules/async/find.js | 61 - node_modules/async/findLimit.js | 48 - node_modules/async/findSeries.js | 38 - node_modules/async/foldl.js | 78 - node_modules/async/foldr.js | 44 - node_modules/async/forEach.js | 82 - node_modules/async/forEachLimit.js | 45 - node_modules/async/forEachOf.js | 111 - node_modules/async/forEachOfLimit.js | 41 - node_modules/async/forEachOfSeries.js | 35 - node_modules/async/forEachSeries.js | 37 - node_modules/async/forever.js | 65 - node_modules/async/groupBy.js | 54 - node_modules/async/groupByLimit.js | 71 - node_modules/async/groupBySeries.js | 37 - node_modules/async/index.js | 582 - node_modules/async/inject.js | 78 - .../async/internal/DoublyLinkedList.js | 88 - node_modules/async/internal/applyEach.js | 38 - node_modules/async/internal/breakLoop.js | 9 - node_modules/async/internal/consoleFunc.js | 42 - node_modules/async/internal/createTester.js | 44 - node_modules/async/internal/doLimit.js | 12 - node_modules/async/internal/doParallel.js | 23 - .../async/internal/doParallelLimit.js | 23 - node_modules/async/internal/eachOfLimit.js | 74 - node_modules/async/internal/filter.js | 75 - node_modules/async/internal/findGetResult.js | 10 - node_modules/async/internal/getIterator.js | 13 - node_modules/async/internal/initialParams.js | 21 - node_modules/async/internal/iterator.js | 58 - node_modules/async/internal/map.js | 35 - node_modules/async/internal/notId.js | 10 - node_modules/async/internal/once.js | 15 - node_modules/async/internal/onlyOnce.js | 15 - node_modules/async/internal/parallel.js | 42 - node_modules/async/internal/queue.js | 204 - node_modules/async/internal/reject.js | 21 - node_modules/async/internal/setImmediate.js | 42 - node_modules/async/internal/slice.js | 16 - node_modules/async/internal/withoutIndex.js | 12 - node_modules/async/internal/wrapAsync.js | 25 - node_modules/async/log.js | 41 - node_modules/async/map.js | 54 - node_modules/async/mapLimit.js | 37 - node_modules/async/mapSeries.js | 36 - node_modules/async/mapValues.js | 63 - node_modules/async/mapValuesLimit.js | 61 - node_modules/async/mapValuesSeries.js | 37 - node_modules/async/memoize.js | 101 - node_modules/async/nextTick.js | 51 - node_modules/async/package.json | 107 - node_modules/async/parallel.js | 90 - node_modules/async/parallelLimit.js | 40 - node_modules/async/priorityQueue.js | 98 - node_modules/async/queue.js | 130 - node_modules/async/race.js | 70 - node_modules/async/reduce.js | 78 - node_modules/async/reduceRight.js | 44 - node_modules/async/reflect.js | 81 - node_modules/async/reflectAll.js | 105 - node_modules/async/reject.js | 45 - node_modules/async/rejectLimit.js | 37 - node_modules/async/rejectSeries.js | 35 - node_modules/async/retry.js | 156 - node_modules/async/retryable.js | 65 - node_modules/async/select.js | 45 - node_modules/async/selectLimit.js | 37 - node_modules/async/selectSeries.js | 35 - node_modules/async/seq.js | 91 - node_modules/async/series.js | 85 - node_modules/async/setImmediate.js | 45 - node_modules/async/some.js | 52 - node_modules/async/someLimit.js | 43 - node_modules/async/someSeries.js | 38 - node_modules/async/sortBy.js | 91 - node_modules/async/timeout.js | 89 - node_modules/async/times.js | 50 - node_modules/async/timesLimit.js | 42 - node_modules/async/timesSeries.js | 32 - node_modules/async/transform.js | 87 - node_modules/async/tryEach.js | 81 - node_modules/async/unmemoize.js | 25 - node_modules/async/until.js | 41 - node_modules/async/waterfall.js | 113 - node_modules/async/whilst.js | 72 - node_modules/async/wrapSync.js | 110 - node_modules/asynckit/LICENSE | 21 - node_modules/asynckit/README.md | 233 - node_modules/asynckit/bench.js | 76 - node_modules/asynckit/index.js | 6 - node_modules/asynckit/lib/abort.js | 29 - node_modules/asynckit/lib/async.js | 34 - node_modules/asynckit/lib/defer.js | 26 - node_modules/asynckit/lib/iterate.js | 75 - .../asynckit/lib/readable_asynckit.js | 91 - .../asynckit/lib/readable_parallel.js | 25 - node_modules/asynckit/lib/readable_serial.js | 25 - .../asynckit/lib/readable_serial_ordered.js | 29 - node_modules/asynckit/lib/state.js | 37 - node_modules/asynckit/lib/streamify.js | 141 - node_modules/asynckit/lib/terminator.js | 29 - node_modules/asynckit/package.json | 91 - node_modules/asynckit/parallel.js | 43 - node_modules/asynckit/serial.js | 17 - node_modules/asynckit/serialOrdered.js | 75 - node_modules/asynckit/stream.js | 21 - node_modules/aws-sign2/LICENSE | 55 - node_modules/aws-sign2/README.md | 4 - node_modules/aws-sign2/index.js | 212 - node_modules/aws-sign2/package.json | 50 - node_modules/aws4/.travis.yml | 9 - node_modules/aws4/LICENSE | 19 - node_modules/aws4/README.md | 174 - node_modules/aws4/aws4.js | 357 - node_modules/aws4/lru.js | 96 - node_modules/aws4/package.json | 53 - node_modules/bcrypt-pbkdf/CONTRIBUTING.md | 13 - node_modules/bcrypt-pbkdf/LICENSE | 66 - node_modules/bcrypt-pbkdf/README.md | 45 - node_modules/bcrypt-pbkdf/index.js | 556 - node_modules/bcrypt-pbkdf/package.json | 44 - node_modules/caseless/LICENSE | 28 - node_modules/caseless/README.md | 45 - node_modules/caseless/index.js | 67 - node_modules/caseless/package.json | 56 - node_modules/caseless/test.js | 67 - node_modules/chalk/index.js | 228 - node_modules/chalk/index.js.flow | 93 - node_modules/chalk/license | 9 - node_modules/chalk/package.json | 103 - node_modules/chalk/readme.md | 314 - node_modules/chalk/templates.js | 128 - node_modules/chalk/types/index.d.ts | 97 - node_modules/color-convert/CHANGELOG.md | 54 - node_modules/color-convert/LICENSE | 21 - node_modules/color-convert/README.md | 68 - node_modules/color-convert/conversions.js | 868 - node_modules/color-convert/index.js | 78 - node_modules/color-convert/package.json | 81 - node_modules/color-convert/route.js | 97 - node_modules/color-name/.eslintrc.json | 43 - node_modules/color-name/.npmignore | 107 - node_modules/color-name/LICENSE | 8 - node_modules/color-name/README.md | 11 - node_modules/color-name/index.js | 152 - node_modules/color-name/package.json | 53 - node_modules/color-name/test.js | 7 - node_modules/combined-stream/License | 19 - node_modules/combined-stream/Readme.md | 138 - .../combined-stream/lib/combined_stream.js | 208 - node_modules/combined-stream/package.json | 58 - node_modules/combined-stream/yarn.lock | 17 - node_modules/commander/CHANGELOG.md | 419 - node_modules/commander/LICENSE | 22 - node_modules/commander/Readme.md | 428 - node_modules/commander/index.js | 1224 -- node_modules/commander/package.json | 70 - node_modules/commander/typings/index.d.ts | 310 - node_modules/core-util-is/LICENSE | 19 - node_modules/core-util-is/README.md | 3 - node_modules/core-util-is/float.patch | 604 - node_modules/core-util-is/lib/util.js | 107 - node_modules/core-util-is/package.json | 62 - node_modules/core-util-is/test.js | 68 - node_modules/dashdash/CHANGES.md | 364 - node_modules/dashdash/LICENSE.txt | 24 - node_modules/dashdash/README.md | 574 - .../dashdash/etc/dashdash.bash_completion.in | 389 - node_modules/dashdash/lib/dashdash.js | 1055 - node_modules/dashdash/package.json | 67 - node_modules/delayed-stream/.npmignore | 1 - node_modules/delayed-stream/License | 19 - node_modules/delayed-stream/Makefile | 7 - node_modules/delayed-stream/Readme.md | 141 - .../delayed-stream/lib/delayed_stream.js | 107 - node_modules/delayed-stream/package.json | 62 - node_modules/ecc-jsbn/LICENSE | 21 - node_modules/ecc-jsbn/README.md | 8 - node_modules/ecc-jsbn/index.js | 58 - node_modules/ecc-jsbn/lib/LICENSE-jsbn | 40 - node_modules/ecc-jsbn/lib/ec.js | 561 - node_modules/ecc-jsbn/lib/sec.js | 170 - node_modules/ecc-jsbn/package.json | 65 - node_modules/ecc-jsbn/test.js | 14 - node_modules/escape-string-regexp/index.js | 11 - node_modules/escape-string-regexp/license | 21 - .../escape-string-regexp/package.json | 81 - node_modules/escape-string-regexp/readme.md | 27 - node_modules/extend/.editorconfig | 20 - node_modules/extend/.eslintrc | 17 - node_modules/extend/.jscs.json | 175 - node_modules/extend/.travis.yml | 230 - node_modules/extend/CHANGELOG.md | 83 - node_modules/extend/LICENSE | 23 - node_modules/extend/README.md | 81 - node_modules/extend/component.json | 32 - node_modules/extend/index.js | 117 - node_modules/extend/package.json | 75 - node_modules/extsprintf/.gitmodules | 0 node_modules/extsprintf/.npmignore | 2 - node_modules/extsprintf/LICENSE | 19 - node_modules/extsprintf/Makefile | 24 - node_modules/extsprintf/Makefile.targ | 285 - node_modules/extsprintf/README.md | 46 - node_modules/extsprintf/jsl.node.conf | 137 - node_modules/extsprintf/lib/extsprintf.js | 183 - node_modules/extsprintf/package.json | 44 - node_modules/fast-deep-equal/LICENSE | 21 - node_modules/fast-deep-equal/README.md | 96 - node_modules/fast-deep-equal/es6/index.d.ts | 2 - node_modules/fast-deep-equal/es6/index.js | 72 - node_modules/fast-deep-equal/es6/react.d.ts | 2 - node_modules/fast-deep-equal/es6/react.js | 79 - node_modules/fast-deep-equal/index.d.ts | 4 - node_modules/fast-deep-equal/index.js | 46 - node_modules/fast-deep-equal/package.json | 88 - node_modules/fast-deep-equal/react.d.ts | 2 - node_modules/fast-deep-equal/react.js | 53 - .../fast-json-stable-stringify/.eslintrc.yml | 26 - .../.github/FUNDING.yml | 1 - .../fast-json-stable-stringify/.travis.yml | 8 - .../fast-json-stable-stringify/LICENSE | 21 - .../fast-json-stable-stringify/README.md | 131 - .../benchmark/index.js | 31 - .../benchmark/test.json | 137 - .../example/key_cmp.js | 7 - .../example/nested.js | 3 - .../fast-json-stable-stringify/example/str.js | 3 - .../example/value_cmp.js | 7 - .../fast-json-stable-stringify/index.d.ts | 4 - .../fast-json-stable-stringify/index.js | 59 - .../fast-json-stable-stringify/package.json | 80 - .../fast-json-stable-stringify/test/cmp.js | 13 - .../fast-json-stable-stringify/test/nested.js | 44 - .../fast-json-stable-stringify/test/str.js | 46 - .../test/to-json.js | 22 - node_modules/forever-agent/LICENSE | 55 - node_modules/forever-agent/README.md | 4 - node_modules/forever-agent/index.js | 138 - node_modules/forever-agent/package.json | 50 - node_modules/form-data/License | 19 - node_modules/form-data/README.md | 234 - node_modules/form-data/README.md.bak | 234 - node_modules/form-data/lib/browser.js | 2 - node_modules/form-data/lib/form_data.js | 457 - node_modules/form-data/lib/populate.js | 10 - node_modules/form-data/package.json | 98 - node_modules/form-data/yarn.lock | 2662 --- node_modules/getpass/.npmignore | 8 - node_modules/getpass/.travis.yml | 9 - node_modules/getpass/LICENSE | 18 - node_modules/getpass/README.md | 32 - node_modules/getpass/lib/index.js | 123 - node_modules/getpass/package.json | 50 - node_modules/har-schema/LICENSE | 13 - node_modules/har-schema/README.md | 49 - node_modules/har-schema/lib/afterRequest.json | 30 - .../har-schema/lib/beforeRequest.json | 30 - node_modules/har-schema/lib/browser.json | 20 - node_modules/har-schema/lib/cache.json | 21 - node_modules/har-schema/lib/content.json | 29 - node_modules/har-schema/lib/cookie.json | 36 - node_modules/har-schema/lib/creator.json | 20 - node_modules/har-schema/lib/entry.json | 53 - node_modules/har-schema/lib/har.json | 13 - node_modules/har-schema/lib/header.json | 20 - node_modules/har-schema/lib/index.js | 22 - node_modules/har-schema/lib/log.json | 36 - node_modules/har-schema/lib/page.json | 32 - node_modules/har-schema/lib/pageTimings.json | 18 - node_modules/har-schema/lib/postData.json | 43 - node_modules/har-schema/lib/query.json | 20 - node_modules/har-schema/lib/request.json | 57 - node_modules/har-schema/lib/response.json | 54 - node_modules/har-schema/lib/timings.json | 42 - node_modules/har-schema/package.json | 86 - node_modules/har-validator/LICENSE | 9 - node_modules/har-validator/README.md | 37 - node_modules/har-validator/lib/async.js | 105 - node_modules/har-validator/lib/error.js | 17 - node_modules/har-validator/lib/promise.js | 102 - node_modules/har-validator/package.json | 76 - node_modules/has-flag/index.js | 8 - node_modules/has-flag/license | 9 - node_modules/has-flag/package.json | 76 - node_modules/has-flag/readme.md | 70 - node_modules/http-signature/.dir-locals.el | 6 - node_modules/http-signature/.npmignore | 7 - node_modules/http-signature/CHANGES.md | 46 - node_modules/http-signature/LICENSE | 18 - node_modules/http-signature/README.md | 79 - node_modules/http-signature/http_signing.md | 363 - node_modules/http-signature/lib/index.js | 29 - node_modules/http-signature/lib/parser.js | 315 - node_modules/http-signature/lib/signer.js | 401 - node_modules/http-signature/lib/utils.js | 112 - node_modules/http-signature/lib/verify.js | 88 - node_modules/http-signature/package.json | 77 - node_modules/is-absolute-url/index.d.ts | 22 - node_modules/is-absolute-url/index.js | 16 - node_modules/is-absolute-url/license | 9 - node_modules/is-absolute-url/package.json | 67 - node_modules/is-absolute-url/readme.md | 44 - node_modules/is-relative-url/index.d.ts | 22 - node_modules/is-relative-url/index.js | 4 - node_modules/is-relative-url/license | 9 - node_modules/is-relative-url/package.json | 70 - node_modules/is-relative-url/readme.md | 36 - node_modules/is-typedarray/LICENSE.md | 18 - node_modules/is-typedarray/README.md | 16 - node_modules/is-typedarray/index.js | 41 - node_modules/is-typedarray/package.json | 59 - node_modules/is-typedarray/test.js | 34 - node_modules/isemail/LICENSE | 32 - node_modules/isemail/README.md | 84 - node_modules/isemail/lib/index.d.ts | 64 - node_modules/isemail/lib/index.js | 1499 -- node_modules/isemail/package.json | 68 - node_modules/isstream/.jshintrc | 59 - node_modules/isstream/.npmignore | 1 - node_modules/isstream/.travis.yml | 12 - node_modules/isstream/LICENSE.md | 11 - node_modules/isstream/README.md | 66 - node_modules/isstream/isstream.js | 27 - node_modules/isstream/package.json | 61 - node_modules/isstream/test.js | 168 - node_modules/jsbn/.npmignore | 2 - node_modules/jsbn/LICENSE | 40 - node_modules/jsbn/README.md | 175 - node_modules/jsbn/example.html | 12 - node_modules/jsbn/example.js | 3 - node_modules/jsbn/index.js | 1357 -- node_modules/jsbn/package.json | 53 - .../json-schema-traverse/.eslintrc.yml | 27 - node_modules/json-schema-traverse/.travis.yml | 8 - node_modules/json-schema-traverse/LICENSE | 21 - node_modules/json-schema-traverse/README.md | 83 - node_modules/json-schema-traverse/index.js | 89 - .../json-schema-traverse/package.json | 70 - .../json-schema-traverse/spec/.eslintrc.yml | 6 - .../spec/fixtures/schema.js | 125 - .../json-schema-traverse/spec/index.spec.js | 171 - node_modules/json-schema/README.md | 5 - .../json-schema/draft-00/hyper-schema | 68 - node_modules/json-schema/draft-00/json-ref | 26 - node_modules/json-schema/draft-00/links | 33 - node_modules/json-schema/draft-00/schema | 155 - .../json-schema/draft-01/hyper-schema | 68 - node_modules/json-schema/draft-01/json-ref | 26 - node_modules/json-schema/draft-01/links | 33 - node_modules/json-schema/draft-01/schema | 155 - .../json-schema/draft-02/hyper-schema | 68 - node_modules/json-schema/draft-02/json-ref | 26 - node_modules/json-schema/draft-02/links | 35 - node_modules/json-schema/draft-02/schema | 166 - .../json-schema/draft-03/examples/address | 20 - .../json-schema/draft-03/examples/calendar | 53 - .../json-schema/draft-03/examples/card | 105 - .../json-schema/draft-03/examples/geo | 8 - .../json-schema/draft-03/examples/interfaces | 23 - .../json-schema/draft-03/hyper-schema | 60 - node_modules/json-schema/draft-03/json-ref | 26 - node_modules/json-schema/draft-03/links | 35 - node_modules/json-schema/draft-03/schema | 174 - .../json-schema/draft-04/hyper-schema | 60 - node_modules/json-schema/draft-04/links | 41 - node_modules/json-schema/draft-04/schema | 189 - .../json-schema/draft-zyp-json-schema-03.xml | 1120 - .../json-schema/draft-zyp-json-schema-04.xml | 1072 - node_modules/json-schema/lib/links.js | 66 - node_modules/json-schema/lib/validate.js | 273 - node_modules/json-schema/package.json | 71 - node_modules/json-schema/test/tests.js | 95 - node_modules/json-stringify-safe/.npmignore | 1 - node_modules/json-stringify-safe/CHANGELOG.md | 14 - node_modules/json-stringify-safe/LICENSE | 15 - node_modules/json-stringify-safe/Makefile | 35 - node_modules/json-stringify-safe/README.md | 52 - node_modules/json-stringify-safe/package.json | 66 - node_modules/json-stringify-safe/stringify.js | 27 - .../json-stringify-safe/test/mocha.opts | 2 - .../test/stringify_test.js | 246 - node_modules/jsprim/CHANGES.md | 49 - node_modules/jsprim/CONTRIBUTING.md | 19 - node_modules/jsprim/LICENSE | 19 - node_modules/jsprim/README.md | 287 - node_modules/jsprim/lib/jsprim.js | 735 - node_modules/jsprim/package.json | 49 - node_modules/link-check/.travis.yml | 5 - node_modules/link-check/CHANGELOG.md | 20 - node_modules/link-check/CONTRIBUTING.md | 8 - node_modules/link-check/LICENSE.md | 13 - node_modules/link-check/README.md | 80 - node_modules/link-check/index.js | 31 - node_modules/link-check/lib/BlackHole.js | 14 - .../link-check/lib/LinkCheckResult.js | 14 - node_modules/link-check/lib/proto/file.js | 21 - node_modules/link-check/lib/proto/http.js | 74 - node_modules/link-check/lib/proto/https.js | 3 - node_modules/link-check/lib/proto/mailto.js | 18 - node_modules/link-check/package.json | 99 - node_modules/link-check/test/fixtures/file.md | 3 - .../link-check/test/fixtures/s p a c e/A.md | 1 - .../link-check/test/link-check.test.js | 339 - node_modules/lodash/LICENSE | 47 - node_modules/lodash/README.md | 39 - node_modules/lodash/_DataView.js | 7 - node_modules/lodash/_Hash.js | 32 - node_modules/lodash/_LazyWrapper.js | 28 - node_modules/lodash/_ListCache.js | 32 - node_modules/lodash/_LodashWrapper.js | 22 - node_modules/lodash/_Map.js | 7 - node_modules/lodash/_MapCache.js | 32 - node_modules/lodash/_Promise.js | 7 - node_modules/lodash/_Set.js | 7 - node_modules/lodash/_SetCache.js | 27 - node_modules/lodash/_Stack.js | 27 - node_modules/lodash/_Symbol.js | 6 - node_modules/lodash/_Uint8Array.js | 6 - node_modules/lodash/_WeakMap.js | 7 - node_modules/lodash/_apply.js | 21 - node_modules/lodash/_arrayAggregator.js | 22 - node_modules/lodash/_arrayEach.js | 22 - node_modules/lodash/_arrayEachRight.js | 21 - node_modules/lodash/_arrayEvery.js | 23 - node_modules/lodash/_arrayFilter.js | 25 - node_modules/lodash/_arrayIncludes.js | 17 - node_modules/lodash/_arrayIncludesWith.js | 22 - node_modules/lodash/_arrayLikeKeys.js | 49 - node_modules/lodash/_arrayMap.js | 21 - node_modules/lodash/_arrayPush.js | 20 - node_modules/lodash/_arrayReduce.js | 26 - node_modules/lodash/_arrayReduceRight.js | 24 - node_modules/lodash/_arraySample.js | 15 - node_modules/lodash/_arraySampleSize.js | 17 - node_modules/lodash/_arrayShuffle.js | 15 - node_modules/lodash/_arraySome.js | 23 - node_modules/lodash/_asciiSize.js | 12 - node_modules/lodash/_asciiToArray.js | 12 - node_modules/lodash/_asciiWords.js | 15 - node_modules/lodash/_assignMergeValue.js | 20 - node_modules/lodash/_assignValue.js | 28 - node_modules/lodash/_assocIndexOf.js | 21 - node_modules/lodash/_baseAggregator.js | 21 - node_modules/lodash/_baseAssign.js | 17 - node_modules/lodash/_baseAssignIn.js | 17 - node_modules/lodash/_baseAssignValue.js | 25 - node_modules/lodash/_baseAt.js | 23 - node_modules/lodash/_baseClamp.js | 22 - node_modules/lodash/_baseClone.js | 165 - node_modules/lodash/_baseConforms.js | 18 - node_modules/lodash/_baseConformsTo.js | 27 - node_modules/lodash/_baseCreate.js | 30 - node_modules/lodash/_baseDelay.js | 21 - node_modules/lodash/_baseDifference.js | 67 - node_modules/lodash/_baseEach.js | 14 - node_modules/lodash/_baseEachRight.js | 14 - node_modules/lodash/_baseEvery.js | 21 - node_modules/lodash/_baseExtremum.js | 32 - node_modules/lodash/_baseFill.js | 32 - node_modules/lodash/_baseFilter.js | 21 - node_modules/lodash/_baseFindIndex.js | 24 - node_modules/lodash/_baseFindKey.js | 23 - node_modules/lodash/_baseFlatten.js | 38 - node_modules/lodash/_baseFor.js | 16 - node_modules/lodash/_baseForOwn.js | 16 - node_modules/lodash/_baseForOwnRight.js | 16 - node_modules/lodash/_baseForRight.js | 15 - node_modules/lodash/_baseFunctions.js | 19 - node_modules/lodash/_baseGet.js | 24 - node_modules/lodash/_baseGetAllKeys.js | 20 - node_modules/lodash/_baseGetTag.js | 28 - node_modules/lodash/_baseGt.js | 14 - node_modules/lodash/_baseHas.js | 19 - node_modules/lodash/_baseHasIn.js | 13 - node_modules/lodash/_baseInRange.js | 18 - node_modules/lodash/_baseIndexOf.js | 20 - node_modules/lodash/_baseIndexOfWith.js | 23 - node_modules/lodash/_baseIntersection.js | 74 - node_modules/lodash/_baseInverter.js | 21 - node_modules/lodash/_baseInvoke.js | 24 - node_modules/lodash/_baseIsArguments.js | 18 - node_modules/lodash/_baseIsArrayBuffer.js | 17 - node_modules/lodash/_baseIsDate.js | 18 - node_modules/lodash/_baseIsEqual.js | 28 - node_modules/lodash/_baseIsEqualDeep.js | 83 - node_modules/lodash/_baseIsMap.js | 18 - node_modules/lodash/_baseIsMatch.js | 62 - node_modules/lodash/_baseIsNaN.js | 12 - node_modules/lodash/_baseIsNative.js | 47 - node_modules/lodash/_baseIsRegExp.js | 18 - node_modules/lodash/_baseIsSet.js | 18 - node_modules/lodash/_baseIsTypedArray.js | 60 - node_modules/lodash/_baseIteratee.js | 31 - node_modules/lodash/_baseKeys.js | 30 - node_modules/lodash/_baseKeysIn.js | 33 - node_modules/lodash/_baseLodash.js | 10 - node_modules/lodash/_baseLt.js | 14 - node_modules/lodash/_baseMap.js | 22 - node_modules/lodash/_baseMatches.js | 22 - node_modules/lodash/_baseMatchesProperty.js | 33 - node_modules/lodash/_baseMean.js | 20 - node_modules/lodash/_baseMerge.js | 42 - node_modules/lodash/_baseMergeDeep.js | 94 - node_modules/lodash/_baseNth.js | 20 - node_modules/lodash/_baseOrderBy.js | 34 - node_modules/lodash/_basePick.js | 19 - node_modules/lodash/_basePickBy.js | 30 - node_modules/lodash/_baseProperty.js | 14 - node_modules/lodash/_basePropertyDeep.js | 16 - node_modules/lodash/_basePropertyOf.js | 14 - node_modules/lodash/_basePullAll.js | 51 - node_modules/lodash/_basePullAt.js | 37 - node_modules/lodash/_baseRandom.js | 18 - node_modules/lodash/_baseRange.js | 28 - node_modules/lodash/_baseReduce.js | 23 - node_modules/lodash/_baseRepeat.js | 35 - node_modules/lodash/_baseRest.js | 17 - node_modules/lodash/_baseSample.js | 15 - node_modules/lodash/_baseSampleSize.js | 18 - node_modules/lodash/_baseSet.js | 47 - node_modules/lodash/_baseSetData.js | 17 - node_modules/lodash/_baseSetToString.js | 22 - node_modules/lodash/_baseShuffle.js | 15 - node_modules/lodash/_baseSlice.js | 31 - node_modules/lodash/_baseSome.js | 22 - node_modules/lodash/_baseSortBy.js | 21 - node_modules/lodash/_baseSortedIndex.js | 42 - node_modules/lodash/_baseSortedIndexBy.js | 64 - node_modules/lodash/_baseSortedUniq.js | 30 - node_modules/lodash/_baseSum.js | 24 - node_modules/lodash/_baseTimes.js | 20 - node_modules/lodash/_baseToNumber.js | 24 - node_modules/lodash/_baseToPairs.js | 18 - node_modules/lodash/_baseToString.js | 37 - node_modules/lodash/_baseUnary.js | 14 - node_modules/lodash/_baseUniq.js | 72 - node_modules/lodash/_baseUnset.js | 20 - node_modules/lodash/_baseUpdate.js | 18 - node_modules/lodash/_baseValues.js | 19 - node_modules/lodash/_baseWhile.js | 26 - node_modules/lodash/_baseWrapperValue.js | 25 - node_modules/lodash/_baseXor.js | 36 - node_modules/lodash/_baseZipObject.js | 23 - node_modules/lodash/_cacheHas.js | 13 - node_modules/lodash/_castArrayLikeObject.js | 14 - node_modules/lodash/_castFunction.js | 14 - node_modules/lodash/_castPath.js | 21 - node_modules/lodash/_castRest.js | 14 - node_modules/lodash/_castSlice.js | 18 - node_modules/lodash/_charsEndIndex.js | 19 - node_modules/lodash/_charsStartIndex.js | 20 - node_modules/lodash/_cloneArrayBuffer.js | 16 - node_modules/lodash/_cloneBuffer.js | 35 - node_modules/lodash/_cloneDataView.js | 16 - node_modules/lodash/_cloneRegExp.js | 17 - node_modules/lodash/_cloneSymbol.js | 18 - node_modules/lodash/_cloneTypedArray.js | 16 - node_modules/lodash/_compareAscending.js | 41 - node_modules/lodash/_compareMultiple.js | 44 - node_modules/lodash/_composeArgs.js | 39 - node_modules/lodash/_composeArgsRight.js | 41 - node_modules/lodash/_copyArray.js | 20 - node_modules/lodash/_copyObject.js | 40 - node_modules/lodash/_copySymbols.js | 16 - node_modules/lodash/_copySymbolsIn.js | 16 - node_modules/lodash/_coreJsData.js | 6 - node_modules/lodash/_countHolders.js | 21 - node_modules/lodash/_createAggregator.js | 23 - node_modules/lodash/_createAssigner.js | 37 - node_modules/lodash/_createBaseEach.js | 32 - node_modules/lodash/_createBaseFor.js | 25 - node_modules/lodash/_createBind.js | 28 - node_modules/lodash/_createCaseFirst.js | 33 - node_modules/lodash/_createCompounder.js | 24 - node_modules/lodash/_createCtor.js | 37 - node_modules/lodash/_createCurry.js | 46 - node_modules/lodash/_createFind.js | 25 - node_modules/lodash/_createFlow.js | 78 - node_modules/lodash/_createHybrid.js | 92 - node_modules/lodash/_createInverter.js | 17 - node_modules/lodash/_createMathOperation.js | 38 - node_modules/lodash/_createOver.js | 27 - node_modules/lodash/_createPadding.js | 33 - node_modules/lodash/_createPartial.js | 43 - node_modules/lodash/_createRange.js | 30 - node_modules/lodash/_createRecurry.js | 56 - .../lodash/_createRelationalOperation.js | 20 - node_modules/lodash/_createRound.js | 35 - node_modules/lodash/_createSet.js | 19 - node_modules/lodash/_createToPairs.js | 30 - node_modules/lodash/_createWrap.js | 106 - .../lodash/_customDefaultsAssignIn.js | 29 - node_modules/lodash/_customDefaultsMerge.js | 28 - node_modules/lodash/_customOmitClone.js | 16 - node_modules/lodash/_deburrLetter.js | 71 - node_modules/lodash/_defineProperty.js | 11 - node_modules/lodash/_equalArrays.js | 83 - node_modules/lodash/_equalByTag.js | 112 - node_modules/lodash/_equalObjects.js | 89 - node_modules/lodash/_escapeHtmlChar.js | 21 - node_modules/lodash/_escapeStringChar.js | 22 - node_modules/lodash/_flatRest.js | 16 - node_modules/lodash/_freeGlobal.js | 4 - node_modules/lodash/_getAllKeys.js | 16 - node_modules/lodash/_getAllKeysIn.js | 17 - node_modules/lodash/_getData.js | 15 - node_modules/lodash/_getFuncName.js | 31 - node_modules/lodash/_getHolder.js | 13 - node_modules/lodash/_getMapData.js | 18 - node_modules/lodash/_getMatchData.js | 24 - node_modules/lodash/_getNative.js | 17 - node_modules/lodash/_getPrototype.js | 6 - node_modules/lodash/_getRawTag.js | 46 - node_modules/lodash/_getSymbols.js | 30 - node_modules/lodash/_getSymbolsIn.js | 25 - node_modules/lodash/_getTag.js | 58 - node_modules/lodash/_getValue.js | 13 - node_modules/lodash/_getView.js | 33 - node_modules/lodash/_getWrapDetails.js | 17 - node_modules/lodash/_hasPath.js | 39 - node_modules/lodash/_hasUnicode.js | 26 - node_modules/lodash/_hasUnicodeWord.js | 15 - node_modules/lodash/_hashClear.js | 15 - node_modules/lodash/_hashDelete.js | 17 - node_modules/lodash/_hashGet.js | 30 - node_modules/lodash/_hashHas.js | 23 - node_modules/lodash/_hashSet.js | 23 - node_modules/lodash/_initCloneArray.js | 26 - node_modules/lodash/_initCloneByTag.js | 77 - node_modules/lodash/_initCloneObject.js | 18 - node_modules/lodash/_insertWrapDetails.js | 23 - node_modules/lodash/_isFlattenable.js | 20 - node_modules/lodash/_isIndex.js | 25 - node_modules/lodash/_isIterateeCall.js | 30 - node_modules/lodash/_isKey.js | 29 - node_modules/lodash/_isKeyable.js | 15 - node_modules/lodash/_isLaziable.js | 28 - node_modules/lodash/_isMaskable.js | 14 - node_modules/lodash/_isMasked.js | 20 - node_modules/lodash/_isPrototype.js | 18 - node_modules/lodash/_isStrictComparable.js | 15 - node_modules/lodash/_iteratorToArray.js | 18 - node_modules/lodash/_lazyClone.js | 23 - node_modules/lodash/_lazyReverse.js | 23 - node_modules/lodash/_lazyValue.js | 69 - node_modules/lodash/_listCacheClear.js | 13 - node_modules/lodash/_listCacheDelete.js | 35 - node_modules/lodash/_listCacheGet.js | 19 - node_modules/lodash/_listCacheHas.js | 16 - node_modules/lodash/_listCacheSet.js | 26 - node_modules/lodash/_mapCacheClear.js | 21 - node_modules/lodash/_mapCacheDelete.js | 18 - node_modules/lodash/_mapCacheGet.js | 16 - node_modules/lodash/_mapCacheHas.js | 16 - node_modules/lodash/_mapCacheSet.js | 22 - node_modules/lodash/_mapToArray.js | 18 - .../lodash/_matchesStrictComparable.js | 20 - node_modules/lodash/_memoizeCapped.js | 26 - node_modules/lodash/_mergeData.js | 90 - node_modules/lodash/_metaMap.js | 6 - node_modules/lodash/_nativeCreate.js | 6 - node_modules/lodash/_nativeKeys.js | 6 - node_modules/lodash/_nativeKeysIn.js | 20 - node_modules/lodash/_nodeUtil.js | 30 - node_modules/lodash/_objectToString.js | 22 - node_modules/lodash/_overArg.js | 15 - node_modules/lodash/_overRest.js | 36 - node_modules/lodash/_parent.js | 16 - node_modules/lodash/_reEscape.js | 4 - node_modules/lodash/_reEvaluate.js | 4 - node_modules/lodash/_reInterpolate.js | 4 - node_modules/lodash/_realNames.js | 4 - node_modules/lodash/_reorder.js | 29 - node_modules/lodash/_replaceHolders.js | 29 - node_modules/lodash/_root.js | 9 - node_modules/lodash/_safeGet.js | 21 - node_modules/lodash/_setCacheAdd.js | 19 - node_modules/lodash/_setCacheHas.js | 14 - node_modules/lodash/_setData.js | 20 - node_modules/lodash/_setToArray.js | 18 - node_modules/lodash/_setToPairs.js | 18 - node_modules/lodash/_setToString.js | 14 - node_modules/lodash/_setWrapToString.js | 21 - node_modules/lodash/_shortOut.js | 37 - node_modules/lodash/_shuffleSelf.js | 28 - node_modules/lodash/_stackClear.js | 15 - node_modules/lodash/_stackDelete.js | 18 - node_modules/lodash/_stackGet.js | 14 - node_modules/lodash/_stackHas.js | 14 - node_modules/lodash/_stackSet.js | 34 - node_modules/lodash/_strictIndexOf.js | 23 - node_modules/lodash/_strictLastIndexOf.js | 21 - node_modules/lodash/_stringSize.js | 18 - node_modules/lodash/_stringToArray.js | 18 - node_modules/lodash/_stringToPath.js | 27 - node_modules/lodash/_toKey.js | 21 - node_modules/lodash/_toSource.js | 26 - node_modules/lodash/_unescapeHtmlChar.js | 21 - node_modules/lodash/_unicodeSize.js | 44 - node_modules/lodash/_unicodeToArray.js | 40 - node_modules/lodash/_unicodeWords.js | 69 - node_modules/lodash/_updateWrapDetails.js | 46 - node_modules/lodash/_wrapperClone.js | 23 - node_modules/lodash/add.js | 22 - node_modules/lodash/after.js | 42 - node_modules/lodash/array.js | 67 - node_modules/lodash/ary.js | 29 - node_modules/lodash/assign.js | 58 - node_modules/lodash/assignIn.js | 40 - node_modules/lodash/assignInWith.js | 38 - node_modules/lodash/assignWith.js | 37 - node_modules/lodash/at.js | 23 - node_modules/lodash/attempt.js | 35 - node_modules/lodash/before.js | 40 - node_modules/lodash/bind.js | 57 - node_modules/lodash/bindAll.js | 41 - node_modules/lodash/bindKey.js | 68 - node_modules/lodash/camelCase.js | 29 - node_modules/lodash/capitalize.js | 23 - node_modules/lodash/castArray.js | 44 - node_modules/lodash/ceil.js | 26 - node_modules/lodash/chain.js | 38 - node_modules/lodash/chunk.js | 50 - node_modules/lodash/clamp.js | 39 - node_modules/lodash/clone.js | 36 - node_modules/lodash/cloneDeep.js | 29 - node_modules/lodash/cloneDeepWith.js | 40 - node_modules/lodash/cloneWith.js | 42 - node_modules/lodash/collection.js | 30 - node_modules/lodash/commit.js | 33 - node_modules/lodash/compact.js | 31 - node_modules/lodash/concat.js | 43 - node_modules/lodash/cond.js | 60 - node_modules/lodash/conforms.js | 35 - node_modules/lodash/conformsTo.js | 32 - node_modules/lodash/constant.js | 26 - node_modules/lodash/core.js | 3854 ---- node_modules/lodash/core.min.js | 29 - node_modules/lodash/countBy.js | 40 - node_modules/lodash/create.js | 43 - node_modules/lodash/curry.js | 57 - node_modules/lodash/curryRight.js | 54 - node_modules/lodash/date.js | 3 - node_modules/lodash/debounce.js | 191 - node_modules/lodash/deburr.js | 45 - node_modules/lodash/defaultTo.js | 25 - node_modules/lodash/defaults.js | 64 - node_modules/lodash/defaultsDeep.js | 30 - node_modules/lodash/defer.js | 26 - node_modules/lodash/delay.js | 28 - node_modules/lodash/difference.js | 33 - node_modules/lodash/differenceBy.js | 44 - node_modules/lodash/differenceWith.js | 40 - node_modules/lodash/divide.js | 22 - node_modules/lodash/drop.js | 38 - node_modules/lodash/dropRight.js | 39 - node_modules/lodash/dropRightWhile.js | 45 - node_modules/lodash/dropWhile.js | 45 - node_modules/lodash/each.js | 1 - node_modules/lodash/eachRight.js | 1 - node_modules/lodash/endsWith.js | 43 - node_modules/lodash/entries.js | 1 - node_modules/lodash/entriesIn.js | 1 - node_modules/lodash/eq.js | 37 - node_modules/lodash/escape.js | 43 - node_modules/lodash/escapeRegExp.js | 32 - node_modules/lodash/every.js | 56 - node_modules/lodash/extend.js | 1 - node_modules/lodash/extendWith.js | 1 - node_modules/lodash/fill.js | 45 - node_modules/lodash/filter.js | 48 - node_modules/lodash/find.js | 42 - node_modules/lodash/findIndex.js | 55 - node_modules/lodash/findKey.js | 44 - node_modules/lodash/findLast.js | 25 - node_modules/lodash/findLastIndex.js | 59 - node_modules/lodash/findLastKey.js | 44 - node_modules/lodash/first.js | 1 - node_modules/lodash/flatMap.js | 29 - node_modules/lodash/flatMapDeep.js | 31 - node_modules/lodash/flatMapDepth.js | 31 - node_modules/lodash/flatten.js | 22 - node_modules/lodash/flattenDeep.js | 25 - node_modules/lodash/flattenDepth.js | 33 - node_modules/lodash/flip.js | 28 - node_modules/lodash/floor.js | 26 - node_modules/lodash/flow.js | 27 - node_modules/lodash/flowRight.js | 26 - node_modules/lodash/forEach.js | 41 - node_modules/lodash/forEachRight.js | 31 - node_modules/lodash/forIn.js | 39 - node_modules/lodash/forInRight.js | 37 - node_modules/lodash/forOwn.js | 36 - node_modules/lodash/forOwnRight.js | 34 - node_modules/lodash/fp.js | 2 - node_modules/lodash/fp/F.js | 1 - node_modules/lodash/fp/T.js | 1 - node_modules/lodash/fp/__.js | 1 - node_modules/lodash/fp/_baseConvert.js | 569 - node_modules/lodash/fp/_convertBrowser.js | 18 - node_modules/lodash/fp/_falseOptions.js | 7 - node_modules/lodash/fp/_mapping.js | 358 - node_modules/lodash/fp/_util.js | 16 - node_modules/lodash/fp/add.js | 5 - node_modules/lodash/fp/after.js | 5 - node_modules/lodash/fp/all.js | 1 - node_modules/lodash/fp/allPass.js | 1 - node_modules/lodash/fp/always.js | 1 - node_modules/lodash/fp/any.js | 1 - node_modules/lodash/fp/anyPass.js | 1 - node_modules/lodash/fp/apply.js | 1 - node_modules/lodash/fp/array.js | 2 - node_modules/lodash/fp/ary.js | 5 - node_modules/lodash/fp/assign.js | 5 - node_modules/lodash/fp/assignAll.js | 5 - node_modules/lodash/fp/assignAllWith.js | 5 - node_modules/lodash/fp/assignIn.js | 5 - node_modules/lodash/fp/assignInAll.js | 5 - node_modules/lodash/fp/assignInAllWith.js | 5 - node_modules/lodash/fp/assignInWith.js | 5 - node_modules/lodash/fp/assignWith.js | 5 - node_modules/lodash/fp/assoc.js | 1 - node_modules/lodash/fp/assocPath.js | 1 - node_modules/lodash/fp/at.js | 5 - node_modules/lodash/fp/attempt.js | 5 - node_modules/lodash/fp/before.js | 5 - node_modules/lodash/fp/bind.js | 5 - node_modules/lodash/fp/bindAll.js | 5 - node_modules/lodash/fp/bindKey.js | 5 - node_modules/lodash/fp/camelCase.js | 5 - node_modules/lodash/fp/capitalize.js | 5 - node_modules/lodash/fp/castArray.js | 5 - node_modules/lodash/fp/ceil.js | 5 - node_modules/lodash/fp/chain.js | 5 - node_modules/lodash/fp/chunk.js | 5 - node_modules/lodash/fp/clamp.js | 5 - node_modules/lodash/fp/clone.js | 5 - node_modules/lodash/fp/cloneDeep.js | 5 - node_modules/lodash/fp/cloneDeepWith.js | 5 - node_modules/lodash/fp/cloneWith.js | 5 - node_modules/lodash/fp/collection.js | 2 - node_modules/lodash/fp/commit.js | 5 - node_modules/lodash/fp/compact.js | 5 - node_modules/lodash/fp/complement.js | 1 - node_modules/lodash/fp/compose.js | 1 - node_modules/lodash/fp/concat.js | 5 - node_modules/lodash/fp/cond.js | 5 - node_modules/lodash/fp/conforms.js | 1 - node_modules/lodash/fp/conformsTo.js | 5 - node_modules/lodash/fp/constant.js | 5 - node_modules/lodash/fp/contains.js | 1 - node_modules/lodash/fp/convert.js | 18 - node_modules/lodash/fp/countBy.js | 5 - node_modules/lodash/fp/create.js | 5 - node_modules/lodash/fp/curry.js | 5 - node_modules/lodash/fp/curryN.js | 5 - node_modules/lodash/fp/curryRight.js | 5 - node_modules/lodash/fp/curryRightN.js | 5 - node_modules/lodash/fp/date.js | 2 - node_modules/lodash/fp/debounce.js | 5 - node_modules/lodash/fp/deburr.js | 5 - node_modules/lodash/fp/defaultTo.js | 5 - node_modules/lodash/fp/defaults.js | 5 - node_modules/lodash/fp/defaultsAll.js | 5 - node_modules/lodash/fp/defaultsDeep.js | 5 - node_modules/lodash/fp/defaultsDeepAll.js | 5 - node_modules/lodash/fp/defer.js | 5 - node_modules/lodash/fp/delay.js | 5 - node_modules/lodash/fp/difference.js | 5 - node_modules/lodash/fp/differenceBy.js | 5 - node_modules/lodash/fp/differenceWith.js | 5 - node_modules/lodash/fp/dissoc.js | 1 - node_modules/lodash/fp/dissocPath.js | 1 - node_modules/lodash/fp/divide.js | 5 - node_modules/lodash/fp/drop.js | 5 - node_modules/lodash/fp/dropLast.js | 1 - node_modules/lodash/fp/dropLastWhile.js | 1 - node_modules/lodash/fp/dropRight.js | 5 - node_modules/lodash/fp/dropRightWhile.js | 5 - node_modules/lodash/fp/dropWhile.js | 5 - node_modules/lodash/fp/each.js | 1 - node_modules/lodash/fp/eachRight.js | 1 - node_modules/lodash/fp/endsWith.js | 5 - node_modules/lodash/fp/entries.js | 1 - node_modules/lodash/fp/entriesIn.js | 1 - node_modules/lodash/fp/eq.js | 5 - node_modules/lodash/fp/equals.js | 1 - node_modules/lodash/fp/escape.js | 5 - node_modules/lodash/fp/escapeRegExp.js | 5 - node_modules/lodash/fp/every.js | 5 - node_modules/lodash/fp/extend.js | 1 - node_modules/lodash/fp/extendAll.js | 1 - node_modules/lodash/fp/extendAllWith.js | 1 - node_modules/lodash/fp/extendWith.js | 1 - node_modules/lodash/fp/fill.js | 5 - node_modules/lodash/fp/filter.js | 5 - node_modules/lodash/fp/find.js | 5 - node_modules/lodash/fp/findFrom.js | 5 - node_modules/lodash/fp/findIndex.js | 5 - node_modules/lodash/fp/findIndexFrom.js | 5 - node_modules/lodash/fp/findKey.js | 5 - node_modules/lodash/fp/findLast.js | 5 - node_modules/lodash/fp/findLastFrom.js | 5 - node_modules/lodash/fp/findLastIndex.js | 5 - node_modules/lodash/fp/findLastIndexFrom.js | 5 - node_modules/lodash/fp/findLastKey.js | 5 - node_modules/lodash/fp/first.js | 1 - node_modules/lodash/fp/flatMap.js | 5 - node_modules/lodash/fp/flatMapDeep.js | 5 - node_modules/lodash/fp/flatMapDepth.js | 5 - node_modules/lodash/fp/flatten.js | 5 - node_modules/lodash/fp/flattenDeep.js | 5 - node_modules/lodash/fp/flattenDepth.js | 5 - node_modules/lodash/fp/flip.js | 5 - node_modules/lodash/fp/floor.js | 5 - node_modules/lodash/fp/flow.js | 5 - node_modules/lodash/fp/flowRight.js | 5 - node_modules/lodash/fp/forEach.js | 5 - node_modules/lodash/fp/forEachRight.js | 5 - node_modules/lodash/fp/forIn.js | 5 - node_modules/lodash/fp/forInRight.js | 5 - node_modules/lodash/fp/forOwn.js | 5 - node_modules/lodash/fp/forOwnRight.js | 5 - node_modules/lodash/fp/fromPairs.js | 5 - node_modules/lodash/fp/function.js | 2 - node_modules/lodash/fp/functions.js | 5 - node_modules/lodash/fp/functionsIn.js | 5 - node_modules/lodash/fp/get.js | 5 - node_modules/lodash/fp/getOr.js | 5 - node_modules/lodash/fp/groupBy.js | 5 - node_modules/lodash/fp/gt.js | 5 - node_modules/lodash/fp/gte.js | 5 - node_modules/lodash/fp/has.js | 5 - node_modules/lodash/fp/hasIn.js | 5 - node_modules/lodash/fp/head.js | 5 - node_modules/lodash/fp/identical.js | 1 - node_modules/lodash/fp/identity.js | 5 - node_modules/lodash/fp/inRange.js | 5 - node_modules/lodash/fp/includes.js | 5 - node_modules/lodash/fp/includesFrom.js | 5 - node_modules/lodash/fp/indexBy.js | 1 - node_modules/lodash/fp/indexOf.js | 5 - node_modules/lodash/fp/indexOfFrom.js | 5 - node_modules/lodash/fp/init.js | 1 - node_modules/lodash/fp/initial.js | 5 - node_modules/lodash/fp/intersection.js | 5 - node_modules/lodash/fp/intersectionBy.js | 5 - node_modules/lodash/fp/intersectionWith.js | 5 - node_modules/lodash/fp/invert.js | 5 - node_modules/lodash/fp/invertBy.js | 5 - node_modules/lodash/fp/invertObj.js | 1 - node_modules/lodash/fp/invoke.js | 5 - node_modules/lodash/fp/invokeArgs.js | 5 - node_modules/lodash/fp/invokeArgsMap.js | 5 - node_modules/lodash/fp/invokeMap.js | 5 - node_modules/lodash/fp/isArguments.js | 5 - node_modules/lodash/fp/isArray.js | 5 - node_modules/lodash/fp/isArrayBuffer.js | 5 - node_modules/lodash/fp/isArrayLike.js | 5 - node_modules/lodash/fp/isArrayLikeObject.js | 5 - node_modules/lodash/fp/isBoolean.js | 5 - node_modules/lodash/fp/isBuffer.js | 5 - node_modules/lodash/fp/isDate.js | 5 - node_modules/lodash/fp/isElement.js | 5 - node_modules/lodash/fp/isEmpty.js | 5 - node_modules/lodash/fp/isEqual.js | 5 - node_modules/lodash/fp/isEqualWith.js | 5 - node_modules/lodash/fp/isError.js | 5 - node_modules/lodash/fp/isFinite.js | 5 - node_modules/lodash/fp/isFunction.js | 5 - node_modules/lodash/fp/isInteger.js | 5 - node_modules/lodash/fp/isLength.js | 5 - node_modules/lodash/fp/isMap.js | 5 - node_modules/lodash/fp/isMatch.js | 5 - node_modules/lodash/fp/isMatchWith.js | 5 - node_modules/lodash/fp/isNaN.js | 5 - node_modules/lodash/fp/isNative.js | 5 - node_modules/lodash/fp/isNil.js | 5 - node_modules/lodash/fp/isNull.js | 5 - node_modules/lodash/fp/isNumber.js | 5 - node_modules/lodash/fp/isObject.js | 5 - node_modules/lodash/fp/isObjectLike.js | 5 - node_modules/lodash/fp/isPlainObject.js | 5 - node_modules/lodash/fp/isRegExp.js | 5 - node_modules/lodash/fp/isSafeInteger.js | 5 - node_modules/lodash/fp/isSet.js | 5 - node_modules/lodash/fp/isString.js | 5 - node_modules/lodash/fp/isSymbol.js | 5 - node_modules/lodash/fp/isTypedArray.js | 5 - node_modules/lodash/fp/isUndefined.js | 5 - node_modules/lodash/fp/isWeakMap.js | 5 - node_modules/lodash/fp/isWeakSet.js | 5 - node_modules/lodash/fp/iteratee.js | 5 - node_modules/lodash/fp/join.js | 5 - node_modules/lodash/fp/juxt.js | 1 - node_modules/lodash/fp/kebabCase.js | 5 - node_modules/lodash/fp/keyBy.js | 5 - node_modules/lodash/fp/keys.js | 5 - node_modules/lodash/fp/keysIn.js | 5 - node_modules/lodash/fp/lang.js | 2 - node_modules/lodash/fp/last.js | 5 - node_modules/lodash/fp/lastIndexOf.js | 5 - node_modules/lodash/fp/lastIndexOfFrom.js | 5 - node_modules/lodash/fp/lowerCase.js | 5 - node_modules/lodash/fp/lowerFirst.js | 5 - node_modules/lodash/fp/lt.js | 5 - node_modules/lodash/fp/lte.js | 5 - node_modules/lodash/fp/map.js | 5 - node_modules/lodash/fp/mapKeys.js | 5 - node_modules/lodash/fp/mapValues.js | 5 - node_modules/lodash/fp/matches.js | 1 - node_modules/lodash/fp/matchesProperty.js | 5 - node_modules/lodash/fp/math.js | 2 - node_modules/lodash/fp/max.js | 5 - node_modules/lodash/fp/maxBy.js | 5 - node_modules/lodash/fp/mean.js | 5 - node_modules/lodash/fp/meanBy.js | 5 - node_modules/lodash/fp/memoize.js | 5 - node_modules/lodash/fp/merge.js | 5 - node_modules/lodash/fp/mergeAll.js | 5 - node_modules/lodash/fp/mergeAllWith.js | 5 - node_modules/lodash/fp/mergeWith.js | 5 - node_modules/lodash/fp/method.js | 5 - node_modules/lodash/fp/methodOf.js | 5 - node_modules/lodash/fp/min.js | 5 - node_modules/lodash/fp/minBy.js | 5 - node_modules/lodash/fp/mixin.js | 5 - node_modules/lodash/fp/multiply.js | 5 - node_modules/lodash/fp/nAry.js | 1 - node_modules/lodash/fp/negate.js | 5 - node_modules/lodash/fp/next.js | 5 - node_modules/lodash/fp/noop.js | 5 - node_modules/lodash/fp/now.js | 5 - node_modules/lodash/fp/nth.js | 5 - node_modules/lodash/fp/nthArg.js | 5 - node_modules/lodash/fp/number.js | 2 - node_modules/lodash/fp/object.js | 2 - node_modules/lodash/fp/omit.js | 5 - node_modules/lodash/fp/omitAll.js | 1 - node_modules/lodash/fp/omitBy.js | 5 - node_modules/lodash/fp/once.js | 5 - node_modules/lodash/fp/orderBy.js | 5 - node_modules/lodash/fp/over.js | 5 - node_modules/lodash/fp/overArgs.js | 5 - node_modules/lodash/fp/overEvery.js | 5 - node_modules/lodash/fp/overSome.js | 5 - node_modules/lodash/fp/pad.js | 5 - node_modules/lodash/fp/padChars.js | 5 - node_modules/lodash/fp/padCharsEnd.js | 5 - node_modules/lodash/fp/padCharsStart.js | 5 - node_modules/lodash/fp/padEnd.js | 5 - node_modules/lodash/fp/padStart.js | 5 - node_modules/lodash/fp/parseInt.js | 5 - node_modules/lodash/fp/partial.js | 5 - node_modules/lodash/fp/partialRight.js | 5 - node_modules/lodash/fp/partition.js | 5 - node_modules/lodash/fp/path.js | 1 - node_modules/lodash/fp/pathEq.js | 1 - node_modules/lodash/fp/pathOr.js | 1 - node_modules/lodash/fp/paths.js | 1 - node_modules/lodash/fp/pick.js | 5 - node_modules/lodash/fp/pickAll.js | 1 - node_modules/lodash/fp/pickBy.js | 5 - node_modules/lodash/fp/pipe.js | 1 - node_modules/lodash/fp/placeholder.js | 6 - node_modules/lodash/fp/plant.js | 5 - node_modules/lodash/fp/pluck.js | 1 - node_modules/lodash/fp/prop.js | 1 - node_modules/lodash/fp/propEq.js | 1 - node_modules/lodash/fp/propOr.js | 1 - node_modules/lodash/fp/property.js | 1 - node_modules/lodash/fp/propertyOf.js | 5 - node_modules/lodash/fp/props.js | 1 - node_modules/lodash/fp/pull.js | 5 - node_modules/lodash/fp/pullAll.js | 5 - node_modules/lodash/fp/pullAllBy.js | 5 - node_modules/lodash/fp/pullAllWith.js | 5 - node_modules/lodash/fp/pullAt.js | 5 - node_modules/lodash/fp/random.js | 5 - node_modules/lodash/fp/range.js | 5 - node_modules/lodash/fp/rangeRight.js | 5 - node_modules/lodash/fp/rangeStep.js | 5 - node_modules/lodash/fp/rangeStepRight.js | 5 - node_modules/lodash/fp/rearg.js | 5 - node_modules/lodash/fp/reduce.js | 5 - node_modules/lodash/fp/reduceRight.js | 5 - node_modules/lodash/fp/reject.js | 5 - node_modules/lodash/fp/remove.js | 5 - node_modules/lodash/fp/repeat.js | 5 - node_modules/lodash/fp/replace.js | 5 - node_modules/lodash/fp/rest.js | 5 - node_modules/lodash/fp/restFrom.js | 5 - node_modules/lodash/fp/result.js | 5 - node_modules/lodash/fp/reverse.js | 5 - node_modules/lodash/fp/round.js | 5 - node_modules/lodash/fp/sample.js | 5 - node_modules/lodash/fp/sampleSize.js | 5 - node_modules/lodash/fp/seq.js | 2 - node_modules/lodash/fp/set.js | 5 - node_modules/lodash/fp/setWith.js | 5 - node_modules/lodash/fp/shuffle.js | 5 - node_modules/lodash/fp/size.js | 5 - node_modules/lodash/fp/slice.js | 5 - node_modules/lodash/fp/snakeCase.js | 5 - node_modules/lodash/fp/some.js | 5 - node_modules/lodash/fp/sortBy.js | 5 - node_modules/lodash/fp/sortedIndex.js | 5 - node_modules/lodash/fp/sortedIndexBy.js | 5 - node_modules/lodash/fp/sortedIndexOf.js | 5 - node_modules/lodash/fp/sortedLastIndex.js | 5 - node_modules/lodash/fp/sortedLastIndexBy.js | 5 - node_modules/lodash/fp/sortedLastIndexOf.js | 5 - node_modules/lodash/fp/sortedUniq.js | 5 - node_modules/lodash/fp/sortedUniqBy.js | 5 - node_modules/lodash/fp/split.js | 5 - node_modules/lodash/fp/spread.js | 5 - node_modules/lodash/fp/spreadFrom.js | 5 - node_modules/lodash/fp/startCase.js | 5 - node_modules/lodash/fp/startsWith.js | 5 - node_modules/lodash/fp/string.js | 2 - node_modules/lodash/fp/stubArray.js | 5 - node_modules/lodash/fp/stubFalse.js | 5 - node_modules/lodash/fp/stubObject.js | 5 - node_modules/lodash/fp/stubString.js | 5 - node_modules/lodash/fp/stubTrue.js | 5 - node_modules/lodash/fp/subtract.js | 5 - node_modules/lodash/fp/sum.js | 5 - node_modules/lodash/fp/sumBy.js | 5 - node_modules/lodash/fp/symmetricDifference.js | 1 - .../lodash/fp/symmetricDifferenceBy.js | 1 - .../lodash/fp/symmetricDifferenceWith.js | 1 - node_modules/lodash/fp/tail.js | 5 - node_modules/lodash/fp/take.js | 5 - node_modules/lodash/fp/takeLast.js | 1 - node_modules/lodash/fp/takeLastWhile.js | 1 - node_modules/lodash/fp/takeRight.js | 5 - node_modules/lodash/fp/takeRightWhile.js | 5 - node_modules/lodash/fp/takeWhile.js | 5 - node_modules/lodash/fp/tap.js | 5 - node_modules/lodash/fp/template.js | 5 - node_modules/lodash/fp/templateSettings.js | 5 - node_modules/lodash/fp/throttle.js | 5 - node_modules/lodash/fp/thru.js | 5 - node_modules/lodash/fp/times.js | 5 - node_modules/lodash/fp/toArray.js | 5 - node_modules/lodash/fp/toFinite.js | 5 - node_modules/lodash/fp/toInteger.js | 5 - node_modules/lodash/fp/toIterator.js | 5 - node_modules/lodash/fp/toJSON.js | 5 - node_modules/lodash/fp/toLength.js | 5 - node_modules/lodash/fp/toLower.js | 5 - node_modules/lodash/fp/toNumber.js | 5 - node_modules/lodash/fp/toPairs.js | 5 - node_modules/lodash/fp/toPairsIn.js | 5 - node_modules/lodash/fp/toPath.js | 5 - node_modules/lodash/fp/toPlainObject.js | 5 - node_modules/lodash/fp/toSafeInteger.js | 5 - node_modules/lodash/fp/toString.js | 5 - node_modules/lodash/fp/toUpper.js | 5 - node_modules/lodash/fp/transform.js | 5 - node_modules/lodash/fp/trim.js | 5 - node_modules/lodash/fp/trimChars.js | 5 - node_modules/lodash/fp/trimCharsEnd.js | 5 - node_modules/lodash/fp/trimCharsStart.js | 5 - node_modules/lodash/fp/trimEnd.js | 5 - node_modules/lodash/fp/trimStart.js | 5 - node_modules/lodash/fp/truncate.js | 5 - node_modules/lodash/fp/unapply.js | 1 - node_modules/lodash/fp/unary.js | 5 - node_modules/lodash/fp/unescape.js | 5 - node_modules/lodash/fp/union.js | 5 - node_modules/lodash/fp/unionBy.js | 5 - node_modules/lodash/fp/unionWith.js | 5 - node_modules/lodash/fp/uniq.js | 5 - node_modules/lodash/fp/uniqBy.js | 5 - node_modules/lodash/fp/uniqWith.js | 5 - node_modules/lodash/fp/uniqueId.js | 5 - node_modules/lodash/fp/unnest.js | 1 - node_modules/lodash/fp/unset.js | 5 - node_modules/lodash/fp/unzip.js | 5 - node_modules/lodash/fp/unzipWith.js | 5 - node_modules/lodash/fp/update.js | 5 - node_modules/lodash/fp/updateWith.js | 5 - node_modules/lodash/fp/upperCase.js | 5 - node_modules/lodash/fp/upperFirst.js | 5 - node_modules/lodash/fp/useWith.js | 1 - node_modules/lodash/fp/util.js | 2 - node_modules/lodash/fp/value.js | 5 - node_modules/lodash/fp/valueOf.js | 5 - node_modules/lodash/fp/values.js | 5 - node_modules/lodash/fp/valuesIn.js | 5 - node_modules/lodash/fp/where.js | 1 - node_modules/lodash/fp/whereEq.js | 1 - node_modules/lodash/fp/without.js | 5 - node_modules/lodash/fp/words.js | 5 - node_modules/lodash/fp/wrap.js | 5 - node_modules/lodash/fp/wrapperAt.js | 5 - node_modules/lodash/fp/wrapperChain.js | 5 - node_modules/lodash/fp/wrapperLodash.js | 5 - node_modules/lodash/fp/wrapperReverse.js | 5 - node_modules/lodash/fp/wrapperValue.js | 5 - node_modules/lodash/fp/xor.js | 5 - node_modules/lodash/fp/xorBy.js | 5 - node_modules/lodash/fp/xorWith.js | 5 - node_modules/lodash/fp/zip.js | 5 - node_modules/lodash/fp/zipAll.js | 5 - node_modules/lodash/fp/zipObj.js | 1 - node_modules/lodash/fp/zipObject.js | 5 - node_modules/lodash/fp/zipObjectDeep.js | 5 - node_modules/lodash/fp/zipWith.js | 5 - node_modules/lodash/fromPairs.js | 28 - node_modules/lodash/function.js | 25 - node_modules/lodash/functions.js | 31 - node_modules/lodash/functionsIn.js | 31 - node_modules/lodash/get.js | 33 - node_modules/lodash/groupBy.js | 41 - node_modules/lodash/gt.js | 29 - node_modules/lodash/gte.js | 30 - node_modules/lodash/has.js | 35 - node_modules/lodash/hasIn.js | 34 - node_modules/lodash/head.js | 23 - node_modules/lodash/identity.js | 21 - node_modules/lodash/inRange.js | 55 - node_modules/lodash/includes.js | 53 - node_modules/lodash/index.js | 1 - node_modules/lodash/indexOf.js | 42 - node_modules/lodash/initial.js | 22 - node_modules/lodash/intersection.js | 30 - node_modules/lodash/intersectionBy.js | 45 - node_modules/lodash/intersectionWith.js | 41 - node_modules/lodash/invert.js | 42 - node_modules/lodash/invertBy.js | 56 - node_modules/lodash/invoke.js | 24 - node_modules/lodash/invokeMap.js | 41 - node_modules/lodash/isArguments.js | 36 - node_modules/lodash/isArray.js | 26 - node_modules/lodash/isArrayBuffer.js | 27 - node_modules/lodash/isArrayLike.js | 33 - node_modules/lodash/isArrayLikeObject.js | 33 - node_modules/lodash/isBoolean.js | 29 - node_modules/lodash/isBuffer.js | 38 - node_modules/lodash/isDate.js | 27 - node_modules/lodash/isElement.js | 25 - node_modules/lodash/isEmpty.js | 77 - node_modules/lodash/isEqual.js | 35 - node_modules/lodash/isEqualWith.js | 41 - node_modules/lodash/isError.js | 36 - node_modules/lodash/isFinite.js | 36 - node_modules/lodash/isFunction.js | 37 - node_modules/lodash/isInteger.js | 33 - node_modules/lodash/isLength.js | 35 - node_modules/lodash/isMap.js | 27 - node_modules/lodash/isMatch.js | 36 - node_modules/lodash/isMatchWith.js | 41 - node_modules/lodash/isNaN.js | 38 - node_modules/lodash/isNative.js | 40 - node_modules/lodash/isNil.js | 25 - node_modules/lodash/isNull.js | 22 - node_modules/lodash/isNumber.js | 38 - node_modules/lodash/isObject.js | 31 - node_modules/lodash/isObjectLike.js | 29 - node_modules/lodash/isPlainObject.js | 62 - node_modules/lodash/isRegExp.js | 27 - node_modules/lodash/isSafeInteger.js | 37 - node_modules/lodash/isSet.js | 27 - node_modules/lodash/isString.js | 30 - node_modules/lodash/isSymbol.js | 29 - node_modules/lodash/isTypedArray.js | 27 - node_modules/lodash/isUndefined.js | 22 - node_modules/lodash/isWeakMap.js | 28 - node_modules/lodash/isWeakSet.js | 28 - node_modules/lodash/iteratee.js | 53 - node_modules/lodash/join.js | 26 - node_modules/lodash/kebabCase.js | 28 - node_modules/lodash/keyBy.js | 36 - node_modules/lodash/keys.js | 37 - node_modules/lodash/keysIn.js | 32 - node_modules/lodash/lang.js | 58 - node_modules/lodash/last.js | 20 - node_modules/lodash/lastIndexOf.js | 46 - node_modules/lodash/lodash.js | 17112 ---------------- node_modules/lodash/lodash.min.js | 137 - node_modules/lodash/lowerCase.js | 27 - node_modules/lodash/lowerFirst.js | 22 - node_modules/lodash/lt.js | 29 - node_modules/lodash/lte.js | 30 - node_modules/lodash/map.js | 53 - node_modules/lodash/mapKeys.js | 36 - node_modules/lodash/mapValues.js | 43 - node_modules/lodash/matches.js | 39 - node_modules/lodash/matchesProperty.js | 37 - node_modules/lodash/math.js | 17 - node_modules/lodash/max.js | 29 - node_modules/lodash/maxBy.js | 34 - node_modules/lodash/mean.js | 22 - node_modules/lodash/meanBy.js | 31 - node_modules/lodash/memoize.js | 73 - node_modules/lodash/merge.js | 39 - node_modules/lodash/mergeWith.js | 39 - node_modules/lodash/method.js | 34 - node_modules/lodash/methodOf.js | 33 - node_modules/lodash/min.js | 29 - node_modules/lodash/minBy.js | 34 - node_modules/lodash/mixin.js | 74 - node_modules/lodash/multiply.js | 22 - node_modules/lodash/negate.js | 40 - node_modules/lodash/next.js | 35 - node_modules/lodash/noop.js | 17 - node_modules/lodash/now.js | 23 - node_modules/lodash/nth.js | 29 - node_modules/lodash/nthArg.js | 32 - node_modules/lodash/number.js | 5 - node_modules/lodash/object.js | 49 - node_modules/lodash/omit.js | 57 - node_modules/lodash/omitBy.js | 29 - node_modules/lodash/once.js | 25 - node_modules/lodash/orderBy.js | 47 - node_modules/lodash/over.js | 24 - node_modules/lodash/overArgs.js | 61 - node_modules/lodash/overEvery.js | 30 - node_modules/lodash/overSome.js | 30 - node_modules/lodash/package.json | 64 - node_modules/lodash/pad.js | 49 - node_modules/lodash/padEnd.js | 39 - node_modules/lodash/padStart.js | 39 - node_modules/lodash/parseInt.js | 43 - node_modules/lodash/partial.js | 50 - node_modules/lodash/partialRight.js | 49 - node_modules/lodash/partition.js | 43 - node_modules/lodash/pick.js | 25 - node_modules/lodash/pickBy.js | 37 - node_modules/lodash/plant.js | 48 - node_modules/lodash/property.js | 32 - node_modules/lodash/propertyOf.js | 30 - node_modules/lodash/pull.js | 29 - node_modules/lodash/pullAll.js | 29 - node_modules/lodash/pullAllBy.js | 33 - node_modules/lodash/pullAllWith.js | 32 - node_modules/lodash/pullAt.js | 43 - node_modules/lodash/random.js | 82 - node_modules/lodash/range.js | 46 - node_modules/lodash/rangeRight.js | 41 - node_modules/lodash/rearg.js | 33 - node_modules/lodash/reduce.js | 51 - node_modules/lodash/reduceRight.js | 36 - node_modules/lodash/reject.js | 46 - node_modules/lodash/remove.js | 53 - node_modules/lodash/repeat.js | 37 - node_modules/lodash/replace.js | 29 - node_modules/lodash/rest.js | 40 - node_modules/lodash/result.js | 56 - node_modules/lodash/reverse.js | 34 - node_modules/lodash/round.js | 26 - node_modules/lodash/sample.js | 24 - node_modules/lodash/sampleSize.js | 37 - node_modules/lodash/seq.js | 16 - node_modules/lodash/set.js | 35 - node_modules/lodash/setWith.js | 32 - node_modules/lodash/shuffle.js | 25 - node_modules/lodash/size.js | 46 - node_modules/lodash/slice.js | 37 - node_modules/lodash/snakeCase.js | 28 - node_modules/lodash/some.js | 51 - node_modules/lodash/sortBy.js | 48 - node_modules/lodash/sortedIndex.js | 24 - node_modules/lodash/sortedIndexBy.js | 33 - node_modules/lodash/sortedIndexOf.js | 31 - node_modules/lodash/sortedLastIndex.js | 25 - node_modules/lodash/sortedLastIndexBy.js | 33 - node_modules/lodash/sortedLastIndexOf.js | 31 - node_modules/lodash/sortedUniq.js | 24 - node_modules/lodash/sortedUniqBy.js | 26 - node_modules/lodash/split.js | 52 - node_modules/lodash/spread.js | 63 - node_modules/lodash/startCase.js | 29 - node_modules/lodash/startsWith.js | 39 - node_modules/lodash/string.js | 33 - node_modules/lodash/stubArray.js | 23 - node_modules/lodash/stubFalse.js | 18 - node_modules/lodash/stubObject.js | 23 - node_modules/lodash/stubString.js | 18 - node_modules/lodash/stubTrue.js | 18 - node_modules/lodash/subtract.js | 22 - node_modules/lodash/sum.js | 24 - node_modules/lodash/sumBy.js | 33 - node_modules/lodash/tail.js | 22 - node_modules/lodash/take.js | 37 - node_modules/lodash/takeRight.js | 39 - node_modules/lodash/takeRightWhile.js | 45 - node_modules/lodash/takeWhile.js | 45 - node_modules/lodash/tap.js | 29 - node_modules/lodash/template.js | 253 - node_modules/lodash/templateSettings.js | 67 - node_modules/lodash/throttle.js | 69 - node_modules/lodash/thru.js | 28 - node_modules/lodash/times.js | 51 - node_modules/lodash/toArray.js | 58 - node_modules/lodash/toFinite.js | 42 - node_modules/lodash/toInteger.js | 36 - node_modules/lodash/toIterator.js | 23 - node_modules/lodash/toJSON.js | 1 - node_modules/lodash/toLength.js | 38 - node_modules/lodash/toLower.js | 28 - node_modules/lodash/toNumber.js | 66 - node_modules/lodash/toPairs.js | 30 - node_modules/lodash/toPairsIn.js | 30 - node_modules/lodash/toPath.js | 33 - node_modules/lodash/toPlainObject.js | 32 - node_modules/lodash/toSafeInteger.js | 37 - node_modules/lodash/toString.js | 28 - node_modules/lodash/toUpper.js | 28 - node_modules/lodash/transform.js | 65 - node_modules/lodash/trim.js | 49 - node_modules/lodash/trimEnd.js | 43 - node_modules/lodash/trimStart.js | 43 - node_modules/lodash/truncate.js | 111 - node_modules/lodash/unary.js | 22 - node_modules/lodash/unescape.js | 34 - node_modules/lodash/union.js | 26 - node_modules/lodash/unionBy.js | 39 - node_modules/lodash/unionWith.js | 34 - node_modules/lodash/uniq.js | 25 - node_modules/lodash/uniqBy.js | 31 - node_modules/lodash/uniqWith.js | 28 - node_modules/lodash/uniqueId.js | 28 - node_modules/lodash/unset.js | 34 - node_modules/lodash/unzip.js | 45 - node_modules/lodash/unzipWith.js | 39 - node_modules/lodash/update.js | 35 - node_modules/lodash/updateWith.js | 33 - node_modules/lodash/upperCase.js | 27 - node_modules/lodash/upperFirst.js | 22 - node_modules/lodash/util.js | 34 - node_modules/lodash/value.js | 1 - node_modules/lodash/valueOf.js | 1 - node_modules/lodash/values.js | 34 - node_modules/lodash/valuesIn.js | 32 - node_modules/lodash/without.js | 31 - node_modules/lodash/words.js | 35 - node_modules/lodash/wrap.js | 30 - node_modules/lodash/wrapperAt.js | 48 - node_modules/lodash/wrapperChain.js | 34 - node_modules/lodash/wrapperLodash.js | 147 - node_modules/lodash/wrapperReverse.js | 44 - node_modules/lodash/wrapperValue.js | 21 - node_modules/lodash/xor.js | 28 - node_modules/lodash/xorBy.js | 39 - node_modules/lodash/xorWith.js | 34 - node_modules/lodash/zip.js | 22 - node_modules/lodash/zipObject.js | 24 - node_modules/lodash/zipObjectDeep.js | 23 - node_modules/lodash/zipWith.js | 32 - node_modules/markdown-link-check/.travis.yml | 6 - node_modules/markdown-link-check/CHANGELOG.md | 65 - .../markdown-link-check/CONTRIBUTING.md | 8 - node_modules/markdown-link-check/Dockerfile | 13 - node_modules/markdown-link-check/LICENSE.md | 13 - node_modules/markdown-link-check/README.md | 174 - node_modules/markdown-link-check/index.js | 76 - .../markdown-link-check/markdown-link-check | 154 - node_modules/markdown-link-check/package.json | 106 - node_modules/markdown-link-check/test/file.md | 7 - .../markdown-link-check/test/hello.jpg | Bin 19209 -> 0 bytes .../test/markdown-link-check.test.js | 194 - .../markdown-link-check/test/sample.md | 26 - .../markdown-link-extractor/.travis.yml | 5 - .../markdown-link-extractor/CHANGELOG.md | 11 - .../markdown-link-extractor/CONTRIBUTING.md | 8 - .../markdown-link-extractor/LICENSE.md | 13 - .../markdown-link-extractor/README.md | 42 - node_modules/markdown-link-extractor/index.js | 28 - .../markdown-link-extractor/package.json | 92 - .../test/markdown-link-extractor.test.js | 64 - node_modules/marked/LICENSE.md | 43 - node_modules/marked/README.md | 76 - node_modules/marked/bin/marked | 215 - node_modules/marked/lib/marked.esm.js | 1849 -- node_modules/marked/lib/marked.js | 1790 -- node_modules/marked/man/marked.1 | 111 - node_modules/marked/man/marked.1.txt | 96 - node_modules/marked/marked.min.js | 6 - node_modules/marked/package.json | 111 - node_modules/marked/src/InlineLexer.js | 293 - node_modules/marked/src/Lexer.js | 402 - node_modules/marked/src/Parser.js | 206 - node_modules/marked/src/Renderer.js | 164 - node_modules/marked/src/Slugger.js | 33 - node_modules/marked/src/TextRenderer.js | 42 - node_modules/marked/src/defaults.js | 30 - node_modules/marked/src/helpers.js | 243 - node_modules/marked/src/marked.js | 150 - node_modules/marked/src/rules.js | 266 - node_modules/mime-db/HISTORY.md | 446 - node_modules/mime-db/LICENSE | 22 - node_modules/mime-db/README.md | 102 - node_modules/mime-db/db.json | 8176 -------- node_modules/mime-db/index.js | 11 - node_modules/mime-db/package.json | 102 - node_modules/mime-types/HISTORY.md | 333 - node_modules/mime-types/LICENSE | 23 - node_modules/mime-types/README.md | 123 - node_modules/mime-types/index.js | 188 - node_modules/mime-types/package.json | 88 - node_modules/ms/index.js | 162 - node_modules/ms/license.md | 21 - node_modules/ms/package.json | 69 - node_modules/ms/readme.md | 60 - node_modules/oauth-sign/LICENSE | 55 - node_modules/oauth-sign/README.md | 11 - node_modules/oauth-sign/index.js | 146 - node_modules/oauth-sign/package.json | 56 - node_modules/performance-now/.npmignore | 1 - node_modules/performance-now/.tm_properties | 7 - node_modules/performance-now/.travis.yml | 6 - node_modules/performance-now/README.md | 30 - .../performance-now/lib/performance-now.js | 36 - .../lib/performance-now.js.map | 10 - node_modules/performance-now/license.txt | 7 - node_modules/performance-now/package.json | 65 - node_modules/performance-now/src/index.d.ts | 8 - .../src/performance-now.coffee | 17 - node_modules/performance-now/test/mocha.opts | 3 - .../test/performance-now.coffee | 43 - .../performance-now/test/scripts.coffee | 27 - .../test/scripts/delayed-call.coffee | 11 - .../test/scripts/delayed-require.coffee | 12 - .../test/scripts/difference.coffee | 6 - .../test/scripts/initial-value.coffee | 10 - node_modules/progress/CHANGELOG.md | 115 - node_modules/progress/LICENSE | 22 - node_modules/progress/Makefile | 8 - node_modules/progress/Readme.md | 146 - node_modules/progress/index.js | 1 - node_modules/progress/lib/node-progress.js | 236 - node_modules/progress/package.json | 70 - node_modules/psl/LICENSE | 9 - node_modules/psl/README.md | 215 - node_modules/psl/browserstack-logo.svg | 90 - node_modules/psl/data/rules.json | 8834 -------- node_modules/psl/dist/psl.js | 9645 --------- node_modules/psl/dist/psl.min.js | 1 - node_modules/psl/index.js | 269 - node_modules/psl/package.json | 77 - node_modules/punycode/LICENSE-MIT.txt | 20 - node_modules/punycode/README.md | 122 - node_modules/punycode/package.json | 87 - node_modules/punycode/punycode.es6.js | 441 - node_modules/punycode/punycode.js | 440 - node_modules/qs/.editorconfig | 30 - node_modules/qs/.eslintignore | 1 - node_modules/qs/.eslintrc | 19 - node_modules/qs/CHANGELOG.md | 226 - node_modules/qs/LICENSE | 28 - node_modules/qs/README.md | 475 - node_modules/qs/dist/qs.js | 638 - node_modules/qs/lib/formats.js | 18 - node_modules/qs/lib/index.js | 11 - node_modules/qs/lib/parse.js | 174 - node_modules/qs/lib/stringify.js | 210 - node_modules/qs/lib/utils.js | 213 - node_modules/qs/package.json | 80 - node_modules/qs/test/.eslintrc | 15 - node_modules/qs/test/index.js | 7 - node_modules/qs/test/parse.js | 574 - node_modules/qs/test/stringify.js | 597 - node_modules/qs/test/utils.js | 34 - node_modules/request/CHANGELOG.md | 717 - node_modules/request/LICENSE | 55 - node_modules/request/README.md | 1133 - node_modules/request/index.js | 155 - node_modules/request/lib/auth.js | 167 - node_modules/request/lib/cookies.js | 38 - node_modules/request/lib/getProxyFromURI.js | 79 - node_modules/request/lib/har.js | 205 - node_modules/request/lib/hawk.js | 89 - node_modules/request/lib/helpers.js | 66 - node_modules/request/lib/multipart.js | 112 - node_modules/request/lib/oauth.js | 148 - node_modules/request/lib/querystring.js | 50 - node_modules/request/lib/redirect.js | 154 - node_modules/request/lib/tunnel.js | 175 - node_modules/request/package.json | 116 - node_modules/request/request.js | 1553 -- node_modules/safe-buffer/LICENSE | 21 - node_modules/safe-buffer/README.md | 584 - node_modules/safe-buffer/index.d.ts | 187 - node_modules/safe-buffer/index.js | 65 - node_modules/safe-buffer/package.json | 77 - node_modules/safer-buffer/LICENSE | 21 - node_modules/safer-buffer/Porting-Buffer.md | 268 - node_modules/safer-buffer/Readme.md | 156 - node_modules/safer-buffer/dangerous.js | 58 - node_modules/safer-buffer/package.json | 62 - node_modules/safer-buffer/safer.js | 77 - node_modules/safer-buffer/tests.js | 406 - node_modules/sshpk/.npmignore | 9 - node_modules/sshpk/.travis.yml | 11 - node_modules/sshpk/LICENSE | 18 - node_modules/sshpk/README.md | 804 - node_modules/sshpk/bin/sshpk-conv | 243 - node_modules/sshpk/bin/sshpk-sign | 191 - node_modules/sshpk/bin/sshpk-verify | 167 - node_modules/sshpk/lib/algs.js | 168 - node_modules/sshpk/lib/certificate.js | 410 - node_modules/sshpk/lib/dhe.js | 397 - node_modules/sshpk/lib/ed-compat.js | 92 - node_modules/sshpk/lib/errors.js | 84 - node_modules/sshpk/lib/fingerprint.js | 220 - node_modules/sshpk/lib/formats/auto.js | 124 - node_modules/sshpk/lib/formats/dnssec.js | 287 - .../sshpk/lib/formats/openssh-cert.js | 352 - node_modules/sshpk/lib/formats/pem.js | 290 - node_modules/sshpk/lib/formats/pkcs1.js | 373 - node_modules/sshpk/lib/formats/pkcs8.js | 631 - node_modules/sshpk/lib/formats/putty.js | 99 - node_modules/sshpk/lib/formats/rfc4253.js | 166 - node_modules/sshpk/lib/formats/ssh-private.js | 262 - node_modules/sshpk/lib/formats/ssh.js | 115 - node_modules/sshpk/lib/formats/x509-pem.js | 88 - node_modules/sshpk/lib/formats/x509.js | 752 - node_modules/sshpk/lib/identity.js | 373 - node_modules/sshpk/lib/index.js | 40 - node_modules/sshpk/lib/key.js | 294 - node_modules/sshpk/lib/private-key.js | 246 - node_modules/sshpk/lib/signature.js | 314 - node_modules/sshpk/lib/ssh-buffer.js | 149 - node_modules/sshpk/lib/utils.js | 404 - node_modules/sshpk/man/man1/sshpk-conv.1 | 135 - node_modules/sshpk/man/man1/sshpk-sign.1 | 81 - node_modules/sshpk/man/man1/sshpk-verify.1 | 68 - node_modules/sshpk/package.json | 96 - node_modules/supports-color/browser.js | 5 - node_modules/supports-color/index.js | 131 - node_modules/supports-color/license | 9 - node_modules/supports-color/package.json | 85 - node_modules/supports-color/readme.md | 66 - node_modules/tough-cookie/LICENSE | 12 - node_modules/tough-cookie/README.md | 527 - node_modules/tough-cookie/lib/cookie.js | 1482 -- node_modules/tough-cookie/lib/memstore.js | 181 - node_modules/tough-cookie/lib/pathMatch.js | 61 - .../tough-cookie/lib/permuteDomain.js | 56 - .../tough-cookie/lib/pubsuffix-psl.js | 38 - node_modules/tough-cookie/lib/store.js | 75 - node_modules/tough-cookie/lib/version.js | 2 - node_modules/tough-cookie/package.json | 96 - node_modules/tunnel-agent/LICENSE | 55 - node_modules/tunnel-agent/README.md | 4 - node_modules/tunnel-agent/index.js | 244 - node_modules/tunnel-agent/package.json | 55 - node_modules/tweetnacl/.npmignore | 4 - node_modules/tweetnacl/AUTHORS.md | 28 - node_modules/tweetnacl/CHANGELOG.md | 221 - node_modules/tweetnacl/LICENSE | 24 - .../tweetnacl/PULL_REQUEST_TEMPLATE.md | 20 - node_modules/tweetnacl/README.md | 459 - node_modules/tweetnacl/nacl-fast.js | 2388 --- node_modules/tweetnacl/nacl-fast.min.js | 2 - node_modules/tweetnacl/nacl.d.ts | 98 - node_modules/tweetnacl/nacl.js | 1175 -- node_modules/tweetnacl/nacl.min.js | 1 - node_modules/tweetnacl/package.json | 86 - node_modules/uri-js/README.md | 199 - node_modules/uri-js/bower.json | 47 - node_modules/uri-js/dist/es5/uri.all.d.ts | 59 - node_modules/uri-js/dist/es5/uri.all.js | 1389 -- node_modules/uri-js/dist/es5/uri.all.js.map | 1 - node_modules/uri-js/dist/es5/uri.all.min.d.ts | 59 - node_modules/uri-js/dist/es5/uri.all.min.js | 3 - .../uri-js/dist/es5/uri.all.min.js.map | 1 - node_modules/uri-js/dist/esnext/index.d.ts | 1 - node_modules/uri-js/dist/esnext/index.js | 13 - node_modules/uri-js/dist/esnext/index.js.map | 1 - .../uri-js/dist/esnext/regexps-iri.d.ts | 3 - .../uri-js/dist/esnext/regexps-iri.js | 3 - .../uri-js/dist/esnext/regexps-iri.js.map | 1 - .../uri-js/dist/esnext/regexps-uri.d.ts | 4 - .../uri-js/dist/esnext/regexps-uri.js | 42 - .../uri-js/dist/esnext/regexps-uri.js.map | 1 - .../uri-js/dist/esnext/schemes/http.d.ts | 3 - .../uri-js/dist/esnext/schemes/http.js | 27 - .../uri-js/dist/esnext/schemes/http.js.map | 1 - .../uri-js/dist/esnext/schemes/https.d.ts | 3 - .../uri-js/dist/esnext/schemes/https.js | 9 - .../uri-js/dist/esnext/schemes/https.js.map | 1 - .../uri-js/dist/esnext/schemes/mailto.d.ts | 12 - .../uri-js/dist/esnext/schemes/mailto.js | 148 - .../uri-js/dist/esnext/schemes/mailto.js.map | 1 - .../uri-js/dist/esnext/schemes/urn-uuid.d.ts | 7 - .../uri-js/dist/esnext/schemes/urn-uuid.js | 23 - .../dist/esnext/schemes/urn-uuid.js.map | 1 - .../uri-js/dist/esnext/schemes/urn.d.ts | 10 - .../uri-js/dist/esnext/schemes/urn.js | 49 - .../uri-js/dist/esnext/schemes/urn.js.map | 1 - node_modules/uri-js/dist/esnext/uri.d.ts | 59 - node_modules/uri-js/dist/esnext/uri.js | 480 - node_modules/uri-js/dist/esnext/uri.js.map | 1 - node_modules/uri-js/dist/esnext/util.d.ts | 6 - node_modules/uri-js/dist/esnext/util.js | 36 - node_modules/uri-js/dist/esnext/util.js.map | 1 - node_modules/uri-js/package.json | 93 - node_modules/uri-js/rollup.config.js | 32 - node_modules/uri-js/src/index.ts | 18 - node_modules/uri-js/src/punycode.d.ts | 24 - node_modules/uri-js/src/regexps-iri.ts | 4 - node_modules/uri-js/src/regexps-uri.ts | 89 - node_modules/uri-js/src/schemes/http.ts | 36 - node_modules/uri-js/src/schemes/https.ts | 11 - node_modules/uri-js/src/schemes/mailto.ts | 182 - node_modules/uri-js/src/schemes/urn-uuid.ts | 36 - node_modules/uri-js/src/schemes/urn.ts | 69 - node_modules/uri-js/src/uri.ts | 556 - node_modules/uri-js/src/util.ts | 40 - node_modules/uri-js/tests/qunit.css | 118 - node_modules/uri-js/tests/qunit.js | 1042 - node_modules/uri-js/tests/test-es5-min.html | 17 - node_modules/uri-js/tests/test-es5.html | 17 - node_modules/uri-js/tests/tests.js | 774 - node_modules/uri-js/tsconfig.json | 20 - node_modules/uri-js/yarn.lock | 1902 -- node_modules/uuid/AUTHORS | 5 - node_modules/uuid/CHANGELOG.md | 119 - node_modules/uuid/LICENSE.md | 21 - node_modules/uuid/README.md | 276 - node_modules/uuid/bin/uuid | 65 - node_modules/uuid/index.js | 8 - node_modules/uuid/lib/bytesToUuid.js | 26 - node_modules/uuid/lib/md5-browser.js | 216 - node_modules/uuid/lib/md5.js | 25 - node_modules/uuid/lib/rng-browser.js | 34 - node_modules/uuid/lib/rng.js | 8 - node_modules/uuid/lib/sha1-browser.js | 89 - node_modules/uuid/lib/sha1.js | 25 - node_modules/uuid/lib/v35.js | 57 - node_modules/uuid/package.json | 100 - node_modules/uuid/v1.js | 109 - node_modules/uuid/v3.js | 4 - node_modules/uuid/v4.js | 29 - node_modules/uuid/v5.js | 3 - node_modules/verror/.npmignore | 9 - node_modules/verror/CHANGES.md | 28 - node_modules/verror/CONTRIBUTING.md | 19 - node_modules/verror/LICENSE | 19 - node_modules/verror/README.md | 528 - node_modules/verror/lib/verror.js | 451 - node_modules/verror/package.json | 51 - 1971 files changed, 13614 insertions(+), 187214 deletions(-) create mode 100644 docs/major rhel7stig-sphinx master doc-source.zip create mode 100644 docs/platform/1.txt create mode 100644 docs/platform/2.txt create mode 100644 docs/platform/3.txt create mode 100644 docs/platform/4.txt create mode 100644 docs/platform/5.txt create mode 100644 docs/platform/ACI Highway FTP Integration Package (1) (1).zip create mode 100644 docs/platform/ACI Highway FTP Integration Package/Canadian Frontier Ports With Province.pdf create mode 100644 docs/platform/ACI Highway FTP Integration Package/Canadian Frontier Ports.docx create mode 100644 docs/platform/ACI Highway FTP Integration Package/Canadian Frontier Ports.pdf create mode 100644 docs/platform/ACI Highway FTP Integration Package/TSU List of New and Modified Error Codes for R37.xls create mode 100644 docs/platform/ACI Highway FTP Integration Package/aci_highway_codes_list.pdf create mode 100644 docs/platform/ACI Highway FTP Integration Package/aci_highway_submission_processing.pdf create mode 100644 docs/platform/ACI Highway FTP Integration Package/response/Cargo_With_Multiple_CCN_Warning.xml create mode 100644 docs/platform/ACI Highway FTP Integration Package/response/aci_highway_external_response.xsd create mode 100644 docs/platform/ACI Highway FTP Integration Package/response/aci_highway_external_response.xsd.bak create mode 100644 docs/platform/ACI Highway FTP Integration Package/response/aci_highway_external_response_fields_explained.doc create mode 100644 docs/platform/ACI Highway FTP Integration Package/response/samples/Cargo release notification.xml create mode 100644 docs/platform/ACI Highway FTP Integration Package/response/samples/Conveyance arrival notification.xml create mode 100644 docs/platform/ACI Highway FTP Integration Package/response/samples/Fail_File1.xml create mode 100644 docs/platform/ACI Highway FTP Integration Package/response/samples/Generic sample.xml create mode 100644 docs/platform/ACI Highway FTP Integration Package/response/samples/Negative acknowledgement - Document contains error and not processed by CBSA.xml create mode 100644 docs/platform/ACI Highway FTP Integration Package/response/samples/Negative response - Report rejected by CBSA.xml create mode 100644 docs/platform/ACI Highway FTP Integration Package/response/samples/Positive acknowledgement - Document submitted successfully to CBSA for processing.xml create mode 100644 docs/platform/ACI Highway FTP Integration Package/response/samples/Positive response - Report accepted by CBSA.xml create mode 100644 docs/platform/ACI Highway FTP Integration Package/response/samples/Success_File1.xml create mode 100644 docs/platform/ACI Highway FTP Integration Package/response/samples/TRIP_ARRIVAL_1234L001170_20120218010815275.xml create mode 100644 docs/platform/ACI Highway FTP Integration Package/submission/aci_highway_external_submit_fields_explained_v2.doc create mode 100644 docs/platform/ACI Highway FTP Integration Package/submission/aci_highway_external_submit_v2.xsd create mode 100644 docs/platform/ACI Highway FTP Integration Package/submission/samples/CSA.xml create mode 100644 docs/platform/ACI Highway FTP Integration Package/submission/samples/Cargo_01.xml create mode 100644 docs/platform/ACI Highway FTP Integration Package/submission/samples/Complete_Manifest_01.xml create mode 100644 docs/platform/ACI Highway FTP Integration Package/submission/samples/IN-BOND.xml create mode 100644 docs/platform/ACI Highway FTP Integration Package/submission/samples/Individual_Conveyance_01.xml create mode 100644 docs/platform/ACI Highway FTP Integration Package/submission/samples/REGULAR.xml create mode 100644 docs/platform/EEtMi3-X4AAt43v.png create mode 100644 docs/platform/INCA/aztec_cheatsheet.pdf create mode 100644 docs/platform/INCA/seedPhrase.txt create mode 100644 docs/platform/Kubernetes_and_networks_-_why_is_this_so_dang_hard_.pdf create mode 100644 docs/platform/MethodID_Parity_Contract_Registry.xlsx create mode 100644 docs/platform/billoflading.svg create mode 160000 docs/platform/corporate-docs create mode 100644 docs/platform/drewry.yaml create mode 100644 docs/platform/esb-freight-trust.yaml create mode 100644 docs/platform/freight-trust smi-spec master .github.zip create mode 100644 docs/platform/freight-trust smi-spec master .github/ISSUE_TEMPLATE/proposal.md create mode 100644 docs/platform/freight-trust smi-spec master .github/ISSUE_TEMPLATE/question.md create mode 100644 docs/platform/freight-trust smi-spec master .github/workflows/main.yml create mode 100644 docs/platform/freight-trust-api.json create mode 100644 docs/platform/freight-trust-primitives.yaml create mode 100644 docs/platform/icons/factory.svg create mode 100644 docs/platform/icons/factory.xml create mode 100644 docs/platform/raw.txt create mode 100644 docs/tos.md create mode 100644 docs/tradedocs/README.md create mode 100644 docs/tradedocs/documents.png create mode 100644 docs/tradedocs/events.png create mode 100644 docs/tradedocs/service-mesh.png create mode 100644 docs/tradedocs/ts.png create mode 100644 docs/tradedocs/vopen2.png delete mode 120000 node_modules/.bin/markdown-link-check delete mode 120000 node_modules/.bin/marked delete mode 120000 node_modules/.bin/sshpk-conv delete mode 120000 node_modules/.bin/sshpk-sign delete mode 120000 node_modules/.bin/sshpk-verify delete mode 120000 node_modules/.bin/uuid delete mode 100644 node_modules/ajv/.tonic_example.js delete mode 100644 node_modules/ajv/LICENSE delete mode 100644 node_modules/ajv/README.md delete mode 100644 node_modules/ajv/dist/ajv.bundle.js delete mode 100644 node_modules/ajv/dist/ajv.min.js delete mode 100644 node_modules/ajv/dist/ajv.min.js.map delete mode 100644 node_modules/ajv/lib/ajv.d.ts delete mode 100644 node_modules/ajv/lib/ajv.js delete mode 100644 node_modules/ajv/lib/cache.js delete mode 100644 node_modules/ajv/lib/compile/async.js delete mode 100644 node_modules/ajv/lib/compile/equal.js delete mode 100644 node_modules/ajv/lib/compile/error_classes.js delete mode 100644 node_modules/ajv/lib/compile/formats.js delete mode 100644 node_modules/ajv/lib/compile/index.js delete mode 100644 node_modules/ajv/lib/compile/resolve.js delete mode 100644 node_modules/ajv/lib/compile/rules.js delete mode 100644 node_modules/ajv/lib/compile/schema_obj.js delete mode 100644 node_modules/ajv/lib/compile/ucs2length.js delete mode 100644 node_modules/ajv/lib/compile/util.js delete mode 100644 node_modules/ajv/lib/data.js delete mode 100644 node_modules/ajv/lib/definition_schema.js delete mode 100644 node_modules/ajv/lib/dot/_limit.jst delete mode 100644 node_modules/ajv/lib/dot/_limitItems.jst delete mode 100644 node_modules/ajv/lib/dot/_limitLength.jst delete mode 100644 node_modules/ajv/lib/dot/_limitProperties.jst delete mode 100644 node_modules/ajv/lib/dot/allOf.jst delete mode 100644 node_modules/ajv/lib/dot/anyOf.jst delete mode 100644 node_modules/ajv/lib/dot/coerce.def delete mode 100644 node_modules/ajv/lib/dot/comment.jst delete mode 100644 node_modules/ajv/lib/dot/const.jst delete mode 100644 node_modules/ajv/lib/dot/contains.jst delete mode 100644 node_modules/ajv/lib/dot/custom.jst delete mode 100644 node_modules/ajv/lib/dot/defaults.def delete mode 100644 node_modules/ajv/lib/dot/definitions.def delete mode 100644 node_modules/ajv/lib/dot/dependencies.jst delete mode 100644 node_modules/ajv/lib/dot/enum.jst delete mode 100644 node_modules/ajv/lib/dot/errors.def delete mode 100644 node_modules/ajv/lib/dot/format.jst delete mode 100644 node_modules/ajv/lib/dot/if.jst delete mode 100644 node_modules/ajv/lib/dot/items.jst delete mode 100644 node_modules/ajv/lib/dot/missing.def delete mode 100644 node_modules/ajv/lib/dot/multipleOf.jst delete mode 100644 node_modules/ajv/lib/dot/not.jst delete mode 100644 node_modules/ajv/lib/dot/oneOf.jst delete mode 100644 node_modules/ajv/lib/dot/pattern.jst delete mode 100644 node_modules/ajv/lib/dot/properties.jst delete mode 100644 node_modules/ajv/lib/dot/propertyNames.jst delete mode 100644 node_modules/ajv/lib/dot/ref.jst delete mode 100644 node_modules/ajv/lib/dot/required.jst delete mode 100644 node_modules/ajv/lib/dot/uniqueItems.jst delete mode 100644 node_modules/ajv/lib/dot/validate.jst delete mode 100644 node_modules/ajv/lib/dotjs/README.md delete mode 100644 node_modules/ajv/lib/dotjs/_limit.js delete mode 100644 node_modules/ajv/lib/dotjs/_limitItems.js delete mode 100644 node_modules/ajv/lib/dotjs/_limitLength.js delete mode 100644 node_modules/ajv/lib/dotjs/_limitProperties.js delete mode 100644 node_modules/ajv/lib/dotjs/allOf.js delete mode 100644 node_modules/ajv/lib/dotjs/anyOf.js delete mode 100644 node_modules/ajv/lib/dotjs/comment.js delete mode 100644 node_modules/ajv/lib/dotjs/const.js delete mode 100644 node_modules/ajv/lib/dotjs/contains.js delete mode 100644 node_modules/ajv/lib/dotjs/custom.js delete mode 100644 node_modules/ajv/lib/dotjs/dependencies.js delete mode 100644 node_modules/ajv/lib/dotjs/enum.js delete mode 100644 node_modules/ajv/lib/dotjs/format.js delete mode 100644 node_modules/ajv/lib/dotjs/if.js delete mode 100644 node_modules/ajv/lib/dotjs/index.js delete mode 100644 node_modules/ajv/lib/dotjs/items.js delete mode 100644 node_modules/ajv/lib/dotjs/multipleOf.js delete mode 100644 node_modules/ajv/lib/dotjs/not.js delete mode 100644 node_modules/ajv/lib/dotjs/oneOf.js delete mode 100644 node_modules/ajv/lib/dotjs/pattern.js delete mode 100644 node_modules/ajv/lib/dotjs/properties.js delete mode 100644 node_modules/ajv/lib/dotjs/propertyNames.js delete mode 100644 node_modules/ajv/lib/dotjs/ref.js delete mode 100644 node_modules/ajv/lib/dotjs/required.js delete mode 100644 node_modules/ajv/lib/dotjs/uniqueItems.js delete mode 100644 node_modules/ajv/lib/dotjs/validate.js delete mode 100644 node_modules/ajv/lib/keyword.js delete mode 100644 node_modules/ajv/lib/refs/data.json delete mode 100644 node_modules/ajv/lib/refs/json-schema-draft-04.json delete mode 100644 node_modules/ajv/lib/refs/json-schema-draft-06.json delete mode 100644 node_modules/ajv/lib/refs/json-schema-draft-07.json delete mode 100644 node_modules/ajv/lib/refs/json-schema-secure.json delete mode 100644 node_modules/ajv/package.json delete mode 100644 node_modules/ajv/scripts/.eslintrc.yml delete mode 100644 node_modules/ajv/scripts/bundle.js delete mode 100644 node_modules/ajv/scripts/compile-dots.js delete mode 100755 node_modules/ajv/scripts/info delete mode 100755 node_modules/ajv/scripts/prepare-tests delete mode 100755 node_modules/ajv/scripts/publish-built-version delete mode 100755 node_modules/ajv/scripts/travis-gh-pages delete mode 100644 node_modules/ansi-styles/index.js delete mode 100644 node_modules/ansi-styles/license delete mode 100644 node_modules/ansi-styles/package.json delete mode 100644 node_modules/ansi-styles/readme.md delete mode 100644 node_modules/asn1/LICENSE delete mode 100644 node_modules/asn1/README.md delete mode 100644 node_modules/asn1/lib/ber/errors.js delete mode 100644 node_modules/asn1/lib/ber/index.js delete mode 100644 node_modules/asn1/lib/ber/reader.js delete mode 100644 node_modules/asn1/lib/ber/types.js delete mode 100644 node_modules/asn1/lib/ber/writer.js delete mode 100644 node_modules/asn1/lib/index.js delete mode 100644 node_modules/asn1/package.json delete mode 100644 node_modules/assert-plus/AUTHORS delete mode 100644 node_modules/assert-plus/CHANGES.md delete mode 100644 node_modules/assert-plus/README.md delete mode 100644 node_modules/assert-plus/assert.js delete mode 100644 node_modules/assert-plus/package.json delete mode 100644 node_modules/async/CHANGELOG.md delete mode 100644 node_modules/async/LICENSE delete mode 100644 node_modules/async/README.md delete mode 100644 node_modules/async/all.js delete mode 100644 node_modules/async/allLimit.js delete mode 100644 node_modules/async/allSeries.js delete mode 100644 node_modules/async/any.js delete mode 100644 node_modules/async/anyLimit.js delete mode 100644 node_modules/async/anySeries.js delete mode 100644 node_modules/async/apply.js delete mode 100644 node_modules/async/applyEach.js delete mode 100644 node_modules/async/applyEachSeries.js delete mode 100644 node_modules/async/asyncify.js delete mode 100644 node_modules/async/auto.js delete mode 100644 node_modules/async/autoInject.js delete mode 100644 node_modules/async/bower.json delete mode 100644 node_modules/async/cargo.js delete mode 100644 node_modules/async/compose.js delete mode 100644 node_modules/async/concat.js delete mode 100644 node_modules/async/concatLimit.js delete mode 100644 node_modules/async/concatSeries.js delete mode 100644 node_modules/async/constant.js delete mode 100644 node_modules/async/detect.js delete mode 100644 node_modules/async/detectLimit.js delete mode 100644 node_modules/async/detectSeries.js delete mode 100644 node_modules/async/dir.js delete mode 100644 node_modules/async/dist/async.js delete mode 100644 node_modules/async/dist/async.min.js delete mode 100644 node_modules/async/dist/async.min.map delete mode 100644 node_modules/async/doDuring.js delete mode 100644 node_modules/async/doUntil.js delete mode 100644 node_modules/async/doWhilst.js delete mode 100644 node_modules/async/during.js delete mode 100644 node_modules/async/each.js delete mode 100644 node_modules/async/eachLimit.js delete mode 100644 node_modules/async/eachOf.js delete mode 100644 node_modules/async/eachOfLimit.js delete mode 100644 node_modules/async/eachOfSeries.js delete mode 100644 node_modules/async/eachSeries.js delete mode 100644 node_modules/async/ensureAsync.js delete mode 100644 node_modules/async/every.js delete mode 100644 node_modules/async/everyLimit.js delete mode 100644 node_modules/async/everySeries.js delete mode 100644 node_modules/async/filter.js delete mode 100644 node_modules/async/filterLimit.js delete mode 100644 node_modules/async/filterSeries.js delete mode 100644 node_modules/async/find.js delete mode 100644 node_modules/async/findLimit.js delete mode 100644 node_modules/async/findSeries.js delete mode 100644 node_modules/async/foldl.js delete mode 100644 node_modules/async/foldr.js delete mode 100644 node_modules/async/forEach.js delete mode 100644 node_modules/async/forEachLimit.js delete mode 100644 node_modules/async/forEachOf.js delete mode 100644 node_modules/async/forEachOfLimit.js delete mode 100644 node_modules/async/forEachOfSeries.js delete mode 100644 node_modules/async/forEachSeries.js delete mode 100644 node_modules/async/forever.js delete mode 100644 node_modules/async/groupBy.js delete mode 100644 node_modules/async/groupByLimit.js delete mode 100644 node_modules/async/groupBySeries.js delete mode 100644 node_modules/async/index.js delete mode 100644 node_modules/async/inject.js delete mode 100644 node_modules/async/internal/DoublyLinkedList.js delete mode 100644 node_modules/async/internal/applyEach.js delete mode 100644 node_modules/async/internal/breakLoop.js delete mode 100644 node_modules/async/internal/consoleFunc.js delete mode 100644 node_modules/async/internal/createTester.js delete mode 100644 node_modules/async/internal/doLimit.js delete mode 100644 node_modules/async/internal/doParallel.js delete mode 100644 node_modules/async/internal/doParallelLimit.js delete mode 100644 node_modules/async/internal/eachOfLimit.js delete mode 100644 node_modules/async/internal/filter.js delete mode 100644 node_modules/async/internal/findGetResult.js delete mode 100644 node_modules/async/internal/getIterator.js delete mode 100644 node_modules/async/internal/initialParams.js delete mode 100644 node_modules/async/internal/iterator.js delete mode 100644 node_modules/async/internal/map.js delete mode 100644 node_modules/async/internal/notId.js delete mode 100644 node_modules/async/internal/once.js delete mode 100644 node_modules/async/internal/onlyOnce.js delete mode 100644 node_modules/async/internal/parallel.js delete mode 100644 node_modules/async/internal/queue.js delete mode 100644 node_modules/async/internal/reject.js delete mode 100644 node_modules/async/internal/setImmediate.js delete mode 100644 node_modules/async/internal/slice.js delete mode 100644 node_modules/async/internal/withoutIndex.js delete mode 100644 node_modules/async/internal/wrapAsync.js delete mode 100644 node_modules/async/log.js delete mode 100644 node_modules/async/map.js delete mode 100644 node_modules/async/mapLimit.js delete mode 100644 node_modules/async/mapSeries.js delete mode 100644 node_modules/async/mapValues.js delete mode 100644 node_modules/async/mapValuesLimit.js delete mode 100644 node_modules/async/mapValuesSeries.js delete mode 100644 node_modules/async/memoize.js delete mode 100644 node_modules/async/nextTick.js delete mode 100644 node_modules/async/package.json delete mode 100644 node_modules/async/parallel.js delete mode 100644 node_modules/async/parallelLimit.js delete mode 100644 node_modules/async/priorityQueue.js delete mode 100644 node_modules/async/queue.js delete mode 100644 node_modules/async/race.js delete mode 100644 node_modules/async/reduce.js delete mode 100644 node_modules/async/reduceRight.js delete mode 100644 node_modules/async/reflect.js delete mode 100644 node_modules/async/reflectAll.js delete mode 100644 node_modules/async/reject.js delete mode 100644 node_modules/async/rejectLimit.js delete mode 100644 node_modules/async/rejectSeries.js delete mode 100644 node_modules/async/retry.js delete mode 100644 node_modules/async/retryable.js delete mode 100644 node_modules/async/select.js delete mode 100644 node_modules/async/selectLimit.js delete mode 100644 node_modules/async/selectSeries.js delete mode 100644 node_modules/async/seq.js delete mode 100644 node_modules/async/series.js delete mode 100644 node_modules/async/setImmediate.js delete mode 100644 node_modules/async/some.js delete mode 100644 node_modules/async/someLimit.js delete mode 100644 node_modules/async/someSeries.js delete mode 100644 node_modules/async/sortBy.js delete mode 100644 node_modules/async/timeout.js delete mode 100644 node_modules/async/times.js delete mode 100644 node_modules/async/timesLimit.js delete mode 100644 node_modules/async/timesSeries.js delete mode 100644 node_modules/async/transform.js delete mode 100644 node_modules/async/tryEach.js delete mode 100644 node_modules/async/unmemoize.js delete mode 100644 node_modules/async/until.js delete mode 100644 node_modules/async/waterfall.js delete mode 100644 node_modules/async/whilst.js delete mode 100644 node_modules/async/wrapSync.js delete mode 100644 node_modules/asynckit/LICENSE delete mode 100644 node_modules/asynckit/README.md delete mode 100644 node_modules/asynckit/bench.js delete mode 100644 node_modules/asynckit/index.js delete mode 100644 node_modules/asynckit/lib/abort.js delete mode 100644 node_modules/asynckit/lib/async.js delete mode 100644 node_modules/asynckit/lib/defer.js delete mode 100644 node_modules/asynckit/lib/iterate.js delete mode 100644 node_modules/asynckit/lib/readable_asynckit.js delete mode 100644 node_modules/asynckit/lib/readable_parallel.js delete mode 100644 node_modules/asynckit/lib/readable_serial.js delete mode 100644 node_modules/asynckit/lib/readable_serial_ordered.js delete mode 100644 node_modules/asynckit/lib/state.js delete mode 100644 node_modules/asynckit/lib/streamify.js delete mode 100644 node_modules/asynckit/lib/terminator.js delete mode 100644 node_modules/asynckit/package.json delete mode 100644 node_modules/asynckit/parallel.js delete mode 100644 node_modules/asynckit/serial.js delete mode 100644 node_modules/asynckit/serialOrdered.js delete mode 100644 node_modules/asynckit/stream.js delete mode 100644 node_modules/aws-sign2/LICENSE delete mode 100644 node_modules/aws-sign2/README.md delete mode 100644 node_modules/aws-sign2/index.js delete mode 100644 node_modules/aws-sign2/package.json delete mode 100644 node_modules/aws4/.travis.yml delete mode 100644 node_modules/aws4/LICENSE delete mode 100644 node_modules/aws4/README.md delete mode 100644 node_modules/aws4/aws4.js delete mode 100644 node_modules/aws4/lru.js delete mode 100644 node_modules/aws4/package.json delete mode 100644 node_modules/bcrypt-pbkdf/CONTRIBUTING.md delete mode 100644 node_modules/bcrypt-pbkdf/LICENSE delete mode 100644 node_modules/bcrypt-pbkdf/README.md delete mode 100644 node_modules/bcrypt-pbkdf/index.js delete mode 100644 node_modules/bcrypt-pbkdf/package.json delete mode 100644 node_modules/caseless/LICENSE delete mode 100644 node_modules/caseless/README.md delete mode 100644 node_modules/caseless/index.js delete mode 100644 node_modules/caseless/package.json delete mode 100644 node_modules/caseless/test.js delete mode 100644 node_modules/chalk/index.js delete mode 100644 node_modules/chalk/index.js.flow delete mode 100644 node_modules/chalk/license delete mode 100644 node_modules/chalk/package.json delete mode 100644 node_modules/chalk/readme.md delete mode 100644 node_modules/chalk/templates.js delete mode 100644 node_modules/chalk/types/index.d.ts delete mode 100644 node_modules/color-convert/CHANGELOG.md delete mode 100644 node_modules/color-convert/LICENSE delete mode 100644 node_modules/color-convert/README.md delete mode 100644 node_modules/color-convert/conversions.js delete mode 100644 node_modules/color-convert/index.js delete mode 100644 node_modules/color-convert/package.json delete mode 100644 node_modules/color-convert/route.js delete mode 100644 node_modules/color-name/.eslintrc.json delete mode 100644 node_modules/color-name/.npmignore delete mode 100644 node_modules/color-name/LICENSE delete mode 100644 node_modules/color-name/README.md delete mode 100644 node_modules/color-name/index.js delete mode 100644 node_modules/color-name/package.json delete mode 100644 node_modules/color-name/test.js delete mode 100644 node_modules/combined-stream/License delete mode 100644 node_modules/combined-stream/Readme.md delete mode 100644 node_modules/combined-stream/lib/combined_stream.js delete mode 100644 node_modules/combined-stream/package.json delete mode 100644 node_modules/combined-stream/yarn.lock delete mode 100644 node_modules/commander/CHANGELOG.md delete mode 100644 node_modules/commander/LICENSE delete mode 100644 node_modules/commander/Readme.md delete mode 100644 node_modules/commander/index.js delete mode 100644 node_modules/commander/package.json delete mode 100644 node_modules/commander/typings/index.d.ts delete mode 100644 node_modules/core-util-is/LICENSE delete mode 100644 node_modules/core-util-is/README.md delete mode 100644 node_modules/core-util-is/float.patch delete mode 100644 node_modules/core-util-is/lib/util.js delete mode 100644 node_modules/core-util-is/package.json delete mode 100644 node_modules/core-util-is/test.js delete mode 100644 node_modules/dashdash/CHANGES.md delete mode 100644 node_modules/dashdash/LICENSE.txt delete mode 100644 node_modules/dashdash/README.md delete mode 100644 node_modules/dashdash/etc/dashdash.bash_completion.in delete mode 100644 node_modules/dashdash/lib/dashdash.js delete mode 100644 node_modules/dashdash/package.json delete mode 100644 node_modules/delayed-stream/.npmignore delete mode 100644 node_modules/delayed-stream/License delete mode 100644 node_modules/delayed-stream/Makefile delete mode 100644 node_modules/delayed-stream/Readme.md delete mode 100644 node_modules/delayed-stream/lib/delayed_stream.js delete mode 100644 node_modules/delayed-stream/package.json delete mode 100755 node_modules/ecc-jsbn/LICENSE delete mode 100755 node_modules/ecc-jsbn/README.md delete mode 100755 node_modules/ecc-jsbn/index.js delete mode 100755 node_modules/ecc-jsbn/lib/LICENSE-jsbn delete mode 100755 node_modules/ecc-jsbn/lib/ec.js delete mode 100755 node_modules/ecc-jsbn/lib/sec.js delete mode 100755 node_modules/ecc-jsbn/package.json delete mode 100755 node_modules/ecc-jsbn/test.js delete mode 100644 node_modules/escape-string-regexp/index.js delete mode 100644 node_modules/escape-string-regexp/license delete mode 100644 node_modules/escape-string-regexp/package.json delete mode 100644 node_modules/escape-string-regexp/readme.md delete mode 100644 node_modules/extend/.editorconfig delete mode 100644 node_modules/extend/.eslintrc delete mode 100644 node_modules/extend/.jscs.json delete mode 100644 node_modules/extend/.travis.yml delete mode 100644 node_modules/extend/CHANGELOG.md delete mode 100644 node_modules/extend/LICENSE delete mode 100644 node_modules/extend/README.md delete mode 100644 node_modules/extend/component.json delete mode 100644 node_modules/extend/index.js delete mode 100644 node_modules/extend/package.json delete mode 100644 node_modules/extsprintf/.gitmodules delete mode 100644 node_modules/extsprintf/.npmignore delete mode 100644 node_modules/extsprintf/LICENSE delete mode 100644 node_modules/extsprintf/Makefile delete mode 100644 node_modules/extsprintf/Makefile.targ delete mode 100644 node_modules/extsprintf/README.md delete mode 100644 node_modules/extsprintf/jsl.node.conf delete mode 100644 node_modules/extsprintf/lib/extsprintf.js delete mode 100644 node_modules/extsprintf/package.json delete mode 100644 node_modules/fast-deep-equal/LICENSE delete mode 100644 node_modules/fast-deep-equal/README.md delete mode 100644 node_modules/fast-deep-equal/es6/index.d.ts delete mode 100644 node_modules/fast-deep-equal/es6/index.js delete mode 100644 node_modules/fast-deep-equal/es6/react.d.ts delete mode 100644 node_modules/fast-deep-equal/es6/react.js delete mode 100644 node_modules/fast-deep-equal/index.d.ts delete mode 100644 node_modules/fast-deep-equal/index.js delete mode 100644 node_modules/fast-deep-equal/package.json delete mode 100644 node_modules/fast-deep-equal/react.d.ts delete mode 100644 node_modules/fast-deep-equal/react.js delete mode 100644 node_modules/fast-json-stable-stringify/.eslintrc.yml delete mode 100644 node_modules/fast-json-stable-stringify/.github/FUNDING.yml delete mode 100644 node_modules/fast-json-stable-stringify/.travis.yml delete mode 100644 node_modules/fast-json-stable-stringify/LICENSE delete mode 100644 node_modules/fast-json-stable-stringify/README.md delete mode 100644 node_modules/fast-json-stable-stringify/benchmark/index.js delete mode 100644 node_modules/fast-json-stable-stringify/benchmark/test.json delete mode 100644 node_modules/fast-json-stable-stringify/example/key_cmp.js delete mode 100644 node_modules/fast-json-stable-stringify/example/nested.js delete mode 100644 node_modules/fast-json-stable-stringify/example/str.js delete mode 100644 node_modules/fast-json-stable-stringify/example/value_cmp.js delete mode 100644 node_modules/fast-json-stable-stringify/index.d.ts delete mode 100644 node_modules/fast-json-stable-stringify/index.js delete mode 100644 node_modules/fast-json-stable-stringify/package.json delete mode 100644 node_modules/fast-json-stable-stringify/test/cmp.js delete mode 100644 node_modules/fast-json-stable-stringify/test/nested.js delete mode 100644 node_modules/fast-json-stable-stringify/test/str.js delete mode 100644 node_modules/fast-json-stable-stringify/test/to-json.js delete mode 100644 node_modules/forever-agent/LICENSE delete mode 100644 node_modules/forever-agent/README.md delete mode 100644 node_modules/forever-agent/index.js delete mode 100644 node_modules/forever-agent/package.json delete mode 100644 node_modules/form-data/License delete mode 100644 node_modules/form-data/README.md delete mode 100644 node_modules/form-data/README.md.bak delete mode 100644 node_modules/form-data/lib/browser.js delete mode 100644 node_modules/form-data/lib/form_data.js delete mode 100644 node_modules/form-data/lib/populate.js delete mode 100644 node_modules/form-data/package.json delete mode 100644 node_modules/form-data/yarn.lock delete mode 100644 node_modules/getpass/.npmignore delete mode 100644 node_modules/getpass/.travis.yml delete mode 100644 node_modules/getpass/LICENSE delete mode 100644 node_modules/getpass/README.md delete mode 100644 node_modules/getpass/lib/index.js delete mode 100644 node_modules/getpass/package.json delete mode 100644 node_modules/har-schema/LICENSE delete mode 100644 node_modules/har-schema/README.md delete mode 100644 node_modules/har-schema/lib/afterRequest.json delete mode 100644 node_modules/har-schema/lib/beforeRequest.json delete mode 100644 node_modules/har-schema/lib/browser.json delete mode 100644 node_modules/har-schema/lib/cache.json delete mode 100644 node_modules/har-schema/lib/content.json delete mode 100644 node_modules/har-schema/lib/cookie.json delete mode 100644 node_modules/har-schema/lib/creator.json delete mode 100644 node_modules/har-schema/lib/entry.json delete mode 100644 node_modules/har-schema/lib/har.json delete mode 100644 node_modules/har-schema/lib/header.json delete mode 100644 node_modules/har-schema/lib/index.js delete mode 100644 node_modules/har-schema/lib/log.json delete mode 100644 node_modules/har-schema/lib/page.json delete mode 100644 node_modules/har-schema/lib/pageTimings.json delete mode 100644 node_modules/har-schema/lib/postData.json delete mode 100644 node_modules/har-schema/lib/query.json delete mode 100644 node_modules/har-schema/lib/request.json delete mode 100644 node_modules/har-schema/lib/response.json delete mode 100644 node_modules/har-schema/lib/timings.json delete mode 100644 node_modules/har-schema/package.json delete mode 100644 node_modules/har-validator/LICENSE delete mode 100644 node_modules/har-validator/README.md delete mode 100644 node_modules/har-validator/lib/async.js delete mode 100644 node_modules/har-validator/lib/error.js delete mode 100644 node_modules/har-validator/lib/promise.js delete mode 100644 node_modules/har-validator/package.json delete mode 100644 node_modules/has-flag/index.js delete mode 100644 node_modules/has-flag/license delete mode 100644 node_modules/has-flag/package.json delete mode 100644 node_modules/has-flag/readme.md delete mode 100644 node_modules/http-signature/.dir-locals.el delete mode 100644 node_modules/http-signature/.npmignore delete mode 100644 node_modules/http-signature/CHANGES.md delete mode 100644 node_modules/http-signature/LICENSE delete mode 100644 node_modules/http-signature/README.md delete mode 100644 node_modules/http-signature/http_signing.md delete mode 100644 node_modules/http-signature/lib/index.js delete mode 100644 node_modules/http-signature/lib/parser.js delete mode 100644 node_modules/http-signature/lib/signer.js delete mode 100644 node_modules/http-signature/lib/utils.js delete mode 100644 node_modules/http-signature/lib/verify.js delete mode 100644 node_modules/http-signature/package.json delete mode 100644 node_modules/is-absolute-url/index.d.ts delete mode 100644 node_modules/is-absolute-url/index.js delete mode 100644 node_modules/is-absolute-url/license delete mode 100644 node_modules/is-absolute-url/package.json delete mode 100644 node_modules/is-absolute-url/readme.md delete mode 100644 node_modules/is-relative-url/index.d.ts delete mode 100644 node_modules/is-relative-url/index.js delete mode 100644 node_modules/is-relative-url/license delete mode 100644 node_modules/is-relative-url/package.json delete mode 100644 node_modules/is-relative-url/readme.md delete mode 100644 node_modules/is-typedarray/LICENSE.md delete mode 100644 node_modules/is-typedarray/README.md delete mode 100644 node_modules/is-typedarray/index.js delete mode 100644 node_modules/is-typedarray/package.json delete mode 100644 node_modules/is-typedarray/test.js delete mode 100644 node_modules/isemail/LICENSE delete mode 100755 node_modules/isemail/README.md delete mode 100644 node_modules/isemail/lib/index.d.ts delete mode 100644 node_modules/isemail/lib/index.js delete mode 100644 node_modules/isemail/package.json delete mode 100644 node_modules/isstream/.jshintrc delete mode 100644 node_modules/isstream/.npmignore delete mode 100644 node_modules/isstream/.travis.yml delete mode 100644 node_modules/isstream/LICENSE.md delete mode 100644 node_modules/isstream/README.md delete mode 100644 node_modules/isstream/isstream.js delete mode 100644 node_modules/isstream/package.json delete mode 100644 node_modules/isstream/test.js delete mode 100644 node_modules/jsbn/.npmignore delete mode 100644 node_modules/jsbn/LICENSE delete mode 100644 node_modules/jsbn/README.md delete mode 100644 node_modules/jsbn/example.html delete mode 100644 node_modules/jsbn/example.js delete mode 100644 node_modules/jsbn/index.js delete mode 100644 node_modules/jsbn/package.json delete mode 100644 node_modules/json-schema-traverse/.eslintrc.yml delete mode 100644 node_modules/json-schema-traverse/.travis.yml delete mode 100644 node_modules/json-schema-traverse/LICENSE delete mode 100644 node_modules/json-schema-traverse/README.md delete mode 100644 node_modules/json-schema-traverse/index.js delete mode 100644 node_modules/json-schema-traverse/package.json delete mode 100644 node_modules/json-schema-traverse/spec/.eslintrc.yml delete mode 100644 node_modules/json-schema-traverse/spec/fixtures/schema.js delete mode 100644 node_modules/json-schema-traverse/spec/index.spec.js delete mode 100644 node_modules/json-schema/README.md delete mode 100644 node_modules/json-schema/draft-00/hyper-schema delete mode 100644 node_modules/json-schema/draft-00/json-ref delete mode 100644 node_modules/json-schema/draft-00/links delete mode 100644 node_modules/json-schema/draft-00/schema delete mode 100644 node_modules/json-schema/draft-01/hyper-schema delete mode 100644 node_modules/json-schema/draft-01/json-ref delete mode 100644 node_modules/json-schema/draft-01/links delete mode 100644 node_modules/json-schema/draft-01/schema delete mode 100644 node_modules/json-schema/draft-02/hyper-schema delete mode 100644 node_modules/json-schema/draft-02/json-ref delete mode 100644 node_modules/json-schema/draft-02/links delete mode 100644 node_modules/json-schema/draft-02/schema delete mode 100644 node_modules/json-schema/draft-03/examples/address delete mode 100644 node_modules/json-schema/draft-03/examples/calendar delete mode 100644 node_modules/json-schema/draft-03/examples/card delete mode 100644 node_modules/json-schema/draft-03/examples/geo delete mode 100644 node_modules/json-schema/draft-03/examples/interfaces delete mode 100644 node_modules/json-schema/draft-03/hyper-schema delete mode 100644 node_modules/json-schema/draft-03/json-ref delete mode 100644 node_modules/json-schema/draft-03/links delete mode 100644 node_modules/json-schema/draft-03/schema delete mode 100644 node_modules/json-schema/draft-04/hyper-schema delete mode 100644 node_modules/json-schema/draft-04/links delete mode 100644 node_modules/json-schema/draft-04/schema delete mode 100644 node_modules/json-schema/draft-zyp-json-schema-03.xml delete mode 100644 node_modules/json-schema/draft-zyp-json-schema-04.xml delete mode 100644 node_modules/json-schema/lib/links.js delete mode 100644 node_modules/json-schema/lib/validate.js delete mode 100644 node_modules/json-schema/package.json delete mode 100644 node_modules/json-schema/test/tests.js delete mode 100644 node_modules/json-stringify-safe/.npmignore delete mode 100644 node_modules/json-stringify-safe/CHANGELOG.md delete mode 100644 node_modules/json-stringify-safe/LICENSE delete mode 100644 node_modules/json-stringify-safe/Makefile delete mode 100644 node_modules/json-stringify-safe/README.md delete mode 100644 node_modules/json-stringify-safe/package.json delete mode 100644 node_modules/json-stringify-safe/stringify.js delete mode 100644 node_modules/json-stringify-safe/test/mocha.opts delete mode 100644 node_modules/json-stringify-safe/test/stringify_test.js delete mode 100644 node_modules/jsprim/CHANGES.md delete mode 100644 node_modules/jsprim/CONTRIBUTING.md delete mode 100644 node_modules/jsprim/LICENSE delete mode 100644 node_modules/jsprim/README.md delete mode 100644 node_modules/jsprim/lib/jsprim.js delete mode 100644 node_modules/jsprim/package.json delete mode 100644 node_modules/link-check/.travis.yml delete mode 100644 node_modules/link-check/CHANGELOG.md delete mode 100644 node_modules/link-check/CONTRIBUTING.md delete mode 100644 node_modules/link-check/LICENSE.md delete mode 100644 node_modules/link-check/README.md delete mode 100644 node_modules/link-check/index.js delete mode 100644 node_modules/link-check/lib/BlackHole.js delete mode 100644 node_modules/link-check/lib/LinkCheckResult.js delete mode 100644 node_modules/link-check/lib/proto/file.js delete mode 100644 node_modules/link-check/lib/proto/http.js delete mode 100644 node_modules/link-check/lib/proto/https.js delete mode 100644 node_modules/link-check/lib/proto/mailto.js delete mode 100644 node_modules/link-check/package.json delete mode 100644 node_modules/link-check/test/fixtures/file.md delete mode 100644 node_modules/link-check/test/fixtures/s p a c e/A.md delete mode 100644 node_modules/link-check/test/link-check.test.js delete mode 100644 node_modules/lodash/LICENSE delete mode 100644 node_modules/lodash/README.md delete mode 100644 node_modules/lodash/_DataView.js delete mode 100644 node_modules/lodash/_Hash.js delete mode 100644 node_modules/lodash/_LazyWrapper.js delete mode 100644 node_modules/lodash/_ListCache.js delete mode 100644 node_modules/lodash/_LodashWrapper.js delete mode 100644 node_modules/lodash/_Map.js delete mode 100644 node_modules/lodash/_MapCache.js delete mode 100644 node_modules/lodash/_Promise.js delete mode 100644 node_modules/lodash/_Set.js delete mode 100644 node_modules/lodash/_SetCache.js delete mode 100644 node_modules/lodash/_Stack.js delete mode 100644 node_modules/lodash/_Symbol.js delete mode 100644 node_modules/lodash/_Uint8Array.js delete mode 100644 node_modules/lodash/_WeakMap.js delete mode 100644 node_modules/lodash/_apply.js delete mode 100644 node_modules/lodash/_arrayAggregator.js delete mode 100644 node_modules/lodash/_arrayEach.js delete mode 100644 node_modules/lodash/_arrayEachRight.js delete mode 100644 node_modules/lodash/_arrayEvery.js delete mode 100644 node_modules/lodash/_arrayFilter.js delete mode 100644 node_modules/lodash/_arrayIncludes.js delete mode 100644 node_modules/lodash/_arrayIncludesWith.js delete mode 100644 node_modules/lodash/_arrayLikeKeys.js delete mode 100644 node_modules/lodash/_arrayMap.js delete mode 100644 node_modules/lodash/_arrayPush.js delete mode 100644 node_modules/lodash/_arrayReduce.js delete mode 100644 node_modules/lodash/_arrayReduceRight.js delete mode 100644 node_modules/lodash/_arraySample.js delete mode 100644 node_modules/lodash/_arraySampleSize.js delete mode 100644 node_modules/lodash/_arrayShuffle.js delete mode 100644 node_modules/lodash/_arraySome.js delete mode 100644 node_modules/lodash/_asciiSize.js delete mode 100644 node_modules/lodash/_asciiToArray.js delete mode 100644 node_modules/lodash/_asciiWords.js delete mode 100644 node_modules/lodash/_assignMergeValue.js delete mode 100644 node_modules/lodash/_assignValue.js delete mode 100644 node_modules/lodash/_assocIndexOf.js delete mode 100644 node_modules/lodash/_baseAggregator.js delete mode 100644 node_modules/lodash/_baseAssign.js delete mode 100644 node_modules/lodash/_baseAssignIn.js delete mode 100644 node_modules/lodash/_baseAssignValue.js delete mode 100644 node_modules/lodash/_baseAt.js delete mode 100644 node_modules/lodash/_baseClamp.js delete mode 100644 node_modules/lodash/_baseClone.js delete mode 100644 node_modules/lodash/_baseConforms.js delete mode 100644 node_modules/lodash/_baseConformsTo.js delete mode 100644 node_modules/lodash/_baseCreate.js delete mode 100644 node_modules/lodash/_baseDelay.js delete mode 100644 node_modules/lodash/_baseDifference.js delete mode 100644 node_modules/lodash/_baseEach.js delete mode 100644 node_modules/lodash/_baseEachRight.js delete mode 100644 node_modules/lodash/_baseEvery.js delete mode 100644 node_modules/lodash/_baseExtremum.js delete mode 100644 node_modules/lodash/_baseFill.js delete mode 100644 node_modules/lodash/_baseFilter.js delete mode 100644 node_modules/lodash/_baseFindIndex.js delete mode 100644 node_modules/lodash/_baseFindKey.js delete mode 100644 node_modules/lodash/_baseFlatten.js delete mode 100644 node_modules/lodash/_baseFor.js delete mode 100644 node_modules/lodash/_baseForOwn.js delete mode 100644 node_modules/lodash/_baseForOwnRight.js delete mode 100644 node_modules/lodash/_baseForRight.js delete mode 100644 node_modules/lodash/_baseFunctions.js delete mode 100644 node_modules/lodash/_baseGet.js delete mode 100644 node_modules/lodash/_baseGetAllKeys.js delete mode 100644 node_modules/lodash/_baseGetTag.js delete mode 100644 node_modules/lodash/_baseGt.js delete mode 100644 node_modules/lodash/_baseHas.js delete mode 100644 node_modules/lodash/_baseHasIn.js delete mode 100644 node_modules/lodash/_baseInRange.js delete mode 100644 node_modules/lodash/_baseIndexOf.js delete mode 100644 node_modules/lodash/_baseIndexOfWith.js delete mode 100644 node_modules/lodash/_baseIntersection.js delete mode 100644 node_modules/lodash/_baseInverter.js delete mode 100644 node_modules/lodash/_baseInvoke.js delete mode 100644 node_modules/lodash/_baseIsArguments.js delete mode 100644 node_modules/lodash/_baseIsArrayBuffer.js delete mode 100644 node_modules/lodash/_baseIsDate.js delete mode 100644 node_modules/lodash/_baseIsEqual.js delete mode 100644 node_modules/lodash/_baseIsEqualDeep.js delete mode 100644 node_modules/lodash/_baseIsMap.js delete mode 100644 node_modules/lodash/_baseIsMatch.js delete mode 100644 node_modules/lodash/_baseIsNaN.js delete mode 100644 node_modules/lodash/_baseIsNative.js delete mode 100644 node_modules/lodash/_baseIsRegExp.js delete mode 100644 node_modules/lodash/_baseIsSet.js delete mode 100644 node_modules/lodash/_baseIsTypedArray.js delete mode 100644 node_modules/lodash/_baseIteratee.js delete mode 100644 node_modules/lodash/_baseKeys.js delete mode 100644 node_modules/lodash/_baseKeysIn.js delete mode 100644 node_modules/lodash/_baseLodash.js delete mode 100644 node_modules/lodash/_baseLt.js delete mode 100644 node_modules/lodash/_baseMap.js delete mode 100644 node_modules/lodash/_baseMatches.js delete mode 100644 node_modules/lodash/_baseMatchesProperty.js delete mode 100644 node_modules/lodash/_baseMean.js delete mode 100644 node_modules/lodash/_baseMerge.js delete mode 100644 node_modules/lodash/_baseMergeDeep.js delete mode 100644 node_modules/lodash/_baseNth.js delete mode 100644 node_modules/lodash/_baseOrderBy.js delete mode 100644 node_modules/lodash/_basePick.js delete mode 100644 node_modules/lodash/_basePickBy.js delete mode 100644 node_modules/lodash/_baseProperty.js delete mode 100644 node_modules/lodash/_basePropertyDeep.js delete mode 100644 node_modules/lodash/_basePropertyOf.js delete mode 100644 node_modules/lodash/_basePullAll.js delete mode 100644 node_modules/lodash/_basePullAt.js delete mode 100644 node_modules/lodash/_baseRandom.js delete mode 100644 node_modules/lodash/_baseRange.js delete mode 100644 node_modules/lodash/_baseReduce.js delete mode 100644 node_modules/lodash/_baseRepeat.js delete mode 100644 node_modules/lodash/_baseRest.js delete mode 100644 node_modules/lodash/_baseSample.js delete mode 100644 node_modules/lodash/_baseSampleSize.js delete mode 100644 node_modules/lodash/_baseSet.js delete mode 100644 node_modules/lodash/_baseSetData.js delete mode 100644 node_modules/lodash/_baseSetToString.js delete mode 100644 node_modules/lodash/_baseShuffle.js delete mode 100644 node_modules/lodash/_baseSlice.js delete mode 100644 node_modules/lodash/_baseSome.js delete mode 100644 node_modules/lodash/_baseSortBy.js delete mode 100644 node_modules/lodash/_baseSortedIndex.js delete mode 100644 node_modules/lodash/_baseSortedIndexBy.js delete mode 100644 node_modules/lodash/_baseSortedUniq.js delete mode 100644 node_modules/lodash/_baseSum.js delete mode 100644 node_modules/lodash/_baseTimes.js delete mode 100644 node_modules/lodash/_baseToNumber.js delete mode 100644 node_modules/lodash/_baseToPairs.js delete mode 100644 node_modules/lodash/_baseToString.js delete mode 100644 node_modules/lodash/_baseUnary.js delete mode 100644 node_modules/lodash/_baseUniq.js delete mode 100644 node_modules/lodash/_baseUnset.js delete mode 100644 node_modules/lodash/_baseUpdate.js delete mode 100644 node_modules/lodash/_baseValues.js delete mode 100644 node_modules/lodash/_baseWhile.js delete mode 100644 node_modules/lodash/_baseWrapperValue.js delete mode 100644 node_modules/lodash/_baseXor.js delete mode 100644 node_modules/lodash/_baseZipObject.js delete mode 100644 node_modules/lodash/_cacheHas.js delete mode 100644 node_modules/lodash/_castArrayLikeObject.js delete mode 100644 node_modules/lodash/_castFunction.js delete mode 100644 node_modules/lodash/_castPath.js delete mode 100644 node_modules/lodash/_castRest.js delete mode 100644 node_modules/lodash/_castSlice.js delete mode 100644 node_modules/lodash/_charsEndIndex.js delete mode 100644 node_modules/lodash/_charsStartIndex.js delete mode 100644 node_modules/lodash/_cloneArrayBuffer.js delete mode 100644 node_modules/lodash/_cloneBuffer.js delete mode 100644 node_modules/lodash/_cloneDataView.js delete mode 100644 node_modules/lodash/_cloneRegExp.js delete mode 100644 node_modules/lodash/_cloneSymbol.js delete mode 100644 node_modules/lodash/_cloneTypedArray.js delete mode 100644 node_modules/lodash/_compareAscending.js delete mode 100644 node_modules/lodash/_compareMultiple.js delete mode 100644 node_modules/lodash/_composeArgs.js delete mode 100644 node_modules/lodash/_composeArgsRight.js delete mode 100644 node_modules/lodash/_copyArray.js delete mode 100644 node_modules/lodash/_copyObject.js delete mode 100644 node_modules/lodash/_copySymbols.js delete mode 100644 node_modules/lodash/_copySymbolsIn.js delete mode 100644 node_modules/lodash/_coreJsData.js delete mode 100644 node_modules/lodash/_countHolders.js delete mode 100644 node_modules/lodash/_createAggregator.js delete mode 100644 node_modules/lodash/_createAssigner.js delete mode 100644 node_modules/lodash/_createBaseEach.js delete mode 100644 node_modules/lodash/_createBaseFor.js delete mode 100644 node_modules/lodash/_createBind.js delete mode 100644 node_modules/lodash/_createCaseFirst.js delete mode 100644 node_modules/lodash/_createCompounder.js delete mode 100644 node_modules/lodash/_createCtor.js delete mode 100644 node_modules/lodash/_createCurry.js delete mode 100644 node_modules/lodash/_createFind.js delete mode 100644 node_modules/lodash/_createFlow.js delete mode 100644 node_modules/lodash/_createHybrid.js delete mode 100644 node_modules/lodash/_createInverter.js delete mode 100644 node_modules/lodash/_createMathOperation.js delete mode 100644 node_modules/lodash/_createOver.js delete mode 100644 node_modules/lodash/_createPadding.js delete mode 100644 node_modules/lodash/_createPartial.js delete mode 100644 node_modules/lodash/_createRange.js delete mode 100644 node_modules/lodash/_createRecurry.js delete mode 100644 node_modules/lodash/_createRelationalOperation.js delete mode 100644 node_modules/lodash/_createRound.js delete mode 100644 node_modules/lodash/_createSet.js delete mode 100644 node_modules/lodash/_createToPairs.js delete mode 100644 node_modules/lodash/_createWrap.js delete mode 100644 node_modules/lodash/_customDefaultsAssignIn.js delete mode 100644 node_modules/lodash/_customDefaultsMerge.js delete mode 100644 node_modules/lodash/_customOmitClone.js delete mode 100644 node_modules/lodash/_deburrLetter.js delete mode 100644 node_modules/lodash/_defineProperty.js delete mode 100644 node_modules/lodash/_equalArrays.js delete mode 100644 node_modules/lodash/_equalByTag.js delete mode 100644 node_modules/lodash/_equalObjects.js delete mode 100644 node_modules/lodash/_escapeHtmlChar.js delete mode 100644 node_modules/lodash/_escapeStringChar.js delete mode 100644 node_modules/lodash/_flatRest.js delete mode 100644 node_modules/lodash/_freeGlobal.js delete mode 100644 node_modules/lodash/_getAllKeys.js delete mode 100644 node_modules/lodash/_getAllKeysIn.js delete mode 100644 node_modules/lodash/_getData.js delete mode 100644 node_modules/lodash/_getFuncName.js delete mode 100644 node_modules/lodash/_getHolder.js delete mode 100644 node_modules/lodash/_getMapData.js delete mode 100644 node_modules/lodash/_getMatchData.js delete mode 100644 node_modules/lodash/_getNative.js delete mode 100644 node_modules/lodash/_getPrototype.js delete mode 100644 node_modules/lodash/_getRawTag.js delete mode 100644 node_modules/lodash/_getSymbols.js delete mode 100644 node_modules/lodash/_getSymbolsIn.js delete mode 100644 node_modules/lodash/_getTag.js delete mode 100644 node_modules/lodash/_getValue.js delete mode 100644 node_modules/lodash/_getView.js delete mode 100644 node_modules/lodash/_getWrapDetails.js delete mode 100644 node_modules/lodash/_hasPath.js delete mode 100644 node_modules/lodash/_hasUnicode.js delete mode 100644 node_modules/lodash/_hasUnicodeWord.js delete mode 100644 node_modules/lodash/_hashClear.js delete mode 100644 node_modules/lodash/_hashDelete.js delete mode 100644 node_modules/lodash/_hashGet.js delete mode 100644 node_modules/lodash/_hashHas.js delete mode 100644 node_modules/lodash/_hashSet.js delete mode 100644 node_modules/lodash/_initCloneArray.js delete mode 100644 node_modules/lodash/_initCloneByTag.js delete mode 100644 node_modules/lodash/_initCloneObject.js delete mode 100644 node_modules/lodash/_insertWrapDetails.js delete mode 100644 node_modules/lodash/_isFlattenable.js delete mode 100644 node_modules/lodash/_isIndex.js delete mode 100644 node_modules/lodash/_isIterateeCall.js delete mode 100644 node_modules/lodash/_isKey.js delete mode 100644 node_modules/lodash/_isKeyable.js delete mode 100644 node_modules/lodash/_isLaziable.js delete mode 100644 node_modules/lodash/_isMaskable.js delete mode 100644 node_modules/lodash/_isMasked.js delete mode 100644 node_modules/lodash/_isPrototype.js delete mode 100644 node_modules/lodash/_isStrictComparable.js delete mode 100644 node_modules/lodash/_iteratorToArray.js delete mode 100644 node_modules/lodash/_lazyClone.js delete mode 100644 node_modules/lodash/_lazyReverse.js delete mode 100644 node_modules/lodash/_lazyValue.js delete mode 100644 node_modules/lodash/_listCacheClear.js delete mode 100644 node_modules/lodash/_listCacheDelete.js delete mode 100644 node_modules/lodash/_listCacheGet.js delete mode 100644 node_modules/lodash/_listCacheHas.js delete mode 100644 node_modules/lodash/_listCacheSet.js delete mode 100644 node_modules/lodash/_mapCacheClear.js delete mode 100644 node_modules/lodash/_mapCacheDelete.js delete mode 100644 node_modules/lodash/_mapCacheGet.js delete mode 100644 node_modules/lodash/_mapCacheHas.js delete mode 100644 node_modules/lodash/_mapCacheSet.js delete mode 100644 node_modules/lodash/_mapToArray.js delete mode 100644 node_modules/lodash/_matchesStrictComparable.js delete mode 100644 node_modules/lodash/_memoizeCapped.js delete mode 100644 node_modules/lodash/_mergeData.js delete mode 100644 node_modules/lodash/_metaMap.js delete mode 100644 node_modules/lodash/_nativeCreate.js delete mode 100644 node_modules/lodash/_nativeKeys.js delete mode 100644 node_modules/lodash/_nativeKeysIn.js delete mode 100644 node_modules/lodash/_nodeUtil.js delete mode 100644 node_modules/lodash/_objectToString.js delete mode 100644 node_modules/lodash/_overArg.js delete mode 100644 node_modules/lodash/_overRest.js delete mode 100644 node_modules/lodash/_parent.js delete mode 100644 node_modules/lodash/_reEscape.js delete mode 100644 node_modules/lodash/_reEvaluate.js delete mode 100644 node_modules/lodash/_reInterpolate.js delete mode 100644 node_modules/lodash/_realNames.js delete mode 100644 node_modules/lodash/_reorder.js delete mode 100644 node_modules/lodash/_replaceHolders.js delete mode 100644 node_modules/lodash/_root.js delete mode 100644 node_modules/lodash/_safeGet.js delete mode 100644 node_modules/lodash/_setCacheAdd.js delete mode 100644 node_modules/lodash/_setCacheHas.js delete mode 100644 node_modules/lodash/_setData.js delete mode 100644 node_modules/lodash/_setToArray.js delete mode 100644 node_modules/lodash/_setToPairs.js delete mode 100644 node_modules/lodash/_setToString.js delete mode 100644 node_modules/lodash/_setWrapToString.js delete mode 100644 node_modules/lodash/_shortOut.js delete mode 100644 node_modules/lodash/_shuffleSelf.js delete mode 100644 node_modules/lodash/_stackClear.js delete mode 100644 node_modules/lodash/_stackDelete.js delete mode 100644 node_modules/lodash/_stackGet.js delete mode 100644 node_modules/lodash/_stackHas.js delete mode 100644 node_modules/lodash/_stackSet.js delete mode 100644 node_modules/lodash/_strictIndexOf.js delete mode 100644 node_modules/lodash/_strictLastIndexOf.js delete mode 100644 node_modules/lodash/_stringSize.js delete mode 100644 node_modules/lodash/_stringToArray.js delete mode 100644 node_modules/lodash/_stringToPath.js delete mode 100644 node_modules/lodash/_toKey.js delete mode 100644 node_modules/lodash/_toSource.js delete mode 100644 node_modules/lodash/_unescapeHtmlChar.js delete mode 100644 node_modules/lodash/_unicodeSize.js delete mode 100644 node_modules/lodash/_unicodeToArray.js delete mode 100644 node_modules/lodash/_unicodeWords.js delete mode 100644 node_modules/lodash/_updateWrapDetails.js delete mode 100644 node_modules/lodash/_wrapperClone.js delete mode 100644 node_modules/lodash/add.js delete mode 100644 node_modules/lodash/after.js delete mode 100644 node_modules/lodash/array.js delete mode 100644 node_modules/lodash/ary.js delete mode 100644 node_modules/lodash/assign.js delete mode 100644 node_modules/lodash/assignIn.js delete mode 100644 node_modules/lodash/assignInWith.js delete mode 100644 node_modules/lodash/assignWith.js delete mode 100644 node_modules/lodash/at.js delete mode 100644 node_modules/lodash/attempt.js delete mode 100644 node_modules/lodash/before.js delete mode 100644 node_modules/lodash/bind.js delete mode 100644 node_modules/lodash/bindAll.js delete mode 100644 node_modules/lodash/bindKey.js delete mode 100644 node_modules/lodash/camelCase.js delete mode 100644 node_modules/lodash/capitalize.js delete mode 100644 node_modules/lodash/castArray.js delete mode 100644 node_modules/lodash/ceil.js delete mode 100644 node_modules/lodash/chain.js delete mode 100644 node_modules/lodash/chunk.js delete mode 100644 node_modules/lodash/clamp.js delete mode 100644 node_modules/lodash/clone.js delete mode 100644 node_modules/lodash/cloneDeep.js delete mode 100644 node_modules/lodash/cloneDeepWith.js delete mode 100644 node_modules/lodash/cloneWith.js delete mode 100644 node_modules/lodash/collection.js delete mode 100644 node_modules/lodash/commit.js delete mode 100644 node_modules/lodash/compact.js delete mode 100644 node_modules/lodash/concat.js delete mode 100644 node_modules/lodash/cond.js delete mode 100644 node_modules/lodash/conforms.js delete mode 100644 node_modules/lodash/conformsTo.js delete mode 100644 node_modules/lodash/constant.js delete mode 100644 node_modules/lodash/core.js delete mode 100644 node_modules/lodash/core.min.js delete mode 100644 node_modules/lodash/countBy.js delete mode 100644 node_modules/lodash/create.js delete mode 100644 node_modules/lodash/curry.js delete mode 100644 node_modules/lodash/curryRight.js delete mode 100644 node_modules/lodash/date.js delete mode 100644 node_modules/lodash/debounce.js delete mode 100644 node_modules/lodash/deburr.js delete mode 100644 node_modules/lodash/defaultTo.js delete mode 100644 node_modules/lodash/defaults.js delete mode 100644 node_modules/lodash/defaultsDeep.js delete mode 100644 node_modules/lodash/defer.js delete mode 100644 node_modules/lodash/delay.js delete mode 100644 node_modules/lodash/difference.js delete mode 100644 node_modules/lodash/differenceBy.js delete mode 100644 node_modules/lodash/differenceWith.js delete mode 100644 node_modules/lodash/divide.js delete mode 100644 node_modules/lodash/drop.js delete mode 100644 node_modules/lodash/dropRight.js delete mode 100644 node_modules/lodash/dropRightWhile.js delete mode 100644 node_modules/lodash/dropWhile.js delete mode 100644 node_modules/lodash/each.js delete mode 100644 node_modules/lodash/eachRight.js delete mode 100644 node_modules/lodash/endsWith.js delete mode 100644 node_modules/lodash/entries.js delete mode 100644 node_modules/lodash/entriesIn.js delete mode 100644 node_modules/lodash/eq.js delete mode 100644 node_modules/lodash/escape.js delete mode 100644 node_modules/lodash/escapeRegExp.js delete mode 100644 node_modules/lodash/every.js delete mode 100644 node_modules/lodash/extend.js delete mode 100644 node_modules/lodash/extendWith.js delete mode 100644 node_modules/lodash/fill.js delete mode 100644 node_modules/lodash/filter.js delete mode 100644 node_modules/lodash/find.js delete mode 100644 node_modules/lodash/findIndex.js delete mode 100644 node_modules/lodash/findKey.js delete mode 100644 node_modules/lodash/findLast.js delete mode 100644 node_modules/lodash/findLastIndex.js delete mode 100644 node_modules/lodash/findLastKey.js delete mode 100644 node_modules/lodash/first.js delete mode 100644 node_modules/lodash/flatMap.js delete mode 100644 node_modules/lodash/flatMapDeep.js delete mode 100644 node_modules/lodash/flatMapDepth.js delete mode 100644 node_modules/lodash/flatten.js delete mode 100644 node_modules/lodash/flattenDeep.js delete mode 100644 node_modules/lodash/flattenDepth.js delete mode 100644 node_modules/lodash/flip.js delete mode 100644 node_modules/lodash/floor.js delete mode 100644 node_modules/lodash/flow.js delete mode 100644 node_modules/lodash/flowRight.js delete mode 100644 node_modules/lodash/forEach.js delete mode 100644 node_modules/lodash/forEachRight.js delete mode 100644 node_modules/lodash/forIn.js delete mode 100644 node_modules/lodash/forInRight.js delete mode 100644 node_modules/lodash/forOwn.js delete mode 100644 node_modules/lodash/forOwnRight.js delete mode 100644 node_modules/lodash/fp.js delete mode 100644 node_modules/lodash/fp/F.js delete mode 100644 node_modules/lodash/fp/T.js delete mode 100644 node_modules/lodash/fp/__.js delete mode 100644 node_modules/lodash/fp/_baseConvert.js delete mode 100644 node_modules/lodash/fp/_convertBrowser.js delete mode 100644 node_modules/lodash/fp/_falseOptions.js delete mode 100644 node_modules/lodash/fp/_mapping.js delete mode 100644 node_modules/lodash/fp/_util.js delete mode 100644 node_modules/lodash/fp/add.js delete mode 100644 node_modules/lodash/fp/after.js delete mode 100644 node_modules/lodash/fp/all.js delete mode 100644 node_modules/lodash/fp/allPass.js delete mode 100644 node_modules/lodash/fp/always.js delete mode 100644 node_modules/lodash/fp/any.js delete mode 100644 node_modules/lodash/fp/anyPass.js delete mode 100644 node_modules/lodash/fp/apply.js delete mode 100644 node_modules/lodash/fp/array.js delete mode 100644 node_modules/lodash/fp/ary.js delete mode 100644 node_modules/lodash/fp/assign.js delete mode 100644 node_modules/lodash/fp/assignAll.js delete mode 100644 node_modules/lodash/fp/assignAllWith.js delete mode 100644 node_modules/lodash/fp/assignIn.js delete mode 100644 node_modules/lodash/fp/assignInAll.js delete mode 100644 node_modules/lodash/fp/assignInAllWith.js delete mode 100644 node_modules/lodash/fp/assignInWith.js delete mode 100644 node_modules/lodash/fp/assignWith.js delete mode 100644 node_modules/lodash/fp/assoc.js delete mode 100644 node_modules/lodash/fp/assocPath.js delete mode 100644 node_modules/lodash/fp/at.js delete mode 100644 node_modules/lodash/fp/attempt.js delete mode 100644 node_modules/lodash/fp/before.js delete mode 100644 node_modules/lodash/fp/bind.js delete mode 100644 node_modules/lodash/fp/bindAll.js delete mode 100644 node_modules/lodash/fp/bindKey.js delete mode 100644 node_modules/lodash/fp/camelCase.js delete mode 100644 node_modules/lodash/fp/capitalize.js delete mode 100644 node_modules/lodash/fp/castArray.js delete mode 100644 node_modules/lodash/fp/ceil.js delete mode 100644 node_modules/lodash/fp/chain.js delete mode 100644 node_modules/lodash/fp/chunk.js delete mode 100644 node_modules/lodash/fp/clamp.js delete mode 100644 node_modules/lodash/fp/clone.js delete mode 100644 node_modules/lodash/fp/cloneDeep.js delete mode 100644 node_modules/lodash/fp/cloneDeepWith.js delete mode 100644 node_modules/lodash/fp/cloneWith.js delete mode 100644 node_modules/lodash/fp/collection.js delete mode 100644 node_modules/lodash/fp/commit.js delete mode 100644 node_modules/lodash/fp/compact.js delete mode 100644 node_modules/lodash/fp/complement.js delete mode 100644 node_modules/lodash/fp/compose.js delete mode 100644 node_modules/lodash/fp/concat.js delete mode 100644 node_modules/lodash/fp/cond.js delete mode 100644 node_modules/lodash/fp/conforms.js delete mode 100644 node_modules/lodash/fp/conformsTo.js delete mode 100644 node_modules/lodash/fp/constant.js delete mode 100644 node_modules/lodash/fp/contains.js delete mode 100644 node_modules/lodash/fp/convert.js delete mode 100644 node_modules/lodash/fp/countBy.js delete mode 100644 node_modules/lodash/fp/create.js delete mode 100644 node_modules/lodash/fp/curry.js delete mode 100644 node_modules/lodash/fp/curryN.js delete mode 100644 node_modules/lodash/fp/curryRight.js delete mode 100644 node_modules/lodash/fp/curryRightN.js delete mode 100644 node_modules/lodash/fp/date.js delete mode 100644 node_modules/lodash/fp/debounce.js delete mode 100644 node_modules/lodash/fp/deburr.js delete mode 100644 node_modules/lodash/fp/defaultTo.js delete mode 100644 node_modules/lodash/fp/defaults.js delete mode 100644 node_modules/lodash/fp/defaultsAll.js delete mode 100644 node_modules/lodash/fp/defaultsDeep.js delete mode 100644 node_modules/lodash/fp/defaultsDeepAll.js delete mode 100644 node_modules/lodash/fp/defer.js delete mode 100644 node_modules/lodash/fp/delay.js delete mode 100644 node_modules/lodash/fp/difference.js delete mode 100644 node_modules/lodash/fp/differenceBy.js delete mode 100644 node_modules/lodash/fp/differenceWith.js delete mode 100644 node_modules/lodash/fp/dissoc.js delete mode 100644 node_modules/lodash/fp/dissocPath.js delete mode 100644 node_modules/lodash/fp/divide.js delete mode 100644 node_modules/lodash/fp/drop.js delete mode 100644 node_modules/lodash/fp/dropLast.js delete mode 100644 node_modules/lodash/fp/dropLastWhile.js delete mode 100644 node_modules/lodash/fp/dropRight.js delete mode 100644 node_modules/lodash/fp/dropRightWhile.js delete mode 100644 node_modules/lodash/fp/dropWhile.js delete mode 100644 node_modules/lodash/fp/each.js delete mode 100644 node_modules/lodash/fp/eachRight.js delete mode 100644 node_modules/lodash/fp/endsWith.js delete mode 100644 node_modules/lodash/fp/entries.js delete mode 100644 node_modules/lodash/fp/entriesIn.js delete mode 100644 node_modules/lodash/fp/eq.js delete mode 100644 node_modules/lodash/fp/equals.js delete mode 100644 node_modules/lodash/fp/escape.js delete mode 100644 node_modules/lodash/fp/escapeRegExp.js delete mode 100644 node_modules/lodash/fp/every.js delete mode 100644 node_modules/lodash/fp/extend.js delete mode 100644 node_modules/lodash/fp/extendAll.js delete mode 100644 node_modules/lodash/fp/extendAllWith.js delete mode 100644 node_modules/lodash/fp/extendWith.js delete mode 100644 node_modules/lodash/fp/fill.js delete mode 100644 node_modules/lodash/fp/filter.js delete mode 100644 node_modules/lodash/fp/find.js delete mode 100644 node_modules/lodash/fp/findFrom.js delete mode 100644 node_modules/lodash/fp/findIndex.js delete mode 100644 node_modules/lodash/fp/findIndexFrom.js delete mode 100644 node_modules/lodash/fp/findKey.js delete mode 100644 node_modules/lodash/fp/findLast.js delete mode 100644 node_modules/lodash/fp/findLastFrom.js delete mode 100644 node_modules/lodash/fp/findLastIndex.js delete mode 100644 node_modules/lodash/fp/findLastIndexFrom.js delete mode 100644 node_modules/lodash/fp/findLastKey.js delete mode 100644 node_modules/lodash/fp/first.js delete mode 100644 node_modules/lodash/fp/flatMap.js delete mode 100644 node_modules/lodash/fp/flatMapDeep.js delete mode 100644 node_modules/lodash/fp/flatMapDepth.js delete mode 100644 node_modules/lodash/fp/flatten.js delete mode 100644 node_modules/lodash/fp/flattenDeep.js delete mode 100644 node_modules/lodash/fp/flattenDepth.js delete mode 100644 node_modules/lodash/fp/flip.js delete mode 100644 node_modules/lodash/fp/floor.js delete mode 100644 node_modules/lodash/fp/flow.js delete mode 100644 node_modules/lodash/fp/flowRight.js delete mode 100644 node_modules/lodash/fp/forEach.js delete mode 100644 node_modules/lodash/fp/forEachRight.js delete mode 100644 node_modules/lodash/fp/forIn.js delete mode 100644 node_modules/lodash/fp/forInRight.js delete mode 100644 node_modules/lodash/fp/forOwn.js delete mode 100644 node_modules/lodash/fp/forOwnRight.js delete mode 100644 node_modules/lodash/fp/fromPairs.js delete mode 100644 node_modules/lodash/fp/function.js delete mode 100644 node_modules/lodash/fp/functions.js delete mode 100644 node_modules/lodash/fp/functionsIn.js delete mode 100644 node_modules/lodash/fp/get.js delete mode 100644 node_modules/lodash/fp/getOr.js delete mode 100644 node_modules/lodash/fp/groupBy.js delete mode 100644 node_modules/lodash/fp/gt.js delete mode 100644 node_modules/lodash/fp/gte.js delete mode 100644 node_modules/lodash/fp/has.js delete mode 100644 node_modules/lodash/fp/hasIn.js delete mode 100644 node_modules/lodash/fp/head.js delete mode 100644 node_modules/lodash/fp/identical.js delete mode 100644 node_modules/lodash/fp/identity.js delete mode 100644 node_modules/lodash/fp/inRange.js delete mode 100644 node_modules/lodash/fp/includes.js delete mode 100644 node_modules/lodash/fp/includesFrom.js delete mode 100644 node_modules/lodash/fp/indexBy.js delete mode 100644 node_modules/lodash/fp/indexOf.js delete mode 100644 node_modules/lodash/fp/indexOfFrom.js delete mode 100644 node_modules/lodash/fp/init.js delete mode 100644 node_modules/lodash/fp/initial.js delete mode 100644 node_modules/lodash/fp/intersection.js delete mode 100644 node_modules/lodash/fp/intersectionBy.js delete mode 100644 node_modules/lodash/fp/intersectionWith.js delete mode 100644 node_modules/lodash/fp/invert.js delete mode 100644 node_modules/lodash/fp/invertBy.js delete mode 100644 node_modules/lodash/fp/invertObj.js delete mode 100644 node_modules/lodash/fp/invoke.js delete mode 100644 node_modules/lodash/fp/invokeArgs.js delete mode 100644 node_modules/lodash/fp/invokeArgsMap.js delete mode 100644 node_modules/lodash/fp/invokeMap.js delete mode 100644 node_modules/lodash/fp/isArguments.js delete mode 100644 node_modules/lodash/fp/isArray.js delete mode 100644 node_modules/lodash/fp/isArrayBuffer.js delete mode 100644 node_modules/lodash/fp/isArrayLike.js delete mode 100644 node_modules/lodash/fp/isArrayLikeObject.js delete mode 100644 node_modules/lodash/fp/isBoolean.js delete mode 100644 node_modules/lodash/fp/isBuffer.js delete mode 100644 node_modules/lodash/fp/isDate.js delete mode 100644 node_modules/lodash/fp/isElement.js delete mode 100644 node_modules/lodash/fp/isEmpty.js delete mode 100644 node_modules/lodash/fp/isEqual.js delete mode 100644 node_modules/lodash/fp/isEqualWith.js delete mode 100644 node_modules/lodash/fp/isError.js delete mode 100644 node_modules/lodash/fp/isFinite.js delete mode 100644 node_modules/lodash/fp/isFunction.js delete mode 100644 node_modules/lodash/fp/isInteger.js delete mode 100644 node_modules/lodash/fp/isLength.js delete mode 100644 node_modules/lodash/fp/isMap.js delete mode 100644 node_modules/lodash/fp/isMatch.js delete mode 100644 node_modules/lodash/fp/isMatchWith.js delete mode 100644 node_modules/lodash/fp/isNaN.js delete mode 100644 node_modules/lodash/fp/isNative.js delete mode 100644 node_modules/lodash/fp/isNil.js delete mode 100644 node_modules/lodash/fp/isNull.js delete mode 100644 node_modules/lodash/fp/isNumber.js delete mode 100644 node_modules/lodash/fp/isObject.js delete mode 100644 node_modules/lodash/fp/isObjectLike.js delete mode 100644 node_modules/lodash/fp/isPlainObject.js delete mode 100644 node_modules/lodash/fp/isRegExp.js delete mode 100644 node_modules/lodash/fp/isSafeInteger.js delete mode 100644 node_modules/lodash/fp/isSet.js delete mode 100644 node_modules/lodash/fp/isString.js delete mode 100644 node_modules/lodash/fp/isSymbol.js delete mode 100644 node_modules/lodash/fp/isTypedArray.js delete mode 100644 node_modules/lodash/fp/isUndefined.js delete mode 100644 node_modules/lodash/fp/isWeakMap.js delete mode 100644 node_modules/lodash/fp/isWeakSet.js delete mode 100644 node_modules/lodash/fp/iteratee.js delete mode 100644 node_modules/lodash/fp/join.js delete mode 100644 node_modules/lodash/fp/juxt.js delete mode 100644 node_modules/lodash/fp/kebabCase.js delete mode 100644 node_modules/lodash/fp/keyBy.js delete mode 100644 node_modules/lodash/fp/keys.js delete mode 100644 node_modules/lodash/fp/keysIn.js delete mode 100644 node_modules/lodash/fp/lang.js delete mode 100644 node_modules/lodash/fp/last.js delete mode 100644 node_modules/lodash/fp/lastIndexOf.js delete mode 100644 node_modules/lodash/fp/lastIndexOfFrom.js delete mode 100644 node_modules/lodash/fp/lowerCase.js delete mode 100644 node_modules/lodash/fp/lowerFirst.js delete mode 100644 node_modules/lodash/fp/lt.js delete mode 100644 node_modules/lodash/fp/lte.js delete mode 100644 node_modules/lodash/fp/map.js delete mode 100644 node_modules/lodash/fp/mapKeys.js delete mode 100644 node_modules/lodash/fp/mapValues.js delete mode 100644 node_modules/lodash/fp/matches.js delete mode 100644 node_modules/lodash/fp/matchesProperty.js delete mode 100644 node_modules/lodash/fp/math.js delete mode 100644 node_modules/lodash/fp/max.js delete mode 100644 node_modules/lodash/fp/maxBy.js delete mode 100644 node_modules/lodash/fp/mean.js delete mode 100644 node_modules/lodash/fp/meanBy.js delete mode 100644 node_modules/lodash/fp/memoize.js delete mode 100644 node_modules/lodash/fp/merge.js delete mode 100644 node_modules/lodash/fp/mergeAll.js delete mode 100644 node_modules/lodash/fp/mergeAllWith.js delete mode 100644 node_modules/lodash/fp/mergeWith.js delete mode 100644 node_modules/lodash/fp/method.js delete mode 100644 node_modules/lodash/fp/methodOf.js delete mode 100644 node_modules/lodash/fp/min.js delete mode 100644 node_modules/lodash/fp/minBy.js delete mode 100644 node_modules/lodash/fp/mixin.js delete mode 100644 node_modules/lodash/fp/multiply.js delete mode 100644 node_modules/lodash/fp/nAry.js delete mode 100644 node_modules/lodash/fp/negate.js delete mode 100644 node_modules/lodash/fp/next.js delete mode 100644 node_modules/lodash/fp/noop.js delete mode 100644 node_modules/lodash/fp/now.js delete mode 100644 node_modules/lodash/fp/nth.js delete mode 100644 node_modules/lodash/fp/nthArg.js delete mode 100644 node_modules/lodash/fp/number.js delete mode 100644 node_modules/lodash/fp/object.js delete mode 100644 node_modules/lodash/fp/omit.js delete mode 100644 node_modules/lodash/fp/omitAll.js delete mode 100644 node_modules/lodash/fp/omitBy.js delete mode 100644 node_modules/lodash/fp/once.js delete mode 100644 node_modules/lodash/fp/orderBy.js delete mode 100644 node_modules/lodash/fp/over.js delete mode 100644 node_modules/lodash/fp/overArgs.js delete mode 100644 node_modules/lodash/fp/overEvery.js delete mode 100644 node_modules/lodash/fp/overSome.js delete mode 100644 node_modules/lodash/fp/pad.js delete mode 100644 node_modules/lodash/fp/padChars.js delete mode 100644 node_modules/lodash/fp/padCharsEnd.js delete mode 100644 node_modules/lodash/fp/padCharsStart.js delete mode 100644 node_modules/lodash/fp/padEnd.js delete mode 100644 node_modules/lodash/fp/padStart.js delete mode 100644 node_modules/lodash/fp/parseInt.js delete mode 100644 node_modules/lodash/fp/partial.js delete mode 100644 node_modules/lodash/fp/partialRight.js delete mode 100644 node_modules/lodash/fp/partition.js delete mode 100644 node_modules/lodash/fp/path.js delete mode 100644 node_modules/lodash/fp/pathEq.js delete mode 100644 node_modules/lodash/fp/pathOr.js delete mode 100644 node_modules/lodash/fp/paths.js delete mode 100644 node_modules/lodash/fp/pick.js delete mode 100644 node_modules/lodash/fp/pickAll.js delete mode 100644 node_modules/lodash/fp/pickBy.js delete mode 100644 node_modules/lodash/fp/pipe.js delete mode 100644 node_modules/lodash/fp/placeholder.js delete mode 100644 node_modules/lodash/fp/plant.js delete mode 100644 node_modules/lodash/fp/pluck.js delete mode 100644 node_modules/lodash/fp/prop.js delete mode 100644 node_modules/lodash/fp/propEq.js delete mode 100644 node_modules/lodash/fp/propOr.js delete mode 100644 node_modules/lodash/fp/property.js delete mode 100644 node_modules/lodash/fp/propertyOf.js delete mode 100644 node_modules/lodash/fp/props.js delete mode 100644 node_modules/lodash/fp/pull.js delete mode 100644 node_modules/lodash/fp/pullAll.js delete mode 100644 node_modules/lodash/fp/pullAllBy.js delete mode 100644 node_modules/lodash/fp/pullAllWith.js delete mode 100644 node_modules/lodash/fp/pullAt.js delete mode 100644 node_modules/lodash/fp/random.js delete mode 100644 node_modules/lodash/fp/range.js delete mode 100644 node_modules/lodash/fp/rangeRight.js delete mode 100644 node_modules/lodash/fp/rangeStep.js delete mode 100644 node_modules/lodash/fp/rangeStepRight.js delete mode 100644 node_modules/lodash/fp/rearg.js delete mode 100644 node_modules/lodash/fp/reduce.js delete mode 100644 node_modules/lodash/fp/reduceRight.js delete mode 100644 node_modules/lodash/fp/reject.js delete mode 100644 node_modules/lodash/fp/remove.js delete mode 100644 node_modules/lodash/fp/repeat.js delete mode 100644 node_modules/lodash/fp/replace.js delete mode 100644 node_modules/lodash/fp/rest.js delete mode 100644 node_modules/lodash/fp/restFrom.js delete mode 100644 node_modules/lodash/fp/result.js delete mode 100644 node_modules/lodash/fp/reverse.js delete mode 100644 node_modules/lodash/fp/round.js delete mode 100644 node_modules/lodash/fp/sample.js delete mode 100644 node_modules/lodash/fp/sampleSize.js delete mode 100644 node_modules/lodash/fp/seq.js delete mode 100644 node_modules/lodash/fp/set.js delete mode 100644 node_modules/lodash/fp/setWith.js delete mode 100644 node_modules/lodash/fp/shuffle.js delete mode 100644 node_modules/lodash/fp/size.js delete mode 100644 node_modules/lodash/fp/slice.js delete mode 100644 node_modules/lodash/fp/snakeCase.js delete mode 100644 node_modules/lodash/fp/some.js delete mode 100644 node_modules/lodash/fp/sortBy.js delete mode 100644 node_modules/lodash/fp/sortedIndex.js delete mode 100644 node_modules/lodash/fp/sortedIndexBy.js delete mode 100644 node_modules/lodash/fp/sortedIndexOf.js delete mode 100644 node_modules/lodash/fp/sortedLastIndex.js delete mode 100644 node_modules/lodash/fp/sortedLastIndexBy.js delete mode 100644 node_modules/lodash/fp/sortedLastIndexOf.js delete mode 100644 node_modules/lodash/fp/sortedUniq.js delete mode 100644 node_modules/lodash/fp/sortedUniqBy.js delete mode 100644 node_modules/lodash/fp/split.js delete mode 100644 node_modules/lodash/fp/spread.js delete mode 100644 node_modules/lodash/fp/spreadFrom.js delete mode 100644 node_modules/lodash/fp/startCase.js delete mode 100644 node_modules/lodash/fp/startsWith.js delete mode 100644 node_modules/lodash/fp/string.js delete mode 100644 node_modules/lodash/fp/stubArray.js delete mode 100644 node_modules/lodash/fp/stubFalse.js delete mode 100644 node_modules/lodash/fp/stubObject.js delete mode 100644 node_modules/lodash/fp/stubString.js delete mode 100644 node_modules/lodash/fp/stubTrue.js delete mode 100644 node_modules/lodash/fp/subtract.js delete mode 100644 node_modules/lodash/fp/sum.js delete mode 100644 node_modules/lodash/fp/sumBy.js delete mode 100644 node_modules/lodash/fp/symmetricDifference.js delete mode 100644 node_modules/lodash/fp/symmetricDifferenceBy.js delete mode 100644 node_modules/lodash/fp/symmetricDifferenceWith.js delete mode 100644 node_modules/lodash/fp/tail.js delete mode 100644 node_modules/lodash/fp/take.js delete mode 100644 node_modules/lodash/fp/takeLast.js delete mode 100644 node_modules/lodash/fp/takeLastWhile.js delete mode 100644 node_modules/lodash/fp/takeRight.js delete mode 100644 node_modules/lodash/fp/takeRightWhile.js delete mode 100644 node_modules/lodash/fp/takeWhile.js delete mode 100644 node_modules/lodash/fp/tap.js delete mode 100644 node_modules/lodash/fp/template.js delete mode 100644 node_modules/lodash/fp/templateSettings.js delete mode 100644 node_modules/lodash/fp/throttle.js delete mode 100644 node_modules/lodash/fp/thru.js delete mode 100644 node_modules/lodash/fp/times.js delete mode 100644 node_modules/lodash/fp/toArray.js delete mode 100644 node_modules/lodash/fp/toFinite.js delete mode 100644 node_modules/lodash/fp/toInteger.js delete mode 100644 node_modules/lodash/fp/toIterator.js delete mode 100644 node_modules/lodash/fp/toJSON.js delete mode 100644 node_modules/lodash/fp/toLength.js delete mode 100644 node_modules/lodash/fp/toLower.js delete mode 100644 node_modules/lodash/fp/toNumber.js delete mode 100644 node_modules/lodash/fp/toPairs.js delete mode 100644 node_modules/lodash/fp/toPairsIn.js delete mode 100644 node_modules/lodash/fp/toPath.js delete mode 100644 node_modules/lodash/fp/toPlainObject.js delete mode 100644 node_modules/lodash/fp/toSafeInteger.js delete mode 100644 node_modules/lodash/fp/toString.js delete mode 100644 node_modules/lodash/fp/toUpper.js delete mode 100644 node_modules/lodash/fp/transform.js delete mode 100644 node_modules/lodash/fp/trim.js delete mode 100644 node_modules/lodash/fp/trimChars.js delete mode 100644 node_modules/lodash/fp/trimCharsEnd.js delete mode 100644 node_modules/lodash/fp/trimCharsStart.js delete mode 100644 node_modules/lodash/fp/trimEnd.js delete mode 100644 node_modules/lodash/fp/trimStart.js delete mode 100644 node_modules/lodash/fp/truncate.js delete mode 100644 node_modules/lodash/fp/unapply.js delete mode 100644 node_modules/lodash/fp/unary.js delete mode 100644 node_modules/lodash/fp/unescape.js delete mode 100644 node_modules/lodash/fp/union.js delete mode 100644 node_modules/lodash/fp/unionBy.js delete mode 100644 node_modules/lodash/fp/unionWith.js delete mode 100644 node_modules/lodash/fp/uniq.js delete mode 100644 node_modules/lodash/fp/uniqBy.js delete mode 100644 node_modules/lodash/fp/uniqWith.js delete mode 100644 node_modules/lodash/fp/uniqueId.js delete mode 100644 node_modules/lodash/fp/unnest.js delete mode 100644 node_modules/lodash/fp/unset.js delete mode 100644 node_modules/lodash/fp/unzip.js delete mode 100644 node_modules/lodash/fp/unzipWith.js delete mode 100644 node_modules/lodash/fp/update.js delete mode 100644 node_modules/lodash/fp/updateWith.js delete mode 100644 node_modules/lodash/fp/upperCase.js delete mode 100644 node_modules/lodash/fp/upperFirst.js delete mode 100644 node_modules/lodash/fp/useWith.js delete mode 100644 node_modules/lodash/fp/util.js delete mode 100644 node_modules/lodash/fp/value.js delete mode 100644 node_modules/lodash/fp/valueOf.js delete mode 100644 node_modules/lodash/fp/values.js delete mode 100644 node_modules/lodash/fp/valuesIn.js delete mode 100644 node_modules/lodash/fp/where.js delete mode 100644 node_modules/lodash/fp/whereEq.js delete mode 100644 node_modules/lodash/fp/without.js delete mode 100644 node_modules/lodash/fp/words.js delete mode 100644 node_modules/lodash/fp/wrap.js delete mode 100644 node_modules/lodash/fp/wrapperAt.js delete mode 100644 node_modules/lodash/fp/wrapperChain.js delete mode 100644 node_modules/lodash/fp/wrapperLodash.js delete mode 100644 node_modules/lodash/fp/wrapperReverse.js delete mode 100644 node_modules/lodash/fp/wrapperValue.js delete mode 100644 node_modules/lodash/fp/xor.js delete mode 100644 node_modules/lodash/fp/xorBy.js delete mode 100644 node_modules/lodash/fp/xorWith.js delete mode 100644 node_modules/lodash/fp/zip.js delete mode 100644 node_modules/lodash/fp/zipAll.js delete mode 100644 node_modules/lodash/fp/zipObj.js delete mode 100644 node_modules/lodash/fp/zipObject.js delete mode 100644 node_modules/lodash/fp/zipObjectDeep.js delete mode 100644 node_modules/lodash/fp/zipWith.js delete mode 100644 node_modules/lodash/fromPairs.js delete mode 100644 node_modules/lodash/function.js delete mode 100644 node_modules/lodash/functions.js delete mode 100644 node_modules/lodash/functionsIn.js delete mode 100644 node_modules/lodash/get.js delete mode 100644 node_modules/lodash/groupBy.js delete mode 100644 node_modules/lodash/gt.js delete mode 100644 node_modules/lodash/gte.js delete mode 100644 node_modules/lodash/has.js delete mode 100644 node_modules/lodash/hasIn.js delete mode 100644 node_modules/lodash/head.js delete mode 100644 node_modules/lodash/identity.js delete mode 100644 node_modules/lodash/inRange.js delete mode 100644 node_modules/lodash/includes.js delete mode 100644 node_modules/lodash/index.js delete mode 100644 node_modules/lodash/indexOf.js delete mode 100644 node_modules/lodash/initial.js delete mode 100644 node_modules/lodash/intersection.js delete mode 100644 node_modules/lodash/intersectionBy.js delete mode 100644 node_modules/lodash/intersectionWith.js delete mode 100644 node_modules/lodash/invert.js delete mode 100644 node_modules/lodash/invertBy.js delete mode 100644 node_modules/lodash/invoke.js delete mode 100644 node_modules/lodash/invokeMap.js delete mode 100644 node_modules/lodash/isArguments.js delete mode 100644 node_modules/lodash/isArray.js delete mode 100644 node_modules/lodash/isArrayBuffer.js delete mode 100644 node_modules/lodash/isArrayLike.js delete mode 100644 node_modules/lodash/isArrayLikeObject.js delete mode 100644 node_modules/lodash/isBoolean.js delete mode 100644 node_modules/lodash/isBuffer.js delete mode 100644 node_modules/lodash/isDate.js delete mode 100644 node_modules/lodash/isElement.js delete mode 100644 node_modules/lodash/isEmpty.js delete mode 100644 node_modules/lodash/isEqual.js delete mode 100644 node_modules/lodash/isEqualWith.js delete mode 100644 node_modules/lodash/isError.js delete mode 100644 node_modules/lodash/isFinite.js delete mode 100644 node_modules/lodash/isFunction.js delete mode 100644 node_modules/lodash/isInteger.js delete mode 100644 node_modules/lodash/isLength.js delete mode 100644 node_modules/lodash/isMap.js delete mode 100644 node_modules/lodash/isMatch.js delete mode 100644 node_modules/lodash/isMatchWith.js delete mode 100644 node_modules/lodash/isNaN.js delete mode 100644 node_modules/lodash/isNative.js delete mode 100644 node_modules/lodash/isNil.js delete mode 100644 node_modules/lodash/isNull.js delete mode 100644 node_modules/lodash/isNumber.js delete mode 100644 node_modules/lodash/isObject.js delete mode 100644 node_modules/lodash/isObjectLike.js delete mode 100644 node_modules/lodash/isPlainObject.js delete mode 100644 node_modules/lodash/isRegExp.js delete mode 100644 node_modules/lodash/isSafeInteger.js delete mode 100644 node_modules/lodash/isSet.js delete mode 100644 node_modules/lodash/isString.js delete mode 100644 node_modules/lodash/isSymbol.js delete mode 100644 node_modules/lodash/isTypedArray.js delete mode 100644 node_modules/lodash/isUndefined.js delete mode 100644 node_modules/lodash/isWeakMap.js delete mode 100644 node_modules/lodash/isWeakSet.js delete mode 100644 node_modules/lodash/iteratee.js delete mode 100644 node_modules/lodash/join.js delete mode 100644 node_modules/lodash/kebabCase.js delete mode 100644 node_modules/lodash/keyBy.js delete mode 100644 node_modules/lodash/keys.js delete mode 100644 node_modules/lodash/keysIn.js delete mode 100644 node_modules/lodash/lang.js delete mode 100644 node_modules/lodash/last.js delete mode 100644 node_modules/lodash/lastIndexOf.js delete mode 100644 node_modules/lodash/lodash.js delete mode 100644 node_modules/lodash/lodash.min.js delete mode 100644 node_modules/lodash/lowerCase.js delete mode 100644 node_modules/lodash/lowerFirst.js delete mode 100644 node_modules/lodash/lt.js delete mode 100644 node_modules/lodash/lte.js delete mode 100644 node_modules/lodash/map.js delete mode 100644 node_modules/lodash/mapKeys.js delete mode 100644 node_modules/lodash/mapValues.js delete mode 100644 node_modules/lodash/matches.js delete mode 100644 node_modules/lodash/matchesProperty.js delete mode 100644 node_modules/lodash/math.js delete mode 100644 node_modules/lodash/max.js delete mode 100644 node_modules/lodash/maxBy.js delete mode 100644 node_modules/lodash/mean.js delete mode 100644 node_modules/lodash/meanBy.js delete mode 100644 node_modules/lodash/memoize.js delete mode 100644 node_modules/lodash/merge.js delete mode 100644 node_modules/lodash/mergeWith.js delete mode 100644 node_modules/lodash/method.js delete mode 100644 node_modules/lodash/methodOf.js delete mode 100644 node_modules/lodash/min.js delete mode 100644 node_modules/lodash/minBy.js delete mode 100644 node_modules/lodash/mixin.js delete mode 100644 node_modules/lodash/multiply.js delete mode 100644 node_modules/lodash/negate.js delete mode 100644 node_modules/lodash/next.js delete mode 100644 node_modules/lodash/noop.js delete mode 100644 node_modules/lodash/now.js delete mode 100644 node_modules/lodash/nth.js delete mode 100644 node_modules/lodash/nthArg.js delete mode 100644 node_modules/lodash/number.js delete mode 100644 node_modules/lodash/object.js delete mode 100644 node_modules/lodash/omit.js delete mode 100644 node_modules/lodash/omitBy.js delete mode 100644 node_modules/lodash/once.js delete mode 100644 node_modules/lodash/orderBy.js delete mode 100644 node_modules/lodash/over.js delete mode 100644 node_modules/lodash/overArgs.js delete mode 100644 node_modules/lodash/overEvery.js delete mode 100644 node_modules/lodash/overSome.js delete mode 100644 node_modules/lodash/package.json delete mode 100644 node_modules/lodash/pad.js delete mode 100644 node_modules/lodash/padEnd.js delete mode 100644 node_modules/lodash/padStart.js delete mode 100644 node_modules/lodash/parseInt.js delete mode 100644 node_modules/lodash/partial.js delete mode 100644 node_modules/lodash/partialRight.js delete mode 100644 node_modules/lodash/partition.js delete mode 100644 node_modules/lodash/pick.js delete mode 100644 node_modules/lodash/pickBy.js delete mode 100644 node_modules/lodash/plant.js delete mode 100644 node_modules/lodash/property.js delete mode 100644 node_modules/lodash/propertyOf.js delete mode 100644 node_modules/lodash/pull.js delete mode 100644 node_modules/lodash/pullAll.js delete mode 100644 node_modules/lodash/pullAllBy.js delete mode 100644 node_modules/lodash/pullAllWith.js delete mode 100644 node_modules/lodash/pullAt.js delete mode 100644 node_modules/lodash/random.js delete mode 100644 node_modules/lodash/range.js delete mode 100644 node_modules/lodash/rangeRight.js delete mode 100644 node_modules/lodash/rearg.js delete mode 100644 node_modules/lodash/reduce.js delete mode 100644 node_modules/lodash/reduceRight.js delete mode 100644 node_modules/lodash/reject.js delete mode 100644 node_modules/lodash/remove.js delete mode 100644 node_modules/lodash/repeat.js delete mode 100644 node_modules/lodash/replace.js delete mode 100644 node_modules/lodash/rest.js delete mode 100644 node_modules/lodash/result.js delete mode 100644 node_modules/lodash/reverse.js delete mode 100644 node_modules/lodash/round.js delete mode 100644 node_modules/lodash/sample.js delete mode 100644 node_modules/lodash/sampleSize.js delete mode 100644 node_modules/lodash/seq.js delete mode 100644 node_modules/lodash/set.js delete mode 100644 node_modules/lodash/setWith.js delete mode 100644 node_modules/lodash/shuffle.js delete mode 100644 node_modules/lodash/size.js delete mode 100644 node_modules/lodash/slice.js delete mode 100644 node_modules/lodash/snakeCase.js delete mode 100644 node_modules/lodash/some.js delete mode 100644 node_modules/lodash/sortBy.js delete mode 100644 node_modules/lodash/sortedIndex.js delete mode 100644 node_modules/lodash/sortedIndexBy.js delete mode 100644 node_modules/lodash/sortedIndexOf.js delete mode 100644 node_modules/lodash/sortedLastIndex.js delete mode 100644 node_modules/lodash/sortedLastIndexBy.js delete mode 100644 node_modules/lodash/sortedLastIndexOf.js delete mode 100644 node_modules/lodash/sortedUniq.js delete mode 100644 node_modules/lodash/sortedUniqBy.js delete mode 100644 node_modules/lodash/split.js delete mode 100644 node_modules/lodash/spread.js delete mode 100644 node_modules/lodash/startCase.js delete mode 100644 node_modules/lodash/startsWith.js delete mode 100644 node_modules/lodash/string.js delete mode 100644 node_modules/lodash/stubArray.js delete mode 100644 node_modules/lodash/stubFalse.js delete mode 100644 node_modules/lodash/stubObject.js delete mode 100644 node_modules/lodash/stubString.js delete mode 100644 node_modules/lodash/stubTrue.js delete mode 100644 node_modules/lodash/subtract.js delete mode 100644 node_modules/lodash/sum.js delete mode 100644 node_modules/lodash/sumBy.js delete mode 100644 node_modules/lodash/tail.js delete mode 100644 node_modules/lodash/take.js delete mode 100644 node_modules/lodash/takeRight.js delete mode 100644 node_modules/lodash/takeRightWhile.js delete mode 100644 node_modules/lodash/takeWhile.js delete mode 100644 node_modules/lodash/tap.js delete mode 100644 node_modules/lodash/template.js delete mode 100644 node_modules/lodash/templateSettings.js delete mode 100644 node_modules/lodash/throttle.js delete mode 100644 node_modules/lodash/thru.js delete mode 100644 node_modules/lodash/times.js delete mode 100644 node_modules/lodash/toArray.js delete mode 100644 node_modules/lodash/toFinite.js delete mode 100644 node_modules/lodash/toInteger.js delete mode 100644 node_modules/lodash/toIterator.js delete mode 100644 node_modules/lodash/toJSON.js delete mode 100644 node_modules/lodash/toLength.js delete mode 100644 node_modules/lodash/toLower.js delete mode 100644 node_modules/lodash/toNumber.js delete mode 100644 node_modules/lodash/toPairs.js delete mode 100644 node_modules/lodash/toPairsIn.js delete mode 100644 node_modules/lodash/toPath.js delete mode 100644 node_modules/lodash/toPlainObject.js delete mode 100644 node_modules/lodash/toSafeInteger.js delete mode 100644 node_modules/lodash/toString.js delete mode 100644 node_modules/lodash/toUpper.js delete mode 100644 node_modules/lodash/transform.js delete mode 100644 node_modules/lodash/trim.js delete mode 100644 node_modules/lodash/trimEnd.js delete mode 100644 node_modules/lodash/trimStart.js delete mode 100644 node_modules/lodash/truncate.js delete mode 100644 node_modules/lodash/unary.js delete mode 100644 node_modules/lodash/unescape.js delete mode 100644 node_modules/lodash/union.js delete mode 100644 node_modules/lodash/unionBy.js delete mode 100644 node_modules/lodash/unionWith.js delete mode 100644 node_modules/lodash/uniq.js delete mode 100644 node_modules/lodash/uniqBy.js delete mode 100644 node_modules/lodash/uniqWith.js delete mode 100644 node_modules/lodash/uniqueId.js delete mode 100644 node_modules/lodash/unset.js delete mode 100644 node_modules/lodash/unzip.js delete mode 100644 node_modules/lodash/unzipWith.js delete mode 100644 node_modules/lodash/update.js delete mode 100644 node_modules/lodash/updateWith.js delete mode 100644 node_modules/lodash/upperCase.js delete mode 100644 node_modules/lodash/upperFirst.js delete mode 100644 node_modules/lodash/util.js delete mode 100644 node_modules/lodash/value.js delete mode 100644 node_modules/lodash/valueOf.js delete mode 100644 node_modules/lodash/values.js delete mode 100644 node_modules/lodash/valuesIn.js delete mode 100644 node_modules/lodash/without.js delete mode 100644 node_modules/lodash/words.js delete mode 100644 node_modules/lodash/wrap.js delete mode 100644 node_modules/lodash/wrapperAt.js delete mode 100644 node_modules/lodash/wrapperChain.js delete mode 100644 node_modules/lodash/wrapperLodash.js delete mode 100644 node_modules/lodash/wrapperReverse.js delete mode 100644 node_modules/lodash/wrapperValue.js delete mode 100644 node_modules/lodash/xor.js delete mode 100644 node_modules/lodash/xorBy.js delete mode 100644 node_modules/lodash/xorWith.js delete mode 100644 node_modules/lodash/zip.js delete mode 100644 node_modules/lodash/zipObject.js delete mode 100644 node_modules/lodash/zipObjectDeep.js delete mode 100644 node_modules/lodash/zipWith.js delete mode 100644 node_modules/markdown-link-check/.travis.yml delete mode 100644 node_modules/markdown-link-check/CHANGELOG.md delete mode 100644 node_modules/markdown-link-check/CONTRIBUTING.md delete mode 100644 node_modules/markdown-link-check/Dockerfile delete mode 100644 node_modules/markdown-link-check/LICENSE.md delete mode 100644 node_modules/markdown-link-check/README.md delete mode 100644 node_modules/markdown-link-check/index.js delete mode 100755 node_modules/markdown-link-check/markdown-link-check delete mode 100644 node_modules/markdown-link-check/package.json delete mode 100644 node_modules/markdown-link-check/test/file.md delete mode 100644 node_modules/markdown-link-check/test/hello.jpg delete mode 100644 node_modules/markdown-link-check/test/markdown-link-check.test.js delete mode 100644 node_modules/markdown-link-check/test/sample.md delete mode 100644 node_modules/markdown-link-extractor/.travis.yml delete mode 100644 node_modules/markdown-link-extractor/CHANGELOG.md delete mode 100644 node_modules/markdown-link-extractor/CONTRIBUTING.md delete mode 100644 node_modules/markdown-link-extractor/LICENSE.md delete mode 100644 node_modules/markdown-link-extractor/README.md delete mode 100644 node_modules/markdown-link-extractor/index.js delete mode 100644 node_modules/markdown-link-extractor/package.json delete mode 100644 node_modules/markdown-link-extractor/test/markdown-link-extractor.test.js delete mode 100644 node_modules/marked/LICENSE.md delete mode 100644 node_modules/marked/README.md delete mode 100755 node_modules/marked/bin/marked delete mode 100644 node_modules/marked/lib/marked.esm.js delete mode 100644 node_modules/marked/lib/marked.js delete mode 100644 node_modules/marked/man/marked.1 delete mode 100644 node_modules/marked/man/marked.1.txt delete mode 100644 node_modules/marked/marked.min.js delete mode 100644 node_modules/marked/package.json delete mode 100644 node_modules/marked/src/InlineLexer.js delete mode 100644 node_modules/marked/src/Lexer.js delete mode 100644 node_modules/marked/src/Parser.js delete mode 100644 node_modules/marked/src/Renderer.js delete mode 100644 node_modules/marked/src/Slugger.js delete mode 100644 node_modules/marked/src/TextRenderer.js delete mode 100644 node_modules/marked/src/defaults.js delete mode 100644 node_modules/marked/src/helpers.js delete mode 100644 node_modules/marked/src/marked.js delete mode 100644 node_modules/marked/src/rules.js delete mode 100644 node_modules/mime-db/HISTORY.md delete mode 100644 node_modules/mime-db/LICENSE delete mode 100644 node_modules/mime-db/README.md delete mode 100644 node_modules/mime-db/db.json delete mode 100644 node_modules/mime-db/index.js delete mode 100644 node_modules/mime-db/package.json delete mode 100644 node_modules/mime-types/HISTORY.md delete mode 100644 node_modules/mime-types/LICENSE delete mode 100644 node_modules/mime-types/README.md delete mode 100644 node_modules/mime-types/index.js delete mode 100644 node_modules/mime-types/package.json delete mode 100644 node_modules/ms/index.js delete mode 100644 node_modules/ms/license.md delete mode 100644 node_modules/ms/package.json delete mode 100644 node_modules/ms/readme.md delete mode 100644 node_modules/oauth-sign/LICENSE delete mode 100644 node_modules/oauth-sign/README.md delete mode 100644 node_modules/oauth-sign/index.js delete mode 100644 node_modules/oauth-sign/package.json delete mode 100644 node_modules/performance-now/.npmignore delete mode 100644 node_modules/performance-now/.tm_properties delete mode 100644 node_modules/performance-now/.travis.yml delete mode 100644 node_modules/performance-now/README.md delete mode 100644 node_modules/performance-now/lib/performance-now.js delete mode 100644 node_modules/performance-now/lib/performance-now.js.map delete mode 100644 node_modules/performance-now/license.txt delete mode 100644 node_modules/performance-now/package.json delete mode 100644 node_modules/performance-now/src/index.d.ts delete mode 100644 node_modules/performance-now/src/performance-now.coffee delete mode 100644 node_modules/performance-now/test/mocha.opts delete mode 100644 node_modules/performance-now/test/performance-now.coffee delete mode 100644 node_modules/performance-now/test/scripts.coffee delete mode 100755 node_modules/performance-now/test/scripts/delayed-call.coffee delete mode 100755 node_modules/performance-now/test/scripts/delayed-require.coffee delete mode 100755 node_modules/performance-now/test/scripts/difference.coffee delete mode 100755 node_modules/performance-now/test/scripts/initial-value.coffee delete mode 100644 node_modules/progress/CHANGELOG.md delete mode 100644 node_modules/progress/LICENSE delete mode 100644 node_modules/progress/Makefile delete mode 100644 node_modules/progress/Readme.md delete mode 100644 node_modules/progress/index.js delete mode 100644 node_modules/progress/lib/node-progress.js delete mode 100644 node_modules/progress/package.json delete mode 100644 node_modules/psl/LICENSE delete mode 100644 node_modules/psl/README.md delete mode 100644 node_modules/psl/browserstack-logo.svg delete mode 100644 node_modules/psl/data/rules.json delete mode 100644 node_modules/psl/dist/psl.js delete mode 100644 node_modules/psl/dist/psl.min.js delete mode 100644 node_modules/psl/index.js delete mode 100644 node_modules/psl/package.json delete mode 100644 node_modules/punycode/LICENSE-MIT.txt delete mode 100644 node_modules/punycode/README.md delete mode 100644 node_modules/punycode/package.json delete mode 100644 node_modules/punycode/punycode.es6.js delete mode 100644 node_modules/punycode/punycode.js delete mode 100644 node_modules/qs/.editorconfig delete mode 100644 node_modules/qs/.eslintignore delete mode 100644 node_modules/qs/.eslintrc delete mode 100644 node_modules/qs/CHANGELOG.md delete mode 100644 node_modules/qs/LICENSE delete mode 100644 node_modules/qs/README.md delete mode 100644 node_modules/qs/dist/qs.js delete mode 100644 node_modules/qs/lib/formats.js delete mode 100644 node_modules/qs/lib/index.js delete mode 100644 node_modules/qs/lib/parse.js delete mode 100644 node_modules/qs/lib/stringify.js delete mode 100644 node_modules/qs/lib/utils.js delete mode 100644 node_modules/qs/package.json delete mode 100644 node_modules/qs/test/.eslintrc delete mode 100644 node_modules/qs/test/index.js delete mode 100644 node_modules/qs/test/parse.js delete mode 100644 node_modules/qs/test/stringify.js delete mode 100644 node_modules/qs/test/utils.js delete mode 100644 node_modules/request/CHANGELOG.md delete mode 100644 node_modules/request/LICENSE delete mode 100644 node_modules/request/README.md delete mode 100755 node_modules/request/index.js delete mode 100644 node_modules/request/lib/auth.js delete mode 100644 node_modules/request/lib/cookies.js delete mode 100644 node_modules/request/lib/getProxyFromURI.js delete mode 100644 node_modules/request/lib/har.js delete mode 100644 node_modules/request/lib/hawk.js delete mode 100644 node_modules/request/lib/helpers.js delete mode 100644 node_modules/request/lib/multipart.js delete mode 100644 node_modules/request/lib/oauth.js delete mode 100644 node_modules/request/lib/querystring.js delete mode 100644 node_modules/request/lib/redirect.js delete mode 100644 node_modules/request/lib/tunnel.js delete mode 100644 node_modules/request/package.json delete mode 100644 node_modules/request/request.js delete mode 100644 node_modules/safe-buffer/LICENSE delete mode 100644 node_modules/safe-buffer/README.md delete mode 100644 node_modules/safe-buffer/index.d.ts delete mode 100644 node_modules/safe-buffer/index.js delete mode 100644 node_modules/safe-buffer/package.json delete mode 100644 node_modules/safer-buffer/LICENSE delete mode 100644 node_modules/safer-buffer/Porting-Buffer.md delete mode 100644 node_modules/safer-buffer/Readme.md delete mode 100644 node_modules/safer-buffer/dangerous.js delete mode 100644 node_modules/safer-buffer/package.json delete mode 100644 node_modules/safer-buffer/safer.js delete mode 100644 node_modules/safer-buffer/tests.js delete mode 100644 node_modules/sshpk/.npmignore delete mode 100644 node_modules/sshpk/.travis.yml delete mode 100644 node_modules/sshpk/LICENSE delete mode 100644 node_modules/sshpk/README.md delete mode 100755 node_modules/sshpk/bin/sshpk-conv delete mode 100755 node_modules/sshpk/bin/sshpk-sign delete mode 100755 node_modules/sshpk/bin/sshpk-verify delete mode 100644 node_modules/sshpk/lib/algs.js delete mode 100644 node_modules/sshpk/lib/certificate.js delete mode 100644 node_modules/sshpk/lib/dhe.js delete mode 100644 node_modules/sshpk/lib/ed-compat.js delete mode 100644 node_modules/sshpk/lib/errors.js delete mode 100644 node_modules/sshpk/lib/fingerprint.js delete mode 100644 node_modules/sshpk/lib/formats/auto.js delete mode 100644 node_modules/sshpk/lib/formats/dnssec.js delete mode 100644 node_modules/sshpk/lib/formats/openssh-cert.js delete mode 100644 node_modules/sshpk/lib/formats/pem.js delete mode 100644 node_modules/sshpk/lib/formats/pkcs1.js delete mode 100644 node_modules/sshpk/lib/formats/pkcs8.js delete mode 100644 node_modules/sshpk/lib/formats/putty.js delete mode 100644 node_modules/sshpk/lib/formats/rfc4253.js delete mode 100644 node_modules/sshpk/lib/formats/ssh-private.js delete mode 100644 node_modules/sshpk/lib/formats/ssh.js delete mode 100644 node_modules/sshpk/lib/formats/x509-pem.js delete mode 100644 node_modules/sshpk/lib/formats/x509.js delete mode 100644 node_modules/sshpk/lib/identity.js delete mode 100644 node_modules/sshpk/lib/index.js delete mode 100644 node_modules/sshpk/lib/key.js delete mode 100644 node_modules/sshpk/lib/private-key.js delete mode 100644 node_modules/sshpk/lib/signature.js delete mode 100644 node_modules/sshpk/lib/ssh-buffer.js delete mode 100644 node_modules/sshpk/lib/utils.js delete mode 100644 node_modules/sshpk/man/man1/sshpk-conv.1 delete mode 100644 node_modules/sshpk/man/man1/sshpk-sign.1 delete mode 100644 node_modules/sshpk/man/man1/sshpk-verify.1 delete mode 100644 node_modules/sshpk/package.json delete mode 100644 node_modules/supports-color/browser.js delete mode 100644 node_modules/supports-color/index.js delete mode 100644 node_modules/supports-color/license delete mode 100644 node_modules/supports-color/package.json delete mode 100644 node_modules/supports-color/readme.md delete mode 100644 node_modules/tough-cookie/LICENSE delete mode 100644 node_modules/tough-cookie/README.md delete mode 100644 node_modules/tough-cookie/lib/cookie.js delete mode 100644 node_modules/tough-cookie/lib/memstore.js delete mode 100644 node_modules/tough-cookie/lib/pathMatch.js delete mode 100644 node_modules/tough-cookie/lib/permuteDomain.js delete mode 100644 node_modules/tough-cookie/lib/pubsuffix-psl.js delete mode 100644 node_modules/tough-cookie/lib/store.js delete mode 100644 node_modules/tough-cookie/lib/version.js delete mode 100644 node_modules/tough-cookie/package.json delete mode 100644 node_modules/tunnel-agent/LICENSE delete mode 100644 node_modules/tunnel-agent/README.md delete mode 100644 node_modules/tunnel-agent/index.js delete mode 100644 node_modules/tunnel-agent/package.json delete mode 100644 node_modules/tweetnacl/.npmignore delete mode 100644 node_modules/tweetnacl/AUTHORS.md delete mode 100644 node_modules/tweetnacl/CHANGELOG.md delete mode 100644 node_modules/tweetnacl/LICENSE delete mode 100644 node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md delete mode 100644 node_modules/tweetnacl/README.md delete mode 100644 node_modules/tweetnacl/nacl-fast.js delete mode 100644 node_modules/tweetnacl/nacl-fast.min.js delete mode 100644 node_modules/tweetnacl/nacl.d.ts delete mode 100644 node_modules/tweetnacl/nacl.js delete mode 100644 node_modules/tweetnacl/nacl.min.js delete mode 100644 node_modules/tweetnacl/package.json delete mode 100644 node_modules/uri-js/README.md delete mode 100644 node_modules/uri-js/bower.json delete mode 100644 node_modules/uri-js/dist/es5/uri.all.d.ts delete mode 100644 node_modules/uri-js/dist/es5/uri.all.js delete mode 100644 node_modules/uri-js/dist/es5/uri.all.js.map delete mode 100644 node_modules/uri-js/dist/es5/uri.all.min.d.ts delete mode 100644 node_modules/uri-js/dist/es5/uri.all.min.js delete mode 100644 node_modules/uri-js/dist/es5/uri.all.min.js.map delete mode 100644 node_modules/uri-js/dist/esnext/index.d.ts delete mode 100644 node_modules/uri-js/dist/esnext/index.js delete mode 100644 node_modules/uri-js/dist/esnext/index.js.map delete mode 100644 node_modules/uri-js/dist/esnext/regexps-iri.d.ts delete mode 100644 node_modules/uri-js/dist/esnext/regexps-iri.js delete mode 100644 node_modules/uri-js/dist/esnext/regexps-iri.js.map delete mode 100644 node_modules/uri-js/dist/esnext/regexps-uri.d.ts delete mode 100644 node_modules/uri-js/dist/esnext/regexps-uri.js delete mode 100644 node_modules/uri-js/dist/esnext/regexps-uri.js.map delete mode 100644 node_modules/uri-js/dist/esnext/schemes/http.d.ts delete mode 100644 node_modules/uri-js/dist/esnext/schemes/http.js delete mode 100644 node_modules/uri-js/dist/esnext/schemes/http.js.map delete mode 100644 node_modules/uri-js/dist/esnext/schemes/https.d.ts delete mode 100644 node_modules/uri-js/dist/esnext/schemes/https.js delete mode 100644 node_modules/uri-js/dist/esnext/schemes/https.js.map delete mode 100644 node_modules/uri-js/dist/esnext/schemes/mailto.d.ts delete mode 100644 node_modules/uri-js/dist/esnext/schemes/mailto.js delete mode 100644 node_modules/uri-js/dist/esnext/schemes/mailto.js.map delete mode 100644 node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts delete mode 100644 node_modules/uri-js/dist/esnext/schemes/urn-uuid.js delete mode 100644 node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map delete mode 100644 node_modules/uri-js/dist/esnext/schemes/urn.d.ts delete mode 100644 node_modules/uri-js/dist/esnext/schemes/urn.js delete mode 100644 node_modules/uri-js/dist/esnext/schemes/urn.js.map delete mode 100644 node_modules/uri-js/dist/esnext/uri.d.ts delete mode 100644 node_modules/uri-js/dist/esnext/uri.js delete mode 100644 node_modules/uri-js/dist/esnext/uri.js.map delete mode 100644 node_modules/uri-js/dist/esnext/util.d.ts delete mode 100644 node_modules/uri-js/dist/esnext/util.js delete mode 100644 node_modules/uri-js/dist/esnext/util.js.map delete mode 100644 node_modules/uri-js/package.json delete mode 100644 node_modules/uri-js/rollup.config.js delete mode 100644 node_modules/uri-js/src/index.ts delete mode 100644 node_modules/uri-js/src/punycode.d.ts delete mode 100644 node_modules/uri-js/src/regexps-iri.ts delete mode 100644 node_modules/uri-js/src/regexps-uri.ts delete mode 100644 node_modules/uri-js/src/schemes/http.ts delete mode 100644 node_modules/uri-js/src/schemes/https.ts delete mode 100644 node_modules/uri-js/src/schemes/mailto.ts delete mode 100644 node_modules/uri-js/src/schemes/urn-uuid.ts delete mode 100644 node_modules/uri-js/src/schemes/urn.ts delete mode 100644 node_modules/uri-js/src/uri.ts delete mode 100644 node_modules/uri-js/src/util.ts delete mode 100644 node_modules/uri-js/tests/qunit.css delete mode 100644 node_modules/uri-js/tests/qunit.js delete mode 100644 node_modules/uri-js/tests/test-es5-min.html delete mode 100644 node_modules/uri-js/tests/test-es5.html delete mode 100644 node_modules/uri-js/tests/tests.js delete mode 100644 node_modules/uri-js/tsconfig.json delete mode 100644 node_modules/uri-js/yarn.lock delete mode 100644 node_modules/uuid/AUTHORS delete mode 100644 node_modules/uuid/CHANGELOG.md delete mode 100644 node_modules/uuid/LICENSE.md delete mode 100644 node_modules/uuid/README.md delete mode 100755 node_modules/uuid/bin/uuid delete mode 100644 node_modules/uuid/index.js delete mode 100644 node_modules/uuid/lib/bytesToUuid.js delete mode 100644 node_modules/uuid/lib/md5-browser.js delete mode 100644 node_modules/uuid/lib/md5.js delete mode 100644 node_modules/uuid/lib/rng-browser.js delete mode 100644 node_modules/uuid/lib/rng.js delete mode 100644 node_modules/uuid/lib/sha1-browser.js delete mode 100644 node_modules/uuid/lib/sha1.js delete mode 100644 node_modules/uuid/lib/v35.js delete mode 100644 node_modules/uuid/package.json delete mode 100644 node_modules/uuid/v1.js delete mode 100644 node_modules/uuid/v3.js delete mode 100644 node_modules/uuid/v4.js delete mode 100644 node_modules/uuid/v5.js delete mode 100644 node_modules/verror/.npmignore delete mode 100644 node_modules/verror/CHANGES.md delete mode 100644 node_modules/verror/CONTRIBUTING.md delete mode 100644 node_modules/verror/LICENSE delete mode 100644 node_modules/verror/README.md delete mode 100644 node_modules/verror/lib/verror.js delete mode 100644 node_modules/verror/package.json diff --git a/docs/major rhel7stig-sphinx master doc-source.zip b/docs/major rhel7stig-sphinx master doc-source.zip new file mode 100644 index 0000000000000000000000000000000000000000..a98312f46c052a0d802ec25dca93d06067d971f7 GIT binary patch literal 494253 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 literal 0 HcmV?d00001 diff --git a/docs/platform/1.txt b/docs/platform/1.txt new file mode 100644 index 0000000..47938e7 --- /dev/null +++ b/docs/platform/1.txt @@ -0,0 +1,51 @@ +Analysis for: 0x0ab477d4be7bf5684c87c5092549405f794174e500ae60b4621d5874a7e1b48c +Block number: 8876499 at 05-11-2019 08:21:26 UTC +Tx cost: 0.00522598 ETH +Gas used: 1045196 / 5.0 Gwei +Emitted events: +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x42f1181e00000000000000000000000000000000000000000000000000000000, method=addAuthorizedAddress(address)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x66615d5600000000000000000000000000000000000000000000000000000000, method=attachStakingContract(address)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x856a65eb00000000000000000000000000000000000000000000000000000000, method=batchExecute(bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x37b006a600000000000000000000000000000000000000000000000000000000, method=detachStakingContract()) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x7071293900000000000000000000000000000000000000000000000000000000, method=removeAuthorizedAddress(address)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x9ad2674400000000000000000000000000000000000000000000000000000000, method=removeAuthorizedAddressAtIndex(address,uint256)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x8a2e271a00000000000000000000000000000000000000000000000000000000, method=addExchangeAddress(address)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x68a7d6cd00000000000000000000000000000000000000000000000000000000, method=createStakingPool(uint32,bool)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x5d91121d00000000000000000000000000000000000000000000000000000000, method=decreaseStakingPoolOperatorShare(bytes32,uint32)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x0b9663db00000000000000000000000000000000000000000000000000000000, method=endEpoch()) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xff691b1100000000000000000000000000000000000000000000000000000000, method=finalizePool(bytes32)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xe1c7392a00000000000000000000000000000000000000000000000000000000, method=init()) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xb3e3337900000000000000000000000000000000000000000000000000000000, method=joinStakingPoolAsMaker(bytes32)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x58f6c7e300000000000000000000000000000000000000000000000000000000, method=moveStake((uint8,bytes32),(uint8,bytes32),uint256)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xa3b4a32700000000000000000000000000000000000000000000000000000000, method=payProtocolFee(address,address,uint256)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x01e28d8400000000000000000000000000000000000000000000000000000000, method=removeExchangeAddress(address)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x9c3ccc8200000000000000000000000000000000000000000000000000000000, method=setParams(uint256,uint32,uint256,uint32,uint32)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xa694fc3a00000000000000000000000000000000000000000000000000000000, method=stake(uint256)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x2e17de7800000000000000000000000000000000000000000000000000000000, method=unstake(uint256)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xb510879f00000000000000000000000000000000000000000000000000000000, method=withdrawDelegatorRewards(bytes32)) +Execution trace: +[1045196]: [Sender] 0xfeeea80c14f72afab75b9a6b1de4bdc937698760 +[965300]: [Receiver] MassParityRegistry.registerSignatures(signatures=['00000000000000000000000000000000000000000000000000000000000002e0', '\x03 ', '\x03`', '00000000000000000000000000000000000000000000000000000000000003a0', '00000000000000000000000000000000000000000000000000000000000003e0', '\x04 ', '0000000000000000000000000000000000000000000000000000000000000480', '00000000000000000000000000000000000000000000000000000000000004c0', '\x05', '\x05@', '00000000000000000000000000000000000000000000000000000000000005a0', '00000000000000000000000000000000000000000000000000000000000005e0', '\x06 ', '\x06`', '00000000000000000000000000000000000000000000000000000000000006a0', '\x07', '\x07`', '00000000000000000000000000000000000000000000000000000000000007a0', '\x08', '\x08@', '00000000000000000000000000000000000000000000000000000000000008a0', '00000000000000000000000000000000000000000000000000000000000008e0', '\t ']) => (['True', 'True', 'True', 'True', 'True', 'True', 'False', 'True', 'True', 'True', 'True', 'True', 'True', 'True', 'True', 'True', 'False', 'False', 'True', 'True', 'True', 'True', 'True']) +[31152]: SignatureReg.register(_method=addAuthorizedAddress(address)) => (True) +[31152]: SignatureReg.register(_method=attachStakingContract(address)) => (True) +[31152]: SignatureReg.register(_method=batchExecute(bytes[])) => (True) +[31152]: SignatureReg.register(_method=detachStakingContract()) => (True) +[51154]: SignatureReg.register(_method=removeAuthorizedAddress(address)) => (True) +[71622]: SignatureReg.register(_method=removeAuthorizedAddressAtIndex(address,uint256)) => (True) +[1886]: SignatureReg.register(_method=addAuthorizedAddress(address)) => (False) +[31152]: SignatureReg.register(_method=addExchangeAddress(address)) => (True) +[31152]: SignatureReg.register(_method=createStakingPool(uint32,bool)) => (True) +[71622]: SignatureReg.register(_method=decreaseStakingPoolOperatorShare(bytes32,uint32)) => (True) +[31152]: SignatureReg.register(_method=endEpoch()) => (True) +[31152]: SignatureReg.register(_method=finalizePool(bytes32)) => (True) +[31152]: SignatureReg.register(_method=init()) => (True) +[31152]: SignatureReg.register(_method=joinStakingPoolAsMaker(bytes32)) => (True) +[71622]: SignatureReg.register(_method=moveStake((uint8,bytes32),(uint8,bytes32),uint256)) => (True) +[71622]: SignatureReg.register(_method=payProtocolFee(address,address,uint256)) => (True) +[1886]: SignatureReg.register(_method=removeAuthorizedAddress(address)) => (False) +[1904]: SignatureReg.register(_method=removeAuthorizedAddressAtIndex(address,uint256)) => (False) +[31152]: SignatureReg.register(_method=removeExchangeAddress(address)) => (True) +[71622]: SignatureReg.register(_method=setParams(uint256,uint32,uint256,uint32,uint32)) => (True) +[31152]: SignatureReg.register(_method=stake(uint256)) => (True) +[31152]: SignatureReg.register(_method=unstake(uint256)) => (True) +[71622]: SignatureReg.register(_method=withdrawDelegatorRewards(bytes32)) => (True) \ No newline at end of file diff --git a/docs/platform/2.txt b/docs/platform/2.txt new file mode 100644 index 0000000..d9589de --- /dev/null +++ b/docs/platform/2.txt @@ -0,0 +1,17 @@ +Analysis for: 0x259d110ffaced3b0ac112a38d526891fcf82ba8776d14ed8e475f0a279247a8b +Block number: 8876448 at 05-11-2019 08:10:46 UTC +Tx cost: 0.002092905 ETH +Gas used: 418581 / 5.0 Gwei +Emitted events: +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x442026ed00000000000000000000000000000000000000000000000000000000, method=approveMakerAssetProxy(bytes)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x942d33c000000000000000000000000000000000000000000000000000000000, method=marketBuyOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[],uint256,address)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xae93b97a00000000000000000000000000000000000000000000000000000000, method=marketSellOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],uint256,address)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x630f1e6c00000000000000000000000000000000000000000000000000000000, method=withdrawAsset(bytes,uint256)) +Execution trace: +[418581]: [Sender] 0xfeeea80c14f72afab75b9a6b1de4bdc937698760 +[367293]: [Receiver] MassParityRegistry.registerSignatures(signatures=['00000000000000000000000000000000000000000000000000000000000000a0', '00000000000000000000000000000000000000000000000000000000000000e0', '00000000000000000000000000000000000000000000000000000000000001c0', '0000000000000000000000000000000000000000000000000000000000000280', '00000000000000000000000000000000000000000000000000000000000002c0']) => (['True', 'True', 'True', 'False', 'True']) +[31152]: SignatureReg.register(_method=approveMakerAssetProxy(bytes)) => (True) +[153030]: SignatureReg.register(_method=marketBuyOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[],uint256,address)) => (True) +[132678]: SignatureReg.register(_method=marketSellOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],uint256,address)) => (True) +[1886]: SignatureReg.register(_method=transferOwnership(address)) => (False) +[31152]: SignatureReg.register(_method=withdrawAsset(bytes,uint256)) => (True) \ No newline at end of file diff --git a/docs/platform/3.txt b/docs/platform/3.txt new file mode 100644 index 0000000..5e56fee --- /dev/null +++ b/docs/platform/3.txt @@ -0,0 +1,45 @@ +Analysis for: 0x065c405b41303affcc68a6276fb294d957a4fe67ff8e1dabcca1e0f2af2b12df +Block number: 8876427 at 05-11-2019 08:06:48 UTC +Tx cost: 0.013568335 ETH +Gas used: 2713667 / 5.0 Gwei +Emitted events: +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xdedfc1f100000000000000000000000000000000000000000000000000000000, method=batchCancelOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xfc74896d00000000000000000000000000000000000000000000000000000000, method=batchExecuteTransactions((uint256,uint256,uint256,address,bytes)[],bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xbeee2e1400000000000000000000000000000000000000000000000000000000, method=batchFillOrKillOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256[],bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x9694a40200000000000000000000000000000000000000000000000000000000, method=batchFillOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256[],bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x8ea8dfe400000000000000000000000000000000000000000000000000000000, method=batchFillOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256[],bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x6fcf3e9e00000000000000000000000000000000000000000000000000000000, method=batchMatchOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x6a1a80fd00000000000000000000000000000000000000000000000000000000, method=batchMatchOrdersWithMaximalFill((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x2da6298700000000000000000000000000000000000000000000000000000000, method=cancelOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes))) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x2280c91000000000000000000000000000000000000000000000000000000000, method=executeTransaction((uint256,uint256,uint256,address,bytes),bytes)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xe14b58c400000000000000000000000000000000000000000000000000000000, method=fillOrKillOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),uint256,bytes)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x9b44d55600000000000000000000000000000000000000000000000000000000, method=fillOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),uint256,bytes)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x8bc8efb300000000000000000000000000000000000000000000000000000000, method=marketBuyOrdersFillOrKill((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x78d29ac100000000000000000000000000000000000000000000000000000000, method=marketBuyOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xa6c3bf3300000000000000000000000000000000000000000000000000000000, method=marketSellOrdersFillOrKill((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x369da09900000000000000000000000000000000000000000000000000000000, method=marketSellOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x88ec79fb00000000000000000000000000000000000000000000000000000000, method=matchOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),bytes,bytes)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xb718e29200000000000000000000000000000000000000000000000000000000, method=matchOrdersWithMaximalFill((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),bytes,bytes)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x46c02d7a00000000000000000000000000000000000000000000000000000000, method=preSign(bytes32)) +Execution trace: +[2713667]: [Sender] 0xfeeea80c14f72afab75b9a6b1de4bdc937698760 +[2497259]: [Receiver] MassParityRegistry.registerSignatures(signatures=['\x02`', '\x03', '0000000000000000000000000000000000000000000000000000000000000380', '\x04@', '\x05', '00000000000000000000000000000000000000000000000000000000000005c0', '00000000000000000000000000000000000000000000000000000000000006e0', '\x08 ', '00000000000000000000000000000000000000000000000000000000000008c0', '\t', '0000000000000000000000000000000000000000000000000000000000000980', '\n@', '\x0b', '0000000000000000000000000000000000000000000000000000000000000bc0', '0000000000000000000000000000000000000000000000000000000000000c80', '\r@', '\x0e', '\x0f ', '\x10@']) => (['True', 'True', 'True', 'True', 'True', 'True', 'True', 'True', 'False', 'True', 'True', 'True', 'True', 'True', 'True', 'True', 'True', 'True', 'True']) +[112326]: SignatureReg.register(_method=batchCancelOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[])) => (True) +[91974]: SignatureReg.register(_method=batchExecuteTransactions((uint256,uint256,uint256,address,bytes)[],bytes[])) => (True) +[132678]: SignatureReg.register(_method=batchFillOrKillOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256[],bytes[])) => (True) +[132678]: SignatureReg.register(_method=batchFillOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256[],bytes[])) => (True) +[132678]: SignatureReg.register(_method=batchFillOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256[],bytes[])) => (True) +[193734]: SignatureReg.register(_method=batchMatchOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],bytes[])) => (True) +[214087]: SignatureReg.register(_method=batchMatchOrdersWithMaximalFill((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],bytes[])) => (True) +[112326]: SignatureReg.register(_method=cancelOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes))) => (True) +[1886]: SignatureReg.register(_method=cancelOrdersUpTo(uint256)) => (False) +[91974]: SignatureReg.register(_method=executeTransaction((uint256,uint256,uint256,address,bytes),bytes)) => (True) +[132678]: SignatureReg.register(_method=fillOrKillOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),uint256,bytes)) => (True) +[132678]: SignatureReg.register(_method=fillOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),uint256,bytes)) => (True) +[132678]: SignatureReg.register(_method=marketBuyOrdersFillOrKill((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[])) => (True) +[132678]: SignatureReg.register(_method=marketBuyOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[])) => (True) +[132678]: SignatureReg.register(_method=marketSellOrdersFillOrKill((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[])) => (True) +[132678]: SignatureReg.register(_method=marketSellOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[])) => (True) +[193734]: SignatureReg.register(_method=matchOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),bytes,bytes)) => (True) +[193734]: SignatureReg.register(_method=matchOrdersWithMaximalFill((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),bytes,bytes)) => (True) +[31152]: SignatureReg.register(_method=preSign(bytes32)) => (True) \ No newline at end of file diff --git a/docs/platform/4.txt b/docs/platform/4.txt new file mode 100644 index 0000000..134a38d --- /dev/null +++ b/docs/platform/4.txt @@ -0,0 +1,12 @@ +Analysis for: 0xa0eb8e572d844ebc455a8454c40c8e832e95dd08dd88d6910ed2f562340cf790 +Block number: 7739572 at 11-05-2019 13:52:58 UTC +Tx cost: 0.000662186 ETH +Gas used: 94598 / 7.0 Gwei +Emitted events: +SignatureReg.Registered(creator=[Receiver] CloneableWallet, signature=0x83ef0c2300000000000000000000000000000000000000000000000000000000, method=buyEgg(uint256,uint256,bool)) +[Receiver] CloneableWallet.InvocationSuccess(hash=aa08a74ab0fc2c6e3661d0d7111e47c65580d831f431f8c37f5b5b5f2cec4918, result=0, numOperations=1) +Execution trace: +[94598]: [Sender] 0x778d1a023bd6ee96e7fad7d12eb72b99db77a3a6 +[62574]: [Receiver] CloneableWallet.invoke1CosignerSends(v=27, r=358675218fa3d9e57562244c580a12b78e52ae5b5f624dce6edf741ca6e634db, s=28f11cb413c17fff5a060583aec8e3ec168386d427baf35ba489c1f57a4bb3dd, nonce=0, authorizedAddress=0xaa8ca94c71cad19c2b3cd355e485e644275eea25, data=0044691b39d1a75dc4e0a0346cbb15e310e6ed1e8600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064f2c298be0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001c6275794567672875696e743235362c75696e743235362c626f6f6c2900000000) => () +[61733]: (delegate) [Receiver] CloneableWallet[CloneableWallet.invoke1CosignerSends](v=27, r=358675218fa3d9e57562244c580a12b78e52ae5b5f624dce6edf741ca6e634db, s=28f11cb413c17fff5a060583aec8e3ec168386d427baf35ba489c1f57a4bb3dd, nonce=0, authorizedAddress=0xaa8ca94c71cad19c2b3cd355e485e644275eea25, data=0044691b39d1a75dc4e0a0346cbb15e310e6ed1e8600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064f2c298be0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001c6275794567672875696e743235362c75696e743235362c626f6f6c2900000000) => () +[31152]: SignatureReg.register(_method=buyEgg(uint256,uint256,bool)) => (True) \ No newline at end of file diff --git a/docs/platform/5.txt b/docs/platform/5.txt new file mode 100644 index 0000000..78a5f1b --- /dev/null +++ b/docs/platform/5.txt @@ -0,0 +1,35 @@ +Analysis for: 0x2f66eda6b42d072627cdccfbf1477739ca6ea50f8afaafb93f5167d196c0ca58 +Block number: 9711226 at 20-03-2020 22:20:31 UTC +Tx cost: 0.009494128 ETH +Gas used: 1186766 / 8.0 Gwei +Emitted events: +SignatureReg.Registered(creator=customIcoToken, signature=0xb7df1d2500000000000000000000000000000000000000000000000000000000, method=migrate(address,uint256,uint256,address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0xe8e3370000000000000000000000000000000000000000000000000000000000, method=addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0xf305d71900000000000000000000000000000000000000000000000000000000, method=addLiquidityETH(address,uint256,uint256,uint256,address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0xbaa2abde00000000000000000000000000000000000000000000000000000000, method=removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x02751cec00000000000000000000000000000000000000000000000000000000, method=removeLiquidityETH(address,uint256,uint256,uint256,address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x2195995c00000000000000000000000000000000000000000000000000000000, method=removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)) +SignatureReg.Registered(creator=customIcoToken, signature=0xded9382a00000000000000000000000000000000000000000000000000000000, method=removeLiquidityETHWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)) +SignatureReg.Registered(creator=customIcoToken, signature=0x38ed173900000000000000000000000000000000000000000000000000000000, method=swapExactTokensForTokens(uint256,uint256,address[],address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x8803dbee00000000000000000000000000000000000000000000000000000000, method=swapTokensForExactTokens(uint256,uint256,address[],address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x7ff36ab500000000000000000000000000000000000000000000000000000000, method=swapExactETHForTokens(uint256,address[],address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x4a25d94a00000000000000000000000000000000000000000000000000000000, method=swapTokensForExactETH(uint256,uint256,address[],address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x18cbafe500000000000000000000000000000000000000000000000000000000, method=swapExactTokensForETH(uint256,uint256,address[],address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0xfb3bdb4100000000000000000000000000000000000000000000000000000000, method=swapETHForExactTokens(uint256,address[],address,uint256)) +Execution trace: +[1186766]: [Sender] 0x8688a84fcfd84d8f78020d0fc0b35987cc58911f +[1113766]: customIcoToken.New() +[73422]: SignatureReg.register(_method=migrate(address,uint256,uint256,address,uint256)) => (True) +[89574]: SignatureReg.register(_method=addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)) => (True) +[69106]: SignatureReg.register(_method=addLiquidityETH(address,uint256,uint256,uint256,address,uint256)) => (True) +[89574]: SignatureReg.register(_method=removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)) => (True) +[89574]: SignatureReg.register(_method=removeLiquidityETH(address,uint256,uint256,uint256,address,uint256)) => (True) +[109926]: SignatureReg.register(_method=removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)) => (True) +[109926]: SignatureReg.register(_method=removeLiquidityETHWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)) => (True) +[89574]: SignatureReg.register(_method=swapExactTokensForTokens(uint256,uint256,address[],address,uint256)) => (True) +[89574]: SignatureReg.register(_method=swapTokensForExactTokens(uint256,uint256,address[],address,uint256)) => (True) +[69222]: SignatureReg.register(_method=swapExactETHForTokens(uint256,address[],address,uint256)) => (True) +[69106]: SignatureReg.register(_method=swapTokensForExactETH(uint256,uint256,address[],address,uint256)) => (True) +[69106]: SignatureReg.register(_method=swapExactTokensForETH(uint256,uint256,address[],address,uint256)) => (True) +[69222]: SignatureReg.register(_method=swapETHForExactTokens(uint256,address[],address,uint256)) => (True) +[N/A]: customIcoToken.suicide() \ No newline at end of file diff --git a/docs/platform/ACI Highway FTP Integration Package (1) (1).zip b/docs/platform/ACI Highway FTP Integration Package (1) (1).zip new file mode 100644 index 0000000000000000000000000000000000000000..f49a9fd9ef79290072fc207d23f0408cba35d424 GIT binary patch literal 904414 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%0DF0~QVVn|0`3ac#n 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
EPy&DC@23m*csSP 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⁣o^uJQ z>3Gjx7%w7!Ww*=jo2j?D8YPC0dJP7BC~M}MO3lH15b+7p4r#G{?%XAyVrXc<Ry}jq){@!B;%#&kn_@po{ zM24)SiGhqo7zd=MuCK2ZL=1+CIu`~NGX&+R#$8HiKyDDZF&McGmyjdFjmXVJDv!?> z2zXdHC|Q;mc{CEeS`}ge(9Xa409fLTWc`orq19INrsbjWa9|I)J2c{FKz?_uE zD{*&;cPep)iGw*n=ESlsUdN&Z z5lj0-2e2Pn0u6yS@H>b)VM&UE>Qu#RSa|#V`kBka!5*4n`G@+I;Yh4ru$w!M@!{S3 z_XZ*%vZI$57V?=4DTVngOc$^!k;y=Oq{+K7HK^nkGCP|MaD%V{iG{ePR3AnY?*rgR z`XL-ml&e-trADF1cc6Nr!WecX_HCp{%q`4bo1IzCt)ML2Huq3(-|*1jU~ixBLg0Hd zwukRKpo|X&whj8jKAJ-oQ#m~TM0cqlCEE)2kRlmdY z;#ZzK0LE4nbU_8yhiBw@y zeI$RXSqAjn7PY8ojfI89%U7;a8ihK>Xh4BDsKQpuT7^qZwK%w=mtK0Aojd7*OUo2m zrAWTs%Wgds!h0x6@IPPX=XE+My$dU6d3kMlbp;ntp(r|LF$wS$5+EQi z6+9|rv#?OG&QZ?5Nt6Gp*&eNOqf#i7Jx>lja0df?i;RV8tynIK#>|a+Jd?UMKXY|) zHeJt>BadT;x?l@aT_M#?9O*FI6Zvdlq|Y-x3L~O#cyL?q0HwC5qv! zf=hyZH-$J{5sxKwp1>8+B1ADzERPX^#bvXx&rr-Zo|4Eb6?iA?0qUE0GCZC2 zRX}UbAM`^8EmG$QQ8U;!$<*@NgNm=n{bG(XLXARoQO(@nO=wPrb$O! zxG)W5{O|;AcF2&)&=NLrll!>xMU1o zBvL72t05y;Inj71!X;X`gi_t?b5Z8;Q_bPj=5RM zm-8E`O1U1*<>Q3J%=UJxwrwavO`ON>92goV9bzSs@DBDEZFZ-}yZyuw-#t6o9$S;8 z+|qh(Wy52#mQ#iAy!f3&yZCqh#XnXK?ojN;a)W9)r=i?1EXUXW{kQ(l-};xv6FdI< zKmJ_>%8zCffc!`%gBDDZOO$2FVgnmkT0jNf4;GkY=wVG_H1MHZb*x@qd<%su{U^74 zaVlB7$#TW00)g1AqtMYuJaLIY^3qb1av?6qO6FP|EFCg3xtYImJRU-stKEG$zRvI% zxug+N_30opjWbA|R_*-Sw>T}wL&C(XTrTd~vzv*e&S%w|CJGNlSWmblWDbHF(%EF) z5Wh*L3DtP&I)V@J-Ep~cvBXGd4#y^j@!)#mCIvl%Pb&e{Epc+XIo2JD=8?%WhxpYF848=k3lJmwMK z;wv01zrv9>$CjkkE_^3y$+na&hcP9X)!Yt9c{@?#;AKklT|Bz-5+8s%T!=@5$;H!T z(jp=N>;u-z?Jm02Kfl8OwwWg+FhK$sYm>Di7BO!#`CtE;zc%;co5uzw4<9+Q=W~zv zkMCDP?y}iP4;1n6*g@eSC{&g8L}4*{;q^Dpy!gt}wJA~!T@LIGdXd;_g_2-Dq&|bZ z04pZH$hl_*h;4|P#R0)QQx>BP!z+57LWVfH@}%$-w+HPOH1d@UZ^z7 zE=7>&sM*ef){d1#%KOmh5RE2-{r#cg0Y_g1ws@%Gn@$_GmK1W4yhc5ol1OK-&cFEw ze@scv(8!<#YF)BZa^+egUoO>F+4|+P3UnG4<>Iv$^Z1? z|L>pwZCF9pMhAc_(ODL#)@vs9z}OUah18_BtM z&Mlq2L|-wt%PGK?sy501nl0R>3AlUlX%eZnn*000XbCv0L>4*Ct84XCA%FOx6V8W^ zw`>aT8MnzskRBVv7W86kqVvd=LJ6I_c$PHq-ouAP1`LB}v>o-9VLkc!8z-H+#~%9P z=fz_Yk?RksBW^jBS!Uf}py@btqTId8<*Hdr61Vt7{;3;&ZaBZp)t2QuQjJOtBEQ>x zuy%6!S9!41RuVPk0UCVDPvii)b(0*Jj4p7zrjoR;cb`Y9IS!N9e8b>BgqD%mFJIai zI4xJvq$>aV!Kg3cM`qY>Is>l{^_EXi9;{talQW-dfQ?w>**-v>$$@FIy+OP;e^G8V zWME7}!Uv%2528jjnQK$7dkpf4ch8)gkJn@??_J7So1)$GT%JlECg(}_W4hgF<-oMP zjy8pE_gu7<(mhLm5K(-bj=94C*0pjswS>xGrtY)_Iby%Z|Ls5erm-fdcthbp|KNZ* z6oLi`54OQ(X<1DeN!V@VdeIy}l8nKj*-Y zJmwo2D92M!NV!8H!3!DkQsWKE)8*L(CsVWa=38$bKX}9x2@*`Rvr8Z!Kbm~urSJ6| z*?s(TpBAApv1mRT0Mpj91Pr;m)OM8Ji&Gxi4I$bmAD|PZHtg1?-T0v`QTd@ftlLP^ zHm%*?>efNsi@baM5|VE~FFE+`7Y9h=k_&YYQVvGbI6t^5krLBn$Quc1nmyDl@DDz% zc01j+=Iy>B?K$lsYL7{~S?z4vhTwJzSDr+Zo_v41N2~$1JlhAGcOP)Sw;YuOMR_kb z$nAE=%Pm*;6zZO1-P24;Mw6`ulk$FV_vq!xl8-Oud2H0)Rp3vyt-A7K`f9%LT;}aA8y?sHKhlY{iN_z?f8=og_!#-`9hZatmLP*U;AuOoZMAnZ zxnd$hfj8f6_4b8mw@{p0Yh((+a7?`ecV=6#H5}WvZKpfzpkv#%ZL?!Ov28mY+k9f% zHotT3x%VC457>LGQLE;hg}tkKSJ0cpvX^C|*~xb$-2J1u$zgjzp3cyJ^l+FX zIAG%7xux1Hb9u_MEcjlNP_B`)`)_wkNB4dobO7@$hlG3^+x^D<%%$H)pf7SZiVT6U zte;7v%7P=BO^18c=9#=+?Yn_&xo<#$d7rhGi0}|%UYW1Da&iWw!+>S8erMkW6uK{k(*6YV|a*4ZZ334ZZsg7`o5f(c@(t#fYRAlm_kcU;Zwn=z8D ze@$hlGbkwA`~oEGUjcD8k9G;@o0=fX19J_~ZD|mR;^L3XWiQ1I*9efp->1+1GYa+^ z=L*to&}GnMQy2jvLrUFJN37wkyiM4a{T49cb z>(EIn2NcC&CV75m5%T;uJK*8S1c6v?Gt>MiYmmYTbfqoY5jX)*4+MP$4G>*aJv~B$ zF-??;4kEaK6K_(y2-NC&+ySOmdS%@XzHAvPC}GfO_R<+!Ms@638GJg#o`H1PqLLcD z>@Kd~M1jI7B#pY4dSSShT=DW^+rOM=kEzwDdCYe18Io!9>@etxJt7m&9#>yi_MEuz zo_Pp3`1&}CCGy}@9Xpd~G4@VX(l_W0>swYQ!+$FkR_c|b-Lmsu5cR|zOh+x(yuOix zLq7}SDb`?2Heubj|3>GUwmjEMMA1dZLPGfBYhs|N`qO`Qn=VF!_I6+6z3MrC(_z|zJ#~tE&C`f zI`@!4aXrgatt+9d%5CG?=_uhRZ6zYRY?0~WNjgRE8XWX)NI6+vl*hr4EXVa4!IfxN zzj22KqaUk4RBpHhZ5(ID@3I|ArG2U56yMs(X{jf%YpvhD*|(V_ie64|iA>+2?I)d- zX?8oR>2iONkSk%6q@KEeI_%^L`?ITg;#Mz{Z!JyG;N$LGNowuY-o0@xcsAsIm*So@ z#8ch(a2hPlW5ucjXtoc|_*U$8nIDN>3!p~R%g)gH>ocWgt2DQJeU2OwOo3kbWf;4Y zFwc!968)yT$ldM67bp5hRF)h9P7gWD$(AScg?~D4d#_Gt3w)n>2^KLr;y3JhumyBg zc!5jRZ!?}L#xcf+uz~5VcuEWougw)_igjV{J`Gr`bH`5$2D z38M<7Ug^yh{*jC6`+&%2@i^~jrn$G717-p^>xsa042Z$C(bRvG6^csZD z86T}R^FQdE+$zg^@A7U7`d{^@`kx;21$Tkq=t(uu2qwbPsW(6&tl`TpTdy^G-%5)| zmJ|y9GL-Z+CvMY%Tdsa^O(u0*R`?pQb5|#_-n+m`eUU2o zZ|J&E;YXG#^I;)BiEXZ9=P?=dHov!E@7P&pt@WQ-A`f%{{2zH7HUz5`kjD zr)uTQvG-G^|Ai&ZQOf+fAWTdvD7hq`{F-o!5GPEr=sMGf#fNyv%wi(5)h{|zwiOUO zm{L*0@=dv<1Qi}x>*K92zY=hMB1Ejr)!i~Mf_QTe9hWGlH(!T={jwruN*_gx^)fqI zMH7)wW;Zn7&Oby^As(}p8X?7guMa~XQcc;krbe)h@NzUgU`gwqa(jJ`>%q)?(7F6<*^un zNv!9RS0?r5mODO$duF*PU;OuuPe#q=%NCW^+?&5mgw0lta9_=rhB;$ z#0!An*!?m^oc1id#PnbWJVF-c4_yd$SKaIJBl} z2#CI>*`@v5Bpx5=VBJp{E!r&4V&4>-zs%{*5?u2W&NOcAq`f?yK+J8?6WF+T1DV@A z^zYaQq0;@c2|`sb^8-qCk1V>*;Clzyx}}ww-Jrs2SD9pFSUO`3Vql?2UB%HIs~Uoh z_^l039%hheMaOx%XJO?+BHk~B&N)8?h1p;im${`8Ulm_(=-S4ERhjn4l)6dG;=SSU z8x)329^#51DqR%@bf=_1@znn2&TtdPNzEopCqHQtqx2YCKASQy$EtBl0>=#4KA|p7 zMNMM=aJjx4^)f$ZLJBBIXd19$j_=Z|-l0SdfKLF-Q{;nZh@pLlFj_z$-lq#QWk`u8 zu_~dDeZ|>TEyy?-c$8TxE$!C>EihUb(GfX z+$*Jm4~0R0F;;j@9C;nD&j@&5eC==D-pbVkfQG@)cm%p5|H2Fz4NXKp18Ym*Msr}b zeP0xjYJXX3+zu8vi|Bc}SDAx*ogd5S2#wo&1bx$5kKejEVs3cq0KEfWYFup0cw16& zcs|ZxY7?RzHRhn1|Dpq?yD7?cZaU=jv4ysLSI^|AFgB z68g-P8j7qdmk9Pd4CHtY>oz)^m;1#AKNpe94_+V-%f6#$T}R&A4zaiEB-P5{rb<9! zEJB=S``?awqyf^UCM-I1?Wgeo!cDP)+SZF@t+lmEt2 zH9MOM{~^q(s28OIq^)q~hlp%{4*Q3=Je?d122;|Vm=0OJTj>1J_BA}&U#85H-nmNc z^@jyP$I@ukw_+z$#9(hVi0SV?qq$km_WrB}0*c-0BkAMI64sA@-|kV3z=NY=L?F(N zxl3_ou(;8=N??!}D4vY!SoX8ly7lzVNZ32~1ypDl$Z{$(8xNvdvFr~-t`(-~Wm(l<8l*4iua7n~=Yoe#x4ZLV{= zp^?Lpu0kl>eeGWN-1Vww7(y+Ley$M1LVA(&`>`vC1&1TqaLGk+?!iBVd%a-0c=EfY zE}Z4L-yaMf{Id6F%FN76Z%km9EEVO6O@+KvZBb$1xR)ql#=*U~b|-_kK;xCl*C^_@ z`6fs9AQlvobd{%QlM&t>kDRiA_4Y-nQd&NHe4qJyi^b`PUbv2hogyp(PErBOb;V^v zZf4}Ps?;q9p5Q@+AElU!f=l@RMEo@;BJXc@aI?kr$*%%}F0d9i81C^rXp&yk|nSsN4q#EneX*^_qUNZLr=^ zUS?IEP&E6zgTcfA6vc-ohGbb$?;Vk%2la<-CH}+5k~)tNWg=!mnf4&KK=2(wOrcY% zY!-YMw-U4{GpxJZmm(yd{#iW>^GFa4UTq7?MtXB*#+*(SnUcI4R&Bz$ShXrAe4`% zY`}_pBUoy!)qCC3f9Se*&U9@*yN|vyE#!>Sgrqf&V!){ zF4Vy?!*%I$`KX9zCB;KDR=JHcqdsUz+6?rrW7Nu2A+4o04tj_XE0$ST`{I-`{Q?@4 z&tO~h0ns*@qpD^4bSly<`(*MvOop&2@ht zjIE!OYiIMlyIjSVuhGxU*4NgRs!D}P6*BzI)18qKm)WRLSwoF}UrApX;lTljR%HVq zIr1qNt3L8t(C!XPxq4)iuZ#H#*fRl0b%~br@rD)b5pbxY>a?1Pzt+@~cLm;ZW)a5l zU}MC{=ocD?fQVVuOu5i{aB=HN6GzJh_{iTc*nq9Py}=K%LjB8(vLy-?=T$jj47XDD za(d^+YKa|X{m)1Xe#*$2u|nmD?#KV%j6;?HNhVRt&QRT4@8{v$(%W6=zrws&%6=)AD*K9HnxIkJKqc6<)OsY>PTel^&UC*CI{I8RXq$ zRE$$P(H z^X(wMNbui!`%(n2|L`9n`Ev~32Y4CQqWnHk?}a8#VXN`#tRqy%Px-7BAocL4$HcMdwCKK!;AyO^d`Q#0XvlU2i}7X8gUb3y~w_ zdN9i7cJ(j3zbk~y>)Rj=wK&=KNh-Cgo&?sLf0?C@o7|Q36mZbsPB3&ifS)Q8PfIo&nEZMx$EZFt^&k_4A`pV%4R^!AX{{&$P z7z2I6Oeu^XL;M(0AYhEZ2{Ieww=!&ANz<&iO`AQ-9`b9KUzYcc{^M`5z%3RS(eFP4 z;Yjn4jHz--sn;WX_g;nR4_eJHr@0?sI#(-A94#c4p-e>6My79zxK>D6cHD?o)ppoj z>TIigVe1DAarAb44P-H$HFpHUhLEs-In`xqt4q)#G^#(0{olV2@h&ho*Xp3EqvZ%n zy-@_i;B|W_b-{?mVK+QMl9ZIuxhVp6i_s7Q9~e;y!+>x?jhNviP`I!tB}S(Ym9@)_ zzk4=M*|bK(NGg8QgE3GQsF~nb6k}T5kr1)=c}Bg*A0__)za?8Dfu-=ye(=&U50VTX zCS@vxzk>Vn%o}s%$+CM(n~w=~!;ou@qJS+0%Bf@2u9}s%0+bMMCaOjxS2c39rHYok zKT#{Xb&#+vxZAwNuLs*!&ub!Dkkn3UK<12G$bYh@YHBkdIyYJ8^B@|J7&fdB5^e8* zFpYeQU;p&EzV-Ef7RCm{3*GQ5or62}9X-b03>#%G3eQ z%huBbVP2ojx=w(9x~N6!y2mch<7QJ>N}bhDw%(-`T4{CpVM>tCg|`m%S9IQjR(teF z8L(GR?Asul>e`5CjgHbNln;{+9j)_fWW~?J$-hr<^*vep6+d2d4`uw2%0<;QFN4w{2|Ru%=$-|cc^&KYbGYmVwmDH7TYjP#W<~}xWzF0HUcN

ps$SSW^|6_gK}LBZzDhOcrMBDe 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

xXvA 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ʍL!cl6T77S(C;IWgti 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 M8!QuanGVAniw;V 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 z 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 z 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

c{~VPc;HE&X$d<#5*cD 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%0D=M!-!A_)v|ai^g?wh_R8aa?9#&G&jkWE$OC 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 literal 0 HcmV?d00001 diff --git a/docs/platform/ACI Highway FTP Integration Package/Canadian Frontier Ports With Province.pdf b/docs/platform/ACI Highway FTP Integration Package/Canadian Frontier Ports With Province.pdf new file mode 100644 index 0000000000000000000000000000000000000000..35682ff47840682181aafc6ab69d4ae4776ead47 GIT binary patch literal 39438 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 literal 0 HcmV?d00001 diff --git a/docs/platform/ACI Highway FTP Integration Package/Canadian Frontier Ports.docx b/docs/platform/ACI Highway FTP Integration Package/Canadian Frontier Ports.docx new file mode 100644 index 0000000000000000000000000000000000000000..db130710d279e3b82098d46429616d62783a3651 GIT binary patch literal 23404 zcmeEuWpE|En%*(fn8wV^V`d&RjhUI5nVFfHnVD%kW@ct)X13$+ySclY>`hgY%D;_N z>gqbJI;}_2qZjn5Wh6jAkpbWUNB{sp0GRb~?o0y$0M@_(03-k;u)2V?m4l&`gSLXJ zjiJ3Jjf3)zKO9Yqs3tt&BW>N9#abi7Rd0bpu%c}<6MT?v(4Q^ z;lR-Of~K$q79hTn^{eRyZMF!6Wh?}SV0rF4TtmQ=h`JYoRVD1u1a*P04_y~+zzS?b{fgaIjADt8@~<)!kZ8B~qPqCL+u zB_K1tyAm0R|4S_*OkuN*iB7OMOnu%qMC*hr;MsU3!;3|Z!j<0`p*j? z@~e<5xb2cb>&$j4VKVY;Z5wjoDu9`DJUFjPawR8CAAw>IwxI1%oQ5>dS?ePksC-yA zr~7f4=sFYF&!bCI5^d-=V;$@KFHmazmJjFGK0!993IMr(v@hOyX`B9NzFB@0-Wzib zc-ztx{9l;A z{{ebL+^RST-?yMkuua_|Pu5jv!kOg_(OhT3Q;>kvGazTUv4WM~o%#4}GOJn#cZZ|W z3+evpbDYIo;MKaS^EpfDIwG6qE|$&V5HhMm>S=z)up$#RrdHMqv|OTL|J*^4PmvH;f9QhQ_;m7@Y(h3RyU;`k5 zoUQE)X#YVJ18aRp%P$G|m+1Q^X@I`u-&gJb+NmO8T0Gi>}gUO9rPFpog}5s8HAOA}${K(ZwA zyVcz&R-iP|A`-kC+{PkveWPL{Cs8z7WBraM5BVIl9Pt%xLQ__NOw+<`>aLKfDPD9& zsUx|+xWb1v&S3bQ%iqvAby^9^s5$KAHn;fTbh+q9IrdT<)5y)f#2gO~ovI*DF!kB%mI<)gB+;rVm)MCt+=Due0ojZSJFuw~4fafbG< z=9jQpz6$^q07%;e0w8`(o4@DRf1Fuon#*>pY^a{uWzP^v8=MPPjpdaz>P~T~Vl%j$ z@?JqCDtf7ebNGfr&-ouwAGNJpgh)&jh@fKB9kjO1sBvuoxCw6OZtJek6!ihB{ixxy zQQ=d8dR-a!G14OLPK&q8*FkM?*k0REZUWT$V?%w(%z?{Z?~mQ)`Tl^&WP7uAaE%@( z8m;a1)KeOoiHVHsh>6f!U+NNAYaT`(GMYEq?5uGpZ&eyEjQVH4mV_y$#S6E!5p6}KhpwVaR*AenCS-#5?V;XGR z^9Qcg;Jmh|T6>PG(Jqin)#)IapA(X)TBVaX5rDqFv?vMO6JH?MQj z<+Su2V5#Er{Wg9gw%1!p9}QVX#QGfH^7QHEyuI`!rMZ6)_=75tA|Y*2hw8mfM)hPr z=>O?rvxv&9gjU_xX5m35jr!gXbwpvXc>Eo5hcy#8) zc{TNQ%7%n9on`uXxsmsjFUdjI)4F>lv)N_?M3(AW?IYD-cYTyU-YGY>$KYpYJRWg} z^HsNy3zBX4mfg05*kfl`?xcZf>m{!jnycM4In1Y6%je)Tl=A&RAqx8FGrQg1;-96B z;%)1v{XP*y&iw-Z@_o>?e~Z)L_%I# zkK?;35_LsF4?Xue#rLBG?$c_vlG>;K!PL3|e}r773foqh_g7{eG@4h}1-h^W}VdOmtEf z#Lqsn7VcQbE`Wc)f)A^=L;)}05awBgHnRF6)JKD#Z=It zCc}Pi%N^iet$gtE5tZXAJQn~8QTTz4k)PK(MWl}ugE2_!`l}S4yZzTQt{YsR6(sAu zf4Wo_bKa!8Q)TRTOG9G0=JoIpZF z3)&J#&hw$@4rSiGM4AI@UgB^jI8~GBjo$T9xjtYx9`xDv%tGAUFlAD|ZJcp*Qpb ze)&_`5+R`>%*?%MEP9bF3tTN-8hqXoXF%H{19Bl& zg4Kpw6X8-{cM%aIoIQd`QvJ%~Vcx6UB3dYi~ogOqm@w4V+xP@7T z5Pk9OVhPJjJ5l2wAEO_y)fA}$0?wgtI`%Nrd|CpzB7J38dh^w{%J(7nh*D_u#f%U; zXLa>KE`cs6oR1(#UQMKL4jeN<+7Q}RZXGYb4(-{bAScY?%sUaP{>sQ|*bW@`r`Syp zEx=ZdgjN-;=zb_)Iq|#7{>Y#}CRbU!0Jx8!%&bg_g6}u+B_pGXd({cP~A9zK`}kEs}veSj9TNP;6rp>lKS!e>TK3U3``us{%!8#AE}fw#FkT_`5Ts09(6!w`|%MNq1thLmJ3*};zLB@ zUMqj6RyPLSp=N<$paUm2N6k5#m*xwn#X0{aYr}Gmp|10ST4XKz3pp_^Fn>j|Si8$0 zq^I^EiLL57)$WDHjeH3Mm%4$vEpo5OXs<|{w_kIaan^`89|OD2NbciTDZ^vyIGU>LKb1Ag)lPnee9 zB58{v>rh6N$km7Ke>hHU76HX)jL9C5exPPAsYC)x(;2)id}dDWFza{bUu9=;>Xr?1tdMIX7}$%+x6 z#*pmT-dAi-C$EU{U@!pNH3e{I&2r+lw7g znk6=z=uAiUvdw}7LcPZ^qB*V zOV<5GB{*?61E{FGjuP7pE2K`fFcJiy&@#F<6-1{2C*f*EiZEb$fHKipwTewPT<7G- zC5W&QGi{u3!)C_C$jDLaWRaQZZQ6(8{^WsiA<}BTbJScts3a^~CTGpa zQT;;qVjNDe(enVMq#>&{SPNBr`%p_|aU~OOLD5X2GB`ZG$pYq_JZ2Q}QQC)QCs5+# zSUJzB%C+p{6z#%dRDN)!>Yce;uG*R}8B@F-9gz)*yGC-16#X`!yc2)_w4j5Zw|wCS z#GV_ESFnwDh6w!_E;AXvCl*W#_FcOzxWXsn1eB2>pYW;FD>H*!Ee31$Jg=&|e+@cq z$^?ENWV=a>n533LK~ftEx}=Q9pNNXU*7RhB2}3tFmrwvDy`O*-%AviG42t-*gsiVT z2>wgD5BN*)qH9B$^t^V@A=Q~ML=nnYMwAv!l7JPZ&7Ou@^iV1f4NJXim)TBQRo}5t z7f0tr7jfI7v;L;FOxFYVzbN=MFxlf$aRduN0=t@ooA(Ej`}!_>9SwB&)sX<37C= zzB0D*O+dml2;pJ~tnzU?lf7_^a!2X}8{p!3}jlvoTd13fPxR^kxO_ zz>Gqy9OD9OJrt2!$PBpRc#DbKd5N30(>HwweHf1y`tI(em&Xp+csNlD6hEEJwou5p zJ*33O&+MGd9_`!|bMAtoH&iEuS8>hBT|CEWq6?=^rB}B1rSR z3z_B1&4fBOEI+Bht`+E3Hh8s3%wD}I@bhx6x?Y|uFe>*4f5@FFGNQ4QOGfK!{zym{DP`@cRxHB1t%DTaN*Aos0Ha^ zj7i0-XG_A@tG6RO%!z;I>Reu+9)WbegIO^Gfjv59mXJnTd)Qkhmo~FAo|uNYq=c%$6u$dT z8sSZQUTc0a3KPE;9x&wd}ij1xh8+pzaQygDEhr4^3&D8ytF+pXx6~f?U@)ZnI zNTqv_@)t4beu#3(^ePhK9>8an18P9p3!mh>LViy!cp7%6%6>BC!L6}uo^U7!xtcF5 z-H_IbJbITR?|89Ws9J-Dx^yVkD3ov{CbQXe4=*#=ZVXb~Lx8d+drb1QuMGPn0}HlX z)ufgj0GdpM=(m%G9tP2@kn=ag6O$P{s6buO#MciD)r#UWhyq`;v-(Whrif2(`{q>I;a%Y32(&J_qtmkRfv^#qoPFrNE zsue1=x%5b#_gQ!Z#%SRRFzi|GFgB_}2Hb;+>m&>8IV)(lcknaN&!ZZ~|NQWGN#g5L z>?+Z|7iA}$N=6Bj+uzY3b`m{P*e=^@n=+BNO5_%8p=9U}J3E6y*GO=m`+AoHy0T4! zv#T^PlIr&BbXN=xNlgOCd9|i{OZQeb%bG^I{BBwtG~874B%zc!9Wub~PZM?#h)OqKDPYt~nze_~1i(+AMQCRs(vrBM2GE&Rs<5&)wJy)6} z)a_u85L!|YNEqyaR-neg%ok=uO0G7Rx-s@=0#k_;mwgu;Y6bGork z!5i}>nNqjlGphPQ#$RNQgx*KdBu|CtNw+6#8QH6tsCTs}^2AEGcd&|3ap4ZNBC~Z% zBj~o`+A%m3p~+-VPwIeg)Y zKS(3t)rL9OZdk*xB%WiIXpiO$Ge@fvJ9R-Q{ab92)j0S>?eb5saqyfU)LKO0r9vrc z0i{CX8_%vt`S&YxH$iFx%=MDVIV=TCuQ6Ej(O9|(T3FV?jPX2J+RHOep`jn>E*36E z4~)Jvg?Ul1iP_+S{eN;du@Rj&dU{10=phJokaih&qcp~SU*L@(be&=%SV8Ve3G*x_ zLSAuL&*_;jl3_-!--v|5h+1=Nkjw(ihL${724}!X#)3a>J5Srw4dx=|?@*jz#b8y- zVn`~MgYpR=sz9i&c_baEjF3m2f$hCkPHGa+->N=S(XDOcq z%9<=xmB;{zAKRCF4rN~X=+9B?x*$l$sV}*DV;1E{>RB9ctcX$^gNZH(DiqgqYSH(G zYTp&vLMtB?mdJOvurtqFqQz$FM(eUN`85vUjLwM0r%|C>1?MkW-sgc=yFZ;pRA+vf zmNppLZTA7@_3nk_bqFATO=G&4jI4D%lOxs5e1?rAM>3P zyu}_$n&glgwcK|gY<*ro$E#)15IpFoS~3(8#|Q-lBC(_}yv-6v8^ze8$sArH zXnB3LjxJEA;M(J28VU$Qm!q~hBe|Ha@C8q2tU6(eP6ERGi6KbbUK6&Dn##`4ipmw!p4AKuXIo(@ej-N z5PU>S3{rIuixbV>#MV^a3de+Zh?;2b++ z1w~KA*-dD5Ggd_$IO8~)GKN%E2Mcf}HMhU-QlmLL!sQ{KK{m5dqn$kS&ovCsR~_}; z%gce~csr%f(4t=kKvv-_y76av6RpdMwf9Ytu25k2{ot70 z$bd2oJ)5$N$Yi6SAJF-@<3 zXH4=!b>_~QfU26sKNlNEHl~`Cw#J4H!I~gl!xoZlenQz>C0dDH-!yzeq0h%MMs{>q zI<&Ui0}Jc#vK8J{zpc)cRRS>;BQl0szNHw`H1qK+1$sLE_96B(&i(GaQ3T#1Z*|jN z3H10g3g0Lc@Wc_=A_3Ks;De?%)l31jk&ymoCGkf*2DJ})TJ?L-eyZdQ^(hu2LT=ERWQ4sXOT-2t)y3C;8+`GhZCeVRqxb1b%TjE#-3bOP<6@-Wg2mI4J!%CWSwPigPM(!a4vKXG`HW$u>V2di`I+sjBQtHLlE9vSBz|*uOFBF> z`14Z?(>M%>emaixN+vi(?x&^%O_216&EVWQBkLb5>R(5ca%9L4fC1~m`_Q6Kae>fP z&}E$OwX>A{jSneiiTczug5|%@Q8f&4Y__@8SUc^BCvF59gMozmQfz<0Xqy*FF~uA8 z_1!)-ecHOpYv7)n&xX7p_|>a;auiii_iPXj!;E6XY(b_OD8>y}z%)GdnO9yuog zKU>)15OK^3&sE577a!83SsjL_mjl@y>d9JT3_|H~l>7f->^ZfDA<2)c?|*8sM#fY@ z@|l{CYYIG{br(LVch02-cj!8XzbWT|BNd%>czldO7c>8$E&N!yAy{S$WdiAPgZNjD z|3R-z;=e}H@M|Rh&GBz&W$^CgDm-LAO-6?S*?xY_Fn|bEyyyGb;KFc4~UV11W3l!#k8_6$rg!keN)3I=<72kF3wb8kYAzadx9p;vU9qE0zjD=W2y z4c8Q-xq69#qmzs6{-Xc+t6>k0YmOiZS!OXVd^?eHjiSSIAKWEB5DJILkzW^H=S@j1 zd+JVmT4smE_be)O$u#js%^g~OUnTr?s?53_Oj#8|!zFq{5)T{E_?iAf*9TFrf~_#{ zGNTk}yZ}RY$MJ3Hv!#QACi-EGiQf~dTeaf16@__tO*7oRzADqT zQu$!q-t)W>kNVm`#6%+^v$?_(j%!HO>+{Zq5x~_Zc2<4B)<S2|Cn0!x< z9y2PGY(P1ORw}1^^KLNl6n!T?0cq`o9R-p|onX%YxuZJLQdkhbvK+86Mc! zZ1ueuY^G=F!V4fNi;5MBEUFgu={0%OGyx{;G;8G}+B=%jnvojI>*4VOMoHo{Vfq#y zR|qIxEk)t@oa^bv)zJxs?yyzLRktAn0^-;&I$YcPxkmbCj={t{d5&$UvpSB>fiRiG znMhtNvUhAL&i%(Z%a2yiB}L<&1e8a!eCU1nZMHBPKe&N0|IB$Y2wNpe-AKk%vcx`v z)bDlf_m~gVPU_=WL{5csziZLeRR2KaYgSP%<|p!o1tHwx7Vw}5YNEb(dfua&m+rgE z$f8!Ry6ex5U=n2ZUP!vL;SWqxtZD*7=}ozW!$?~`WF=@E0|i0vVtj(Q62+i3H3|5= zphDW!{=`tU$j*72k-o(bQ;I)6{{i<>iIsY-xvia55#59t(`c#n`6NJ)t9h%3`$phO zX^AisIz!Q9U)3yWs2xSL0HdA`5E7BRW*7qs`PR^aFL4-N>9Ks>sH zm$QsHmWG0qGGb;u%T)2hZYG_y&AELubO^0S$Db}J4dwXKEwxk%Qu>g8d^y)_huAB zP-UA06^1EZFB{#EM_?Z_&MRJg0c9+$ImmK;pA*!gm%_96YQE#Bn59P{V7Hem1Xzn2*`>lnCehVDdjepR_=bb%IU`_SJ4~`|>4fN@n zuoS>+E-0`SlXA`b)-0MUFFbRaiVFjG1m(kWRA1t>MwGv!FciV|Zv@DhG+lDsFN>9S zG*rkujc5qnEgtyJc$CiyFWW0NFnmMCbb9&8i8wmovY4naGH5>3>q5wmQG{xcfQtKW zAS9Q!KfiZ#rywk!YzfYu?2Yy~ zc5y|VmVIsUofvKu{@G{W=1!V<7G>4)NFG0OnY(3$^QPq1&gTf@7=jGLDdMvXjAp`LOyG~i%$NPozWOf+hswH~EeVRQ=h z=-B#yLPsg+tZQpmYMJz`1dSZY=|+AJ^Q&EG*y}io!XxENySK>R`7FWWNr^I!H- zQe)*#(pQk6%vTqo{Ii!FObjgzY5%_dy(pfkN?Wh8Aa}tpIpaH6>ytTQLO6yk)uvNR zV)a=CTS~vMp?29)>ZdKT`GKKTIR68nX0Z4k&EkB(TZbP z3ajKH{{FoC`iYBITE2KO_zmYf0fqF6*1O%f0P(f!&-j}2b=(KqN>@?J4A7M8fQC+r z*p0@>$IbSzMMXh9KOIlPMcdWz1o6e>qyqR}6|DmbF&(Qhp$L?YFdGVlC&;4#3)5C5 zbd-j1KgN1FVo1h;-QW<8kumbihQK&_3lBch zf1-o-e%~PU%5@8_mZxSnH`qEtRU3z=sMRzzR9Sm1w^{Jn)L6KL*(lIeK4Mi;se^ff z=$PRyp5C{0y75f{YA*eYl#&?6g}o~`hE0=xKGeN)^vq7}lxe zfg9jq**`U|nCaUucVor$vmRbWP8c<}pKQSn?I<5!y;D`r2ZgidgiP=0z*XX`TpG{8 z45ieci$7uhSv14&2=X%_&y%P}zZIkoYee7N&4UNP8mLTzmYRwWECrKa?6?q5zlo>FM+gqQz@L7)G4^88qx#Va%jpM}Hwbo{j4y9>dq#y?SJnGvwB zNZa*(HaUow&zt3SdoztT@1i>J`O-_)_4ek)ftRnU?16^ImS+bbMNRJ(LFc(dtI2onqfHzVRovP@YfH1_P? zYhShjtCnyYuQ+b(gp^M9ACc z$V1IxPi4E#Pmf{Egh^xShWZs~L*+-JBn*bN zLisF}Ud8h4W$HD4Z%!h81z(%kDPU+H0CsA9+~|{V1)c0DxP1`hs4K|G_`xS)Sv{{| zg~$qnI;Wj zSY0)SbT-6ye614eu=Xda!^ECpoOUI^i&D9ym|&z96c_G^~m6#1N_6#HfdrrcR4 z3&h9q#2_gn`Tm0L?9|=^tzgBH;<;Nr*QWbu*iooz`utEma7tp6pHk98HAN45vzmJC z0h5;1L60xmA#+f79)bAwZ-`^wnorqn##cjr>k@(A@QoJT2L>mzIjUNqm8GIP7L>lGdUUQ4lX!Zq^B{nF*N>M`rHB_hzpAe1Au^l z06Je8@VN>Q06;@PKtg~+LqbBrKtsd8p(DV-!ouO8pdz9Z;gJv%;t>*%QnAvKQZP{v z5Yq9{GqH2>@bHk(2#N`CiL!F@aQ^itK+rHSaIkRL2ng7mp$|HtX`4*(GoU;u;& z0z?P^Mg#&u1p4d)-~j+YU|+5MtHJ+00Re-6f`LOoLP5iPRcJ&200V)50E2>nfq{M* zs6d`y&jFx_VBZPo`M{B6bs-3Ckr{krb0LZNYr9e8rmu(@_3Zqhpi$A#F)&F;$;c@v znV4Bv+1NP*1cih}M8(AA6%>_}RaDjV4GfKpO-#+~9UPsUU0mJ#0|JABLqfyi;u8{+ zl2cOC^70D`i;7E1%j)VI8k?G1THAVh`}zk4hlWRHX6NP?7MGS+ws&^-_74t^j!&*{ zZtw0N9-p3H{=x+W0Qm>3e?#^^;X?ev1q=!b0t)dLE+Am%uL6Py3PwN={+&-2Lf00F zkii!cnLjqSwi}9wQSJ&w&u$tTm6&OpeL%*gY6pedmK3|Gl{f7dWyi9goDwjmM-j}*aBxJP`@znnegvne{bW4&ZnS7%2> zHA>nJQi2RR#@fUQZv9gb{VIM4iyt-4+rsPe2?#ynRnue@Z=Bht0FJx(@~Sv<1<$A4 zn4N=IQHe$hEw!wTUkqd_G-~QgP5)TAm2Zz)KpZ&amd?Qudr>C$qIR)~8wM{XCi+mP zPDg$@@Mmnvt7no%JjNwzVmwx^U88)z$7b+UxS^8rf&Q!A|EZLzS(TfX3;k%aLsKy{ z$w(yn#u4S!fSk8tNsZ_fMxGOs7e)^F*X5u?yIf-+<|s}5e9rNk&+dmx|C{vv8TUs5 z8YKI$5O#KShc-{4g9ms1FS$+cWLLZ3%dG3tJDkbwQ%!GwrlE#&ROV3N3y_>D#=aGj zB43tJU5gG^JH}>bixSdKEMb6YEzq)=(qXK&ay4b? zR)=K--Tf!vH0-hj1mMCc9^N-~`VjWuOkPn((z+CX_`2m-<;9CH^y)u95PO z32Er^e%`+98@UdOkMqe7KT2BIKatnc{fsfJ1vdCRJ|$$&&;X(9s@7aH)N7YP(Wcsl zHoe*n^!@6`hp6D~5N*kUqmOx>;bLt?t>yDHo*#YnE^;fZ7_cS$ zU8#ia211c22!JvGzzG>>^7wp(wzClQd9#%|C>}pIW!Y1HzuKC&`PG82#RA^Vg!^-ZC2w2F5jRv7k-W-ez?&vc z5pVq`pecs0`Qp%dJlZPpY$28y)kXj_P;^&O5eEPQ>_gu{wd4IHn$sG#GhN|`g~3%` zuEf5y9>U#yQ2NIE35anj`~>JybQLO2`ACOtkSLZwumCCZCVrc%!JS zy9w7^1f*YC){D5BcssMxd7cZ>-LRw*Dd`;*tld?4l9d;`Vv{|0spSP463o>&dTpCo zF0s>d6CO40=QmczY5k8)Vmp z{*odFb2i#iZfnPsrBSn%CbcoC5T3xomx^VL>=Ic#xYFO_oAq0XN5frNSyJ=V9y2Nv zy!3`Fuibg!jQl|PWocn!AIKVjEg42=7U>`unn<4IhS_S;cU;ugO;_i%Hw%T zU8nzE-T4WK3aaAJRM0wlXyi_Tab%x;31x{scI>Lahv~8Lzox za-_`{e@qUw;YJD}E8?<`xny_SnkU^oreM30@T{Kz2T*E*37?4a@j@lKVQh; z6X|6Qa-Zhp`OrCP!%vpDR0}VBcbTDP6USwNu)jn{FPQP*=E>gaG**do*`O8_s$+(* zvqWdFd?5z`8Q{Uo?o0c{;&eL*BjSj?UjXWde8cwjCjpM~|CQ1Pl-*C_FV4I&k-hcQ6e`3p2hv#)M^ zH^p`*!OXIppf`hz)D9MLh9hZPpJqv!JAh(N1{^$l`}yq6xXiqo%M$jEUO3jrnL>7$ zyPR^e7nfpYyvKB9K7($ObG$KU&2D4QO|M;?g4y0p@lcEzOZ8Fg!Y(QQuw>GmXVIJ3MF_H>V=dXeAMgQd8MbFw0o1bStq z?5ysWp2};ko8b=O4bxe>8uO9&r!`R%D3!0GMWsPxk%-OJ` z&LyOkg<9#bVrZtG?Qx2Cx*KJ~#ZME@Jd^fiDr$mjTursLG0_%xRYhSQB|U7V{lqg) zE61EDOr0FmWKux`5V11^J~J!_JbUwP~yp7}JIq{-&_NYNw&4Hf(8(>v2r@z872rK-}zCDlb@BT2_J#qN6Udgau*SV-CF}aiAaVM0^f%swtdWX71FUtXTsE zcx@Kl+I_#`@D#yqsivIv&@D4POQIkSNdapDR6O17w70{m^}GOXPB`ZCTDn~~J+xAY zzrpuGBe7pA5Z{}fUcd2fWp1jejZFQDSryYI{%zBUFGPX=9E+I9Vqn`Z76Pb| z1AG`XefFwiH2xlMpf%IZ%L)JLvc?T+zM z_)B?dY*#m8?>QY@XCDLpApf2t!#LvUm;!5~U|@{6J(iVrL}?eSWBFEv_!DFA6Yx?3 z{I}x%-xXl?YMf;u`|WF62DGRN!_+^g^%q?q9DN@sV;ZI_3;uYS#@J~|nS>W&1Xw8) zA2*)>S*>^`*){&Fk=)%_@w%)4T*zwfnuW_ZdXEj%M2`WVg9R}xa8a>m(fdJxyHex) zfKnbU(dB1G)Xjk@^|Ag@q9|wv1d(l}st(y5Zl`5}Stj@XMkS@VV_kN9?6;hS&i4_R z!q(sQDh6DxtwThc$g7tjs4GHQtIlEjLp{W<5Zt9WH&RLo`04D?*u5_D=XuM-Vsq?C zv~7p&`eoU&r)jlU2RJ-u(p(#Sc71wUPVgGe<*ZIOl3VKGk)qGZ-$iH7yin}yeb#7xmR@eQ@_$pJhO3A(eRWNUEbXa<{7J+cow^WX-3Q4X+@|M6Rsg_sj>`HZzm^f3!BoLZ11q4+yIu@uGNIDo4mc zvckpERH^$G`Yk;ky$P~;)Dr(dWNX>}3YY4LY}m2P+zZ~TC!r}i z6SuCtGea?#1P^w3Z8DTbg9P)7iHu#-G^RGxtCiCqt^^ z$w@q3!Cw4_OU|Vi4#Ufi!eQ`P_IOErfF}CvMdo%PfPL|=4ol4fTbf_53kIt`ok3!g zO%%1J%~Y;dYW)$@YspEcW1t+jQH-p zBOBDz#a)8gC_0|1^@leq^QJi_YG&1Hh$D<+y!D!GZ|*%rNtG!V<_p(v!=~h7v+L@0 zG?+Twr;O6KK*?yiEJ~yW%gx3+wodVj$39UcsfGl#r0#eK9XzeWW3{w`M>LidrBDn8 zj)WdE5=9#^UY|-FXZdTP-U5UtyOR}S^pO%9o^(d3sklo?<2XDxGc@J+Z`^%DMCf-| z(ZGpO&8l`3re0yExA^mi$%>0iOPcn?&f$|&(R)D5#l+1o!I5B%ekiEj5x2V`%@lyw zCU}sQc=4;GdhS;<%)~J#;)`XR+D$@W*XNKwWJN!j7nhdQj+=TmW(cr#;@p$SN{Mfz zTZ>|QwGkm-YZfIu_mZwe%&oBzs+M+T%DBta$ji9?{A)w|e`SFGKm8r#bNPQfobF26 zzs3ButzPyOJ@Iex5%z`-4yIPde+Rl`D6U4$(jjA*k~F z3C&zk+can&PpUS~=re$shQ3CA%}Cw7b}_m+I43gh4mA-dB=32mga#or3oTtj+m3!+ zx4;1(AoN9y_e0)JO}RS1A4RiXSwk@I9s|WE_(cVW7vWD zsm;uGvLz%nskzga+HAgi#6G&+Ryp_7JlGX*h@FtcOb^a5s_Ly7RdU4;^d2siJ*lo{ zS}-XsShcxpI4ypP>aN`q3yXGs(|ALq*Xqf4|sR>QQ#=5kupG_YYW z-HG5ChfPK!p#Evb#HYRYAm8y)0u(neXdI6txg@#OCSXT#$jLbnw|hWnA9a&J$~%&L zrEvM-9w9?tgj9>BY19($0dI`7Rct~2SKIhTHL0f(t7(R1k;jJ6s3S+|gHMT$B zydC#=#q7KTX!?)PSp!PHbDEV4QhPch2wc-4!b#25*5ngq&XNe9$NhS~ju~Vy=PG)F zd#>ucUUy0^ZA5g0JqmeTD(ML$Ze2D#3yAqcsH5Sm?zs}I8Hb)Txa0SdwM4+=Ju!6S z$8&SqDNY`*iK{}VS$XUWG2Ne!KWwAm+>~e3`?#!wWp`S@FSk&R$WNzYoZZhUIV{a| za-pMB)Zg8;)dk1A5+)kP&5I;horZDbpjW>AD)ZC`h`4}faq2YJ4UY9XVwvZ`Xerp$ zIc%}=H*;pJ!9|_O(e|6KL9dT#=M%7M(Gmm`ZMtYMQJQ9OO5cj^86auHL*RpKdS^b55$$1%WQe8*;yJ zah{xpnzY{Jr6xKI7M+n9KzclC7Fa~ArS+%#o!#QxtX#d(B9-Q9yCuYciu9;jaPjKg z^>OoX%`~1x6w85+FC`rx+CEe_f85P?LfbbZ;T=zf*xTOvD@hAHdidQpV^TodBj&@6 zV&_c9#)XYTRB+D_kVVs@cyciFWkKN@ey{j`9L@x0nH-zceAlz&32_28^ND}3!7(Ct zpRz{$tp5?fTV;?@II&xr{G#gu6XqW}N|!WzubL4=(}Ad!mRXqFe7ny-zVbXE%_yTZ(o(74fc?&3sIi{Mjp|M{#F(zL(J_{%)!Oc}APtA@( z{h5(e9`K>%*g^tpuyT5vL8`=aFT%haC!&t7rM6ZbeeM6Po$G#wYg@xww5TBn(FY+! zFVT%|GRk2>$k7F1Mj1p&QKA$5C}V;|^h7tJM2{#D5nXUZ5G{K2akrf0lDWC}FSzr| zer7-OzTdakthM*I*YmxvUfn>mL2zY}7u^lrq4KC4fxdaH?bWyEE=*#+k{a13)%YRT zXWT1S`)G6}gv^w_RBvG>1kd%XXfsuS>j#^ROUbBt0SENnB;aZMCG(WsqTk+yRt6lx-J1)|p zE^8;!+_<<|WC#jElV`obz^3`|+5#7uM@x7&@*I5R=Y88(-7wAV zcnjC@FDQ@ea1!S6DlWW}&*AM;sbSP4WOEoExwWRwwpN2n83FH^>D)&`facs zT!}cRKTK6H2qhpNlY3@*Yk?QP5L2VwSdh=WrC4?~$%eibF{(TZQZC73U+2Z!Qk@{m zy#EG;*N?6nQ`zHoAz(nUP~?t&hT=8zr^oCOzu|Quph2-njLkHN3oNkdIAUGL2z}^| zW5i422QQ;#*Lf|c=ygGfB@_d+C3~DM1o}zi^ zOTLs3o&WHrrN1+fz!W`|^b*LWdykRN1xQ&1w$7VbQg6s*gw*1(EM+xn7W)is1X8hl zQz}w@RpU6{$X|nuchs_GD*;)QzHD+WfKCu`NGULJpn&ksh+*xClqg}{2_pKcpn}g( zWh=j2wY-oyQWIyAq!J1rx)Kp{*#v2P(%hx9t)<7An)Fix$$bxSXB|N@A5%wW;*1bU zzYY8<3`+fTIK1MeXWv8u=Yp3r1&&8!f}gekxO9dw6&^uVPokpZA$=Gyk_u!YV@J)= z&GiTckOr!M9}zhpOwgw01d*VWG?Q*+2MVt>hlJ4fIKo@Xg~vi48F?)96bi@)78HU$ zT_?QYsy_`9utfZQN0gDwLoEE;7$+P6id(*0gVu&VyV;8TV|MfQ|1C~Q{*J1(W!cBJ~wOuzf8d|h4O18-GU50y9=&%qgo zDb-@5pmV!0Z=@WVaC0)O;H7ZPZFrg_`OLcC2I@o7V~nRCUC6>#Pe1D#F?x;4XZq_^ z8TI|z0*(rJmJXabZU4HA97?^0mJ+)mdi{lemD0gjnwQV&XUEc2ELiQmJ@we2*vo

3vLR*j|0iP*pQ-~T z9$k_>(#P>7^qi`MOT4@kbtN>O{>s`A|HBz0QS;RPA_YM|wFY;oeKYqiT>zhL7WZHL2xTeGi?K!+wP^aJe`bcmPz_q8{ACMfZNMwwWbcIZ8 z=7{OAQX&SzWX+5nC?~&Q^Z%R*DPE>ilYEi+oZPrd1IowS)T#O+d9Ig*8hXf7Xd)b! z3(L6sN>nL;>ii-4UklVWL_h^Z|Fg!qV`pu6>Qy4DrwK4D zqjZ?({mk)($$z8A%?Ls4&8LpXQ z(&HAS%0Vt$iKuCxNBEO6cR?UzZPh)`z(R~^CZwDEfvJz$WkEv*sytKGzP&{rcCy!_ zZ$_*ml)SC4k~6Bi*{onIV}36WnAlQA{|#K|81Ujm1Gp6dMl$;DF0M#nD_7U!USz=5 z>;Dc#z$8dFY(k8QP}EZoD>1#2*7+#7NTAUcYyHK_jIb5{F6|m$v#oY)f9A+gOc{&u zh;M;jObpTPrdG=qGB=WNFSF=IQh7&(V6WELrE;^R?JZ1XVHv4GiiU%eD~wGvap+*0 zWY~MLS2H*(lYzIW^IjC9!z9*kNi9WxR6nQk6LslXV_F+D73aR$N z5;^rcWTw~6Cu{{iYLdDc9J=>KOC*$8E>~R*E8g+GQG?(%OYjR==)wBgH5($9(w0X1 zMq<2}LFs^q*+yd0#rjpShI@?hz=3#4lz(xLBab@BW|x|$p0X;s?N1k#IA**qh`;m5 zle_BzY`gR(Y|VG<;u9}h5^}-Km+D;i83SGC0@+0)t#5+C^05L7-Y909&)w0 zhIJ8kI^3h}XE%kz7#h?XZAS{^NsAwb+x{uQ63FJn_++j!BF)zj5$2bYJY(`UA<_u) zcb!OF5V1~r;UeF|+P@|kCTZll+P*Op=clFvn@8CBnkqEitX7Mr8u1a;_KPa%`J3kQ z@_gm>N(I%EvYd``1E1XEER_EW6k;Wps^~Lp0kY|EDgIzo!&crhYqarzYrMZ@wRru8 zWNP0K`}^>x5T*xQ*x!0AZE3Q}K!H`^1N5uXo?aC;F79^!Ulzc6`0JA?m?7iK z5rhKBCVougU7N1TepB!xP0jJW+p`A(&c56#AK6KUT%L)W4R?Kw?$mzNZujLwjOT4) zE^?K5$D+ux$MW*mAx5`AJZ@=ipu(~!-Q2|3?JNBQhgWvymC;WRLxKL!tM&UTb$FeM zYg_jGr<=)6UbU}>Ve>u$bI=HQNSzXHAv}z%tewA4!ivOk#3vD&;1%Q1J7ISlqUrj; z2CA^(zFPC5FN93fG!SgKe2AdSq}xS(vntcFQQkkY(@Xgh-XUkdVlme{%w=K+6G634 zK(rxa(Gp|vbwz(E@q+N*b%*dfscBOYyg6Lj$JBb6-k9cWIwa0{0jk`7D*+7{0*hCd zMT;;M7JcZRE*#6LDgZGm2~9d$-Ayy}O_0q>X?IZ-V&S+~^)24{xhLxNjVpL1CeN)E z-)3``zpBYbGv|~poH2A?wq-%gDxT)sMLP+DDcoVb^!Vy)E6=TpEMB5bSeZqMu06ezu2az%VlPm7I{2FNY1}TD z5p_gep7qUCBpNwejv)7nsHb0&bnd0V3}lc{K5HAINW1^3aS3RE|EDCuClCV4kKdc= z{#<@PkH4|j)rb5_@T+y_PvG(K1MuiSW#owq{MFC!G;kZ3ng7e(5SIzpx$cC^nCv$` zcDQg{CF2P^1ZYqEp2#n{MqE6ue(nUX&-nv?T1|%w$5m~ez%OwBfS=NI;G%JrASY-- zKqPi*6i;z{*M;B`;ff_ri1;u4Ai|YS{6q2I+f+{|*021a_>ZPl+%#}E+fO)L!9O@o zZ@uHfarY5V;QhePBF?TNE*Q5!KLJ$nWRR=p>9JiKRmczC!qFfRJn>fkgQ w=$tu0|Ev{o;kY;U69OgJkMwT=PTBvy&Fe$X01NH7Jg31s3$)fkjE}$l3w^_GcmMzZ literal 0 HcmV?d00001 diff --git a/docs/platform/ACI Highway FTP Integration Package/Canadian Frontier Ports.pdf b/docs/platform/ACI Highway FTP Integration Package/Canadian Frontier Ports.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3a2ae105453db77db557e8d5e7cfa1469283f3d3 GIT binary patch literal 44266 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

{g)MVO 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 z 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%0D4|odr#gW}ppGmI+Mu7{j+@sm{rINmRZ1hSB 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

Vh?tAW)lPX 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ξDF}dJ7Pv7Ypsk7z1FfcUuY+16ZvK2~jav`?r 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

T~q4;`OAT}aOQA(w1FZN|aIv!Nah(yRExGkq%* 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 ?-6VetzLthZ3$kw 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�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≷F_n}B7xH`UKhZuDrceZ3-X`} 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 z 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 + + wyrt + 000017455 + + + 201207202336 + + ACCEPTED + + + + 4073T001920 + + 201207202336 + + 4073T001920 + ACCEPTED + + + + + 201207202336 + + ACCEPTED WITH ERRORS + + V67 + Cargo, Conv Expected Arrival Date/Time/Time Zone Insufficient review time + + + + + 201207202336 + + ACCEPTED WITH ERRORS + + V67 + Cargo, Conv Expected Arrival Date/Time/Time Zone Insufficient review time + + + + + 201207202336 + + ACCEPTED + + + + 4073T001920 + + 201207202336 + + 4073T001920 + ACCEPTED + + + + + 201207202336 + + ACCEPTED WITH ERRORS + + V67 + Cargo, Conv Expected Arrival Date/Time/Time Zone Insufficient review time + + + + + 201207202336 + + ACCEPTED WITH ERRORS + + V67 + Cargo, Conv Expected Arrival Date/Time/Time Zone Insufficient review time + + + + + 201207202336 + + ACCEPTED + + + + 4073T001920 + + 201207202336 + + 4073T001920 + ACCEPTED + + + + + 201207202336 + + ACCEPTED WITH ERRORS + + V67 + Cargo, Conv Expected Arrival Date/Time/Time Zone Insufficient review time + + + + + 201207202336 + + ACCEPTED WITH ERRORS + + V67 + Cargo, Conv Expected Arrival Date/Time/Time Zone Insufficient review time + + + + + 201207202336 + + ACCEPTED + + + + 4073T001920 + + 201207202336 + + 4073T001920 + ACCEPTED + + + + + 201207202336 + + ACCEPTED WITH ERRORS + + V67 + Cargo, Conv Expected Arrival Date/Time/Time Zone Insufficient review time + + + + + 201207202336 + + ACCEPTED WITH ERRORS + + V67 + Cargo, Conv Expected Arrival Date/Time/Time Zone Insufficient review time + + + + 4073PARS114317 + + 201207202336 + + ACCEPTED + + + + + 201207202336 + + 4073T001920 + ACCEPTED + + + + 4073PARS114317 + + 201207202336 + + ACCEPTED WITH ERRORS + + V67 + Cargo, Conv Expected Arrival Date/Time/Time Zone Insufficient review time + + + + 4073T001920 + + 201207202336 + + ACCEPTED WITH ERRORS + + V67 + Cargo, Conv Expected Arrival Date/Time/Time Zone Insufficient review time + + + + 4073PARS114317 + + 201207202336 + + ACCEPTED + + + + + 201207202336 + + 4073T001920 + ACCEPTED + + + + 4073PARS114317 + + 201207202336 + + ACCEPTED WITH ERRORS + + V67 + Cargo, Conv Expected Arrival Date/Time/Time Zone Insufficient review time + + + + 4073T001920 + + 201207202336 + + ACCEPTED WITH ERRORS + + V67 + Cargo, Conv Expected Arrival Date/Time/Time Zone Insufficient review time + + + + 4073PARS114317 + + 201207202336 + + ACCEPTED + + + + + 201207202336 + + 4073T001920 + ACCEPTED + + + + 4073PARS114317 + + 201207202336 + + ACCEPTED WITH ERRORS + + V67 + Cargo, Conv Expected Arrival Date/Time/Time Zone Insufficient review time + + + + 4073T001920 + + 201207202336 + + ACCEPTED WITH ERRORS + + V67 + Cargo, Conv Expected Arrival Date/Time/Time Zone Insufficient review time + + + + 4073PARS114317 + + 201207202336 + + ACCEPTED + + + + + 201207202336 + + 4073T001920 + ACCEPTED + + + + 4073PARS114317 + + 201207202336 + + ACCEPTED WITH ERRORS + + V67 + Cargo, Conv Expected Arrival Date/Time/Time Zone Insufficient review time + + + + 4073T001920 + + 201207202336 + + ACCEPTED WITH ERRORS + + V67 + Cargo, Conv Expected Arrival Date/Time/Time Zone Insufficient review time + + + + 4073T001920 + + diff --git a/docs/platform/ACI Highway FTP Integration Package/response/aci_highway_external_response.xsd b/docs/platform/ACI Highway FTP Integration Package/response/aci_highway_external_response.xsd new file mode 100644 index 0000000..e05c74f --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/response/aci_highway_external_response.xsd @@ -0,0 +1,536 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/platform/ACI Highway FTP Integration Package/response/aci_highway_external_response.xsd.bak b/docs/platform/ACI Highway FTP Integration Package/response/aci_highway_external_response.xsd.bak new file mode 100644 index 0000000..e05c74f --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/response/aci_highway_external_response.xsd.bak @@ -0,0 +1,536 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/platform/ACI Highway FTP Integration Package/response/aci_highway_external_response_fields_explained.doc b/docs/platform/ACI Highway FTP Integration Package/response/aci_highway_external_response_fields_explained.doc new file mode 100644 index 0000000000000000000000000000000000000000..54e7b57291fcd1e12b5df5352a88331f367b5f07 GIT binary patch literal 742912 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

IX`k3cu!0E(b~39>%_@nElFGC;F{rkYVk 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 literal 0 HcmV?d00001 diff --git a/docs/platform/ACI Highway FTP Integration Package/response/samples/Cargo release notification.xml b/docs/platform/ACI Highway FTP Integration Package/response/samples/Cargo release notification.xml new file mode 100644 index 0000000..3293bc1 --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/response/samples/Cargo release notification.xml @@ -0,0 +1,13 @@ + + + abcd + abcd001 + + 1ABC0123456789 + 463 + 1234567890 + 201001021234 + 4 + 0009 + + diff --git a/docs/platform/ACI Highway FTP Integration Package/response/samples/Conveyance arrival notification.xml b/docs/platform/ACI Highway FTP Integration Package/response/samples/Conveyance arrival notification.xml new file mode 100644 index 0000000..2228952 --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/response/samples/Conveyance arrival notification.xml @@ -0,0 +1,12 @@ + + + abcd + abcd001 + 0123456789 + + 1ABC012345 + 201001021234 + 0009 + ABCD0123456789 + + diff --git a/docs/platform/ACI Highway FTP Integration Package/response/samples/Fail_File1.xml b/docs/platform/ACI Highway FTP Integration Package/response/samples/Fail_File1.xml new file mode 100644 index 0000000..f2f33d2 --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/response/samples/Fail_File1.xml @@ -0,0 +1,16 @@ + + + abcd + abcd001 + 0123456789 + + 1ABC012345 + + 201001021234 + + + 201013405555 + Invalid date time of arrival. + + + diff --git a/docs/platform/ACI Highway FTP Integration Package/response/samples/Generic sample.xml b/docs/platform/ACI Highway FTP Integration Package/response/samples/Generic sample.xml new file mode 100644 index 0000000..dfcb0c1 --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/response/samples/Generic sample.xml @@ -0,0 +1,155 @@ + + + abcd + abcd001 + 0123456789 + + 1ABC012345 + + text + + text + + text + text + text + + + text + text + text + + + text + text + text + + + + text + + text + + text + + text + text + text + + + text + text + text + + + text + text + text + + + + text + + text + + text + + text + text + text + + + text + text + text + + + text + text + text + + + + text + + text + + text + + text + text + text + + + text + text + text + + + text + text + text + + + + text + + text + + text + + text + text + text + + + text + text + text + + + text + text + text + + + + text + + text + + text + + text + text + text + + + text + text + text + + + text + text + text + + + + text + text + text + text + text + text + + + text + text + text + text + text + text + text + + diff --git a/docs/platform/ACI Highway FTP Integration Package/response/samples/Negative acknowledgement - Document contains error and not processed by CBSA.xml b/docs/platform/ACI Highway FTP Integration Package/response/samples/Negative acknowledgement - Document contains error and not processed by CBSA.xml new file mode 100644 index 0000000..8588455 --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/response/samples/Negative acknowledgement - Document contains error and not processed by CBSA.xml @@ -0,0 +1,16 @@ + + + abcd + abcd001 + 0123456789 + + 1AB2012345 + + 201001021234 + + + 201013405555 + Invalid date time of arrival. + + + diff --git a/docs/platform/ACI Highway FTP Integration Package/response/samples/Negative response - Report rejected by CBSA.xml b/docs/platform/ACI Highway FTP Integration Package/response/samples/Negative response - Report rejected by CBSA.xml new file mode 100644 index 0000000..e1e1b49 --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/response/samples/Negative response - Report rejected by CBSA.xml @@ -0,0 +1,14 @@ + + + abcd + abcd001 + 0123456789 + + ABCD012345 + REJECTED + + 022 + Cargo - Weight Type Code - Is mandatory + + + diff --git a/docs/platform/ACI Highway FTP Integration Package/response/samples/Positive acknowledgement - Document submitted successfully to CBSA for processing.xml b/docs/platform/ACI Highway FTP Integration Package/response/samples/Positive acknowledgement - Document submitted successfully to CBSA for processing.xml new file mode 100644 index 0000000..d42bebd --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/response/samples/Positive acknowledgement - Document submitted successfully to CBSA for processing.xml @@ -0,0 +1,12 @@ + + + abcd + abcd001 + 0123456789 + + 1AB2012345 + + 201001021234 + + + diff --git a/docs/platform/ACI Highway FTP Integration Package/response/samples/Positive response - Report accepted by CBSA.xml b/docs/platform/ACI Highway FTP Integration Package/response/samples/Positive response - Report accepted by CBSA.xml new file mode 100644 index 0000000..09eaf33 --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/response/samples/Positive response - Report accepted by CBSA.xml @@ -0,0 +1,10 @@ + + + abcd + abcd001 + 0123456789 + + 1ABC012345 + ACCEPTED + + diff --git a/docs/platform/ACI Highway FTP Integration Package/response/samples/Success_File1.xml b/docs/platform/ACI Highway FTP Integration Package/response/samples/Success_File1.xml new file mode 100644 index 0000000..fc50e0a --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/response/samples/Success_File1.xml @@ -0,0 +1,12 @@ + + + abcd + abcd001 + 0123456789 + + 1ABC012345 + + 201001021234 + + + diff --git a/docs/platform/ACI Highway FTP Integration Package/response/samples/TRIP_ARRIVAL_1234L001170_20120218010815275.xml b/docs/platform/ACI Highway FTP Integration Package/response/samples/TRIP_ARRIVAL_1234L001170_20120218010815275.xml new file mode 100644 index 0000000..413acda --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/response/samples/TRIP_ARRIVAL_1234L001170_20120218010815275.xml @@ -0,0 +1,14 @@ + + + abcd + 000000035 + + 1234L001170 + 20120213 + 0453 + 12340011703 + Arrived + 200 + Truck arrived at the border + + diff --git a/docs/platform/ACI Highway FTP Integration Package/submission/aci_highway_external_submit_fields_explained_v2.doc b/docs/platform/ACI Highway FTP Integration Package/submission/aci_highway_external_submit_fields_explained_v2.doc new file mode 100644 index 0000000000000000000000000000000000000000..0456be0fc8a903796893d3c18d9f7b8f0a3f63b4 GIT binary patch literal 858112 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𗋽A3Z*xe)C6e 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%0Aag2e>MDdb3!AbaboOG8d4B}$k;&83 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

yzCg$qvzL}CLY*h2;O7o~tdDzO>gGa#d13 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 M7EKrb3v1wi0HYo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/platform/ACI Highway FTP Integration Package/submission/samples/CSA.xml b/docs/platform/ACI Highway FTP Integration Package/submission/samples/CSA.xml new file mode 100644 index 0000000..c0e4faf --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/submission/samples/CSA.xml @@ -0,0 +1,55 @@ + + + iilt + iilt001 + 2012130635411 + + CSA + 4552 + TESTCARGOS210 + ORIGINAL + 0427 + 201112131620 + CS + + J + SC + New York + US + NY + + FALSE + + IC + Contact Name + TE + 999 999 9999 + + + SHIPPER + Allied Trucking Head Office +

123 Main Street
+ Graceville + US + 90210 + FL + + + CONSIGNEE + 999999999RM9999 + CSA +
304 15 Innovation Boulevard
+ Toronto + CA + L4B0B1 + ON +
+ + 15 + Skids of Grain + 150 + L + SKD + + + diff --git a/docs/platform/ACI Highway FTP Integration Package/submission/samples/Cargo_01.xml b/docs/platform/ACI Highway FTP Integration Package/submission/samples/Cargo_01.xml new file mode 100644 index 0000000..4dedcba --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/submission/samples/Cargo_01.xml @@ -0,0 +1,60 @@ + + + iilt + iilt001 + 2012073135409 + + REGULAR + 1111 + CL10900 + ORIGINAL + 0205 + 201112131620 + CS + + J + SC + New York + US + NY + + FALSE + + IC + Contact Name + TE + 999 999 9999 + + + SHIPPER + Allied Trucking Head Office +
123 Main Street
+ Graceville + US + 90210 + FL + + IC + Jones Kristin + TE + 555 555 5555 + +
+ + CONSIGNEE + CRIMSON +
100 York Blvd
+ Richmond Hill + CA + L4B1J8 + ON +
+ + 15 + Skids of Grain + 150 + L + PCS + +
+
diff --git a/docs/platform/ACI Highway FTP Integration Package/submission/samples/Complete_Manifest_01.xml b/docs/platform/ACI Highway FTP Integration Package/submission/samples/Complete_Manifest_01.xml new file mode 100644 index 0000000..1b57d7d --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/submission/samples/Complete_Manifest_01.xml @@ -0,0 +1,97 @@ + + + iilt + iilt001 + 2012241630173 + + 1111 + CL01 + ORIGINAL + 0427 + 201112250520 + CS + + EJ + Cliff + Barnes + CA + 19810101 + + ACW + 123456789 + CA + 20141231 + + + + TV + c100 + FALSE + SDE136 + US + DC + + + TL + t105 + 987EEE + CA + SK + + + + REGULAR + 1111 + CL012014 + t105 + ORIGINAL + 0427 + 201112211720 + CS + + J + SC + New York + US + NY + + FALSE + + IC + Contact Name + TE + 999 999 9999 + + + SHIPPER + Allied Trucking Head Office +
123 Main Street
+ Graceville + US + 90210 + FL + + IC + Jones Kristin + TE + 555 555 5555 + +
+ + CONSIGNEE + CRIMSON +
100 York Blvd
+ Richmond Hill + CA + L4B1J8 + ON +
+ + 1000 + Bags of Grain + 1000 + L + BAG + +
+
diff --git a/docs/platform/ACI Highway FTP Integration Package/submission/samples/IN-BOND.xml b/docs/platform/ACI Highway FTP Integration Package/submission/samples/IN-BOND.xml new file mode 100644 index 0000000..df6114c --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/submission/samples/IN-BOND.xml @@ -0,0 +1,68 @@ + + + iilt + iilt001 + 2012130635409 + + IN-BOND + IILT + TESTCARGOS005 + ORIGINAL + 0427 + 201112131620 + CS + + J + SC + New York + US + NY + + + 4 + CD + 0453 + CA + ON + 2955 + + FALSE + + IC + Contact Name + TE + 999 999 9999 + + + SHIPPER + Allied Trucking Head Office +
123 Main Street
+ Graceville + US + 90210 + FL + + IC + Jones Kristin + TE + 555 555 5555 + +
+ + CONSIGNEE + CRIMSON +
100 York Blvd
+ Richmond Hill + CA + L4B1J8 + ON +
+ + 15 + Skids of Grain + 150 + L + SKD + +
+
diff --git a/docs/platform/ACI Highway FTP Integration Package/submission/samples/Individual_Conveyance_01.xml b/docs/platform/ACI Highway FTP Integration Package/submission/samples/Individual_Conveyance_01.xml new file mode 100644 index 0000000..b4ad967 --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/submission/samples/Individual_Conveyance_01.xml @@ -0,0 +1,36 @@ + + + iilt + iilt001 + 2012241630173 + + 1111 + CL02 + ORIGINAL + 0427 + 201112250520 + CS + + EJ + + FST + 41234567890123 + + + + TV + c100 + FALSE + SDE136 + US + DC + + + TL + t105 + 987EEE + CA + SK + + + diff --git a/docs/platform/ACI Highway FTP Integration Package/submission/samples/REGULAR.xml b/docs/platform/ACI Highway FTP Integration Package/submission/samples/REGULAR.xml new file mode 100644 index 0000000..30824dd --- /dev/null +++ b/docs/platform/ACI Highway FTP Integration Package/submission/samples/REGULAR.xml @@ -0,0 +1,60 @@ + + + iilt + iilt001 + 2012130635409 + + REGULAR + IILT + TESTCARGOS004 + ORIGINAL + 0427 + 201112131620 + CS + + J + SC + New York + US + NY + + FALSE + + IC + Contact Name + TE + 999 999 9999 + + + SHIPPER + Allied Trucking Head Office +
123 Main Street
+ Graceville + US + 90210 + FL + + IC + Jones Kristin + TE + 555 555 5555 + +
+ + CONSIGNEE + CRIMSON +
100 York Blvd
+ Richmond Hill + CA + L4B1J8 + ON +
+ + 15 + Skids of Grain + 150 + L + SKD + +
+
diff --git a/docs/platform/EEtMi3-X4AAt43v.png b/docs/platform/EEtMi3-X4AAt43v.png new file mode 100644 index 0000000000000000000000000000000000000000..057dcfdb374c7383b433a0ad5bc28683bee1b0bc GIT binary patch literal 742994 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�{>v!eKj++bK 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

QQhoB;YxJ2LZ_uruzR`lW>vjE& z*J<&}#Y)RfQ_=KdO@xmdXrH26Z~KfscGVRDfj?|a4XyQRXm3zkSG%5l;T1jgblib-lW|49Cg&Ts;9ACs}?QSy5(!Nc|+9{uh47qs)hKAmSKt*xao3(zOxlHfm5woo0^?AKxUs{kLm&E7ni_TxKP&&br~p6#{~8OP|SD!=0OVqBb={GG!?E> zx?NMUSc825NC=)sg~jo#uXo;q>k8)&AV?;UpoZ_fPgr;Wtg!)Pu8c%q(-1d*jlqSKEx!OAv(h0 zZPI|q1f)@4*F$D^c@F=_1_xZj5byMz%ryF1BA6NrMuSow#!sOfG&sbR76RoV=K+Ss zn*ndCt=A8K@>Bi!vB%VA2sqM=L5~@R$mlpV);4SJTYJq(9M=B5htyczYSCPhs_lEv z;Dma|Y>}HGi!z6nW}ByPh+*JWs%@w>gWIlvnI@k;QtkAHCer^_$9M&JC#zxs*R*EXs0{6+P3cKeC3m}=?FveRSMZ?b*npk0hMy9w3R zl{$FnpbqXo;C1$W`#(@+ZJk=18!QSb*7nP`>KFIks~wkZcMw`soar60pStnmTEBX^ zF59$5cYWEAdGG{k7 zsFwO_9ooBFy{(N(iVZd6KB7%)S7_VT4Sw7M17?uAnNx_^W`gq{5!7vJX|$VTMlH-1 z!uX(O&z)(Y>ODR9$N!(IuYiy1ys|%HW|k~QOJ=5+?bvA?a2OiiQc_5^O`A4_ZM)m; zHieWMPD2f|D;Gn!zRv2MhFeJ z0M3`bbS0uKH?Zl~MtxC6;)iKuC4!c)&bhkL$yFTQ-w9Vjj?!lq4|2m<6?^;2=B zV)d%EcD|~2Q0QJX9I;W6*sy*b`ssoB(byb4bpq-0@(>yu!*#BN7eQ4a)#LQZGu))bXl`k<=?IOjZRW+v2n_f4S(mQn0?X5sN9j@ykrB~W z*P@i6A``mLV%t}(j-m@KTniEHY7-_T#Nn>H?!e10zC`$x_Qo#_IFLE5e-Rrd>n##Us7{&ER7f)HwV?#_26c}2*J}H0*cm#b^@|t zi@XSMd+~e40jMrg86N8@qw$=-coCxFV(fg*7o6icP0;xnr{fZ0+;b_(8MvB`$b0X9 zgvyFq^U~dT&AYy|3uzfy_{Wn^n<9yxlgPd9G5dg;^*4EI{pZFoeJUOX*YCt8jf8Y%_ff@lQ% zc`d#~z0(9~vEkv!N=r9hy$AyTjMOwlg@zNnhGOH!_1L}pTHJX3b=bCX6GjL^ak4a2UG^&Y(dGoM1cfOSy zsIEDJ20~q}YL*Egh*Te|y50r8HL|dma-!PX#I#g+&LkIBI zJ8$Bh58lT|pMHYZ-hCGz?f(?Tr5YzFg+EJ>Q-XrRQZ%=ATEtj;vAT{9Z&@Y3KLNFM zO(>*nsjFC1cS=ex;G=z?a9^E4Wql)#ojQlQ+E!dFsYC~lQC3!tqLNaybaYZi>Gks- z`g3o1Q4ZWGpA!TPszp}mNxM?zU7dVyH`)lSi~hUCI!zv_`@?HEN=h z5jn3$bcy;z$5E+@2<+8JqTe+RPLapHLF$O4csf4;IDG5~jjo%qK!gQGLex4s7jHUl z0RqK}AQRkL`kDGp`%1*i7NMSUXj=4;%~DOdcuWN%712}ELQanA;(crmxC8iRjb%V{ zvSqP#e-!eztd1gy0*O}ps7R70G*(gIMxao2(n^oEb~Ky43e<3gDLG@KHiKI=z^XGB z7?eXKUd3^qr+9o-+p08afNCiDUEcgorEzr~0;L+m8RX-SnQ=M6;*<-pa~l!$2wzh( zgaDATR|0aHl;K34w9*<|=T6X7iy!~wM|knY7Y!H*^cgLaHKn*&n*HFxgLwY==PkOY zx;;68x_1!-w<;H?tFJ)^peEt+S8#(ah0`* zfkRG;x@I-ASU^r-RkhV>s1$gMjdAJ+Wm`lzuCfvVRoxF4uvfZU>n=O1aeF$Ro+ASz z1c>d%R-*K85T750Y>IJz> z?$za0HvC+EK@S%oI(ZHvVx!U4++r=_1MNL%u4zVjVFfgy$jhBxpj!ysMt#uJF@}*D zKlIOdBO)mqOV@73iq)GiFgU`6>N2VaoviASI_uQK0FS^=d0m9;g2JS^9lNj z=n2K4wyF_DMO8>jSpbiKSbTCkAAf!3Iph5bqCqOA7jp4z5mI6kpnV#b5{9qbe-9Qe zNvGk*(=JuGsyXYW3Q1jpdIYi>csg*u!(bPNfxiP*Ab3)%=Oe1pPJ-O>%e(0Bs75Nz47 z8Dad6F-#D6H`>r`j|nQ9Ss%2}@E4ybK(Jo~6<-K9ygICsuwcm&?7s0D+gby_aiDL77Gci>CPc{{$kv7=U4IkKc2IFoLCt z;V}b_-UI?oz3u24?MFR<`AGuOE4FXP2XDQNciwmpS;;Awpi_}WPdtFYqnZZPP3>s2 z1bkt!h>uIgAp$^w(U_D(%o0TOPYod;n(|CVp@@P9-&lj2buBtV+L{Jdo}Vm{n!L#RAg zjk>Z140MekI3SE5E|Eq}oO1M7X(+Yhb&Z-(v0(W^%qsj(MXlM`o_uXcB?E)~NQjK1 zb8`>np%*W{{4T;nBMA;?5EmYaUE6o!si&T^h>D+IkdZhmiuS-aziJ+HWkns8rx&s^ zm-Fut=pe|8ii;-ToQtsN5Cnz>S;wk6=0u4g`i8`$Io7GSg6E{a zZgv*(=H?lX*W!hF$fGl{oJw?jQ0cyY0!@I3S{cO4XX*C4wsX* z6jQ(IJEy5M1(@D>>s@^O;XbqwbhS5ka!oJdLU|3wXpqGLrpS81`Lj5C^c392XaFLU z3H&c|-Nulbmy6k8AGFf39aI;1WGIHGhPgLu@%Dia@$yIS;PnFsu9ev&C8t6x- zsBq|HwDk<2hd^H4ks6;jGB9ANY7wX_Rx6IWQAK6>Z)kFW@;^=4_P6<`GBTpm@+I)_ zpkWdHjQC)u_`QQe1boNs~DEi<`GmkEwA*(H$$N;3FnFp3Y4K9gs50Qz!4CQn^!>#W50h z?uX&&QOu~zRGp*V?nd6-$bHa69b41dz_koSR%#+b#68MyR}Go~lp1zs2-YHeMW#=u zdsI|xUe*XBK&!4|fe+C&SrkywD5dq)eN0`aD1VRiF!zu;lvN`)HmZpK#OK_2qN)); zYbfP5J1YaN)RS^F1WtPUG$t~@X;|Pjds6p`-lptgsWmoC)837a4O*06lYr*tWY}DC z1tP{q99}|A>C*A#9Awh5oS!$>GAAOhc4iz85gfKar3dOBkBN^qK&xpW%`Gjw&*L`B zyM+K!Svb{4M@C1Q%;;RSXJmIqX}dgUy-c>m0W9ZM<6}Kkz$X`i>n7HVtFE~kS6ule zB&Mdq=3y%B%QY7_sHODHfsg~^lov=Ev<_nURZ3siq13Rbkwl5)>E#D?$j{RA)%Zl= zEjLB!x#z{>sPwU)pXxyU4G8-AD01y%jjRHd?tlB!pN%#Dj@xfX9F>p|^x_5cal^IO zAfBGGYEar58Zpe9P*>ZC@(VSnu53bH&Qi=w2qllBwy_I`Pn<<(?+Cth)o$#%>UxM< zP8Y7ojD@XZ#y?+p4Tp{#r-2(lcXyxF6=~S`06|z2g+ktukbg@{EBa^z zW9Xd|ouKSOHHwPM3@j{PxgKW;K=V(ZM@nLnrKHL)7U1ad{WKm8n06y5YiUI9&=?jh zUIlL&by1ioB`!|HvI~VMEXYR^L1kEgqjbd+_V9z>MO0Wc9{bf}IDIVN>ctl3Ew&Vo z>aG?pUS7c4EGJ9_{@3aA3Kc;MWtA`b^{fbKd$)FH8k8Q zShZ%2bw~Z*W533IU%d}MeDo0mkxN!CwR$;`ZeBwfc!mI4Tx((UeAQU;{Bti@4QORm z70OD>kUKXAncO&o{RHPURtFD$g6f8996fc+9ElYKJJ;;K9_4a08rv{GcfO@s>or5>M>nO@lZuUGX z4R=&m)mv0c#OG?<@!>hDNkr+D@Q5gk4343jU|jNc;|;fB$JTB5&98oi&pth1b!XOS zK?5m%#AZ4Vd5ae!kD%L=9%et4kEjJo$}Xa{rNbH^X2!XlX>>*hM&a#7Fxaoz)~f$- zM|s5s`F^|y!)9zWPEQI{v`pfrY9J7oq731+^>(*osIM1`7A(T$TXx{s(K8U=o>C1X zLnHXvkAH@;l2XcVi5Unfae0c@-*6r38*0tNR^(aDJbHS`@J&0N$8%`>Hg8yuZJRb* zO7lDSe-r=t(06dtjW^(1U;jG3K{?vKc>|K;V{rM__5A%F0`D!@arqW(-m<}|{d03V z{Um#_l#dL0#gpSQZ0_cX%X?OoMo}k4awO{l0i8Wv$UlG1(sd0D^(Z`d-aLFw4Cw6Z zu~djVt-0bMF_Di#JL1V!Njxn^zLN3E3A87kmfUWcMEBGf-qc%BZ^9K>a$;8%bC1CF0RZInq$ z0ZMnOj&%jW?}Q>lyoX+4!RVu2YNJkRql~&!x%ZEZqDc*71HBla!!b&EQPgi#Q7G=6 zZjr)EN2pG0j8A@coJLFYy0x!76iJ}*PNxAkRr$p!%#4scSFu zbF@+RJ~Lh(iijvjD(WLeKtyaiWi?ygG_ukQGPu$WJ>2W6QB$;1ks_5)C=#cd(cln= z(^567isBf@ALTEEpf+=E8udOM@)k{vqQmDCgkb*=>SGN8m@(QLZ*gT(M#VX*T1D~Q zI(@o&DBIMTtO{QOZ zO%yCTp2|OTd_@N(8)}xTsH#L^aRCB?{cJA1K&k4c{k)yDygEV!mP9|J4p2q7N4Pf1 z@=0zrkt8V4*Gd5dTwL{ciUvlA(I6nuz=EiyBtH(nodZ~O@04oPXFjj_^;EQK#>$sM z!vZbksR&eV?mUFkanM?*=DL@AcUD0M6^Z)ci`N)?0)#4TyjSjweJ0Th&QVs&zwME0&!twZiSBPWIOJa;XI@w;*kmJaX*w4 zSD@-*JvT!L7dr&yr!U}KzNQO!A~RzN7bh4;juzql_dcbeXrvG>BPd#cj`l8_pPNdg zulgWy_H85>+Od6`72?Ol#No(+&(KIi^W~dwz}n@@QBDKY+tH3+|Kh*x_rsrjLeJOD zxDGKif!@|`xbvPboxc#i9V6kmn{L)CMRZSds!)_g86Q zk#X$BtGOjK7_Yznsxv~6pA!k{-aQ{-`O@XaI)8z(ker#0qKjpgic-z!&a19KNqGrA z*!v#(hk9`J)mK~CKR7tty3X9WsVK@+z63v1fU0j%O^(&2c!*%u!}!EhAK2F2Y19&; zl~4hCB*8_CfES&aSl*B0r%u{tG=)omt!`RT37k25+DZ!K-Kj}OuL*#trcO>v6kk(4 zlcHUkCpkPUlHov8GHcgtAP`?^5wl0W|3ica2XPmU5j>Vr8GE5?uoG4FmAH)H_Np6h zface#b9uOb7;TMQJA(ACwl3boKm<`iO{$T_O+385Ru?rv<))(bzWzb;ew8XxeT`Cc zs?Q1y5MP>?jR%wBlXB5Rgw&e&q7n>Ea?!ALZFccWDsA`9JMWlM3<(c2g4?`>3y_hW zfg{HbTXAp`_hJy&SY4?hzW(r~VH%{f)mGhvU=KfJ#w8+_pw&z1K1~Usvi4TdI`3gm zQxm2JXz;m*S`>xp>_FkkQ#f<{2=`Gb)V1dB<%Z_=Ce$_8bDx)?qOsWk(ijzJA;H

&5KS|XLG`2&ma!aH9S)7kFqQX38tTfLYNH^T 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

0SCy?W>bP3l*sVAj`C2LYp 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/platform/INCA/aztec_cheatsheet.pdf b/docs/platform/INCA/aztec_cheatsheet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..23a35eda7a2eef2673b10f25e2615b336a2bbe66 GIT binary patch literal 139330 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

5<`S3YcWoCDp@yFh|GxIwwa*quB+kpuOk3 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 z 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 L5;~@SoaMg&#<)M; literal 0 HcmV?d00001 diff --git a/docs/platform/MethodID_Parity_Contract_Registry.xlsx b/docs/platform/MethodID_Parity_Contract_Registry.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ac7cd29d0ca80fcf5a16bbbba2bc5d4a21a48270 GIT binary patch literal 27130 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�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 JBkp3p{U7srAwmEE literal 0 HcmV?d00001 diff --git a/docs/platform/billoflading.svg b/docs/platform/billoflading.svg new file mode 100644 index 0000000..eb587c8 --- /dev/null +++ b/docs/platform/billoflading.svg @@ -0,0 +1,83 @@ + + +system + + + +BusinessDayConvention + +<<enumeration>> +BusinessDayConvention + +FOLLOWING +FRN +MODFOLLOWING +PRECEDING +MODPRECEDING +NEAREST +NONE +NotApplicable + + + +DayType + +<<enumeration>> +DayType + +days_after_days +day_release_days +day_release_date_i +day_release_date_ii +days_days_prior_to_release_date +days_timely_days +days_days_after_timely_statement + + + +GoverningLaw + +<<enumeration>> +GoverningLaw + +AsSpecifiedInMasterAgreement +GBEN +JP +USCA +USDE +USIL +USNY +RelatedMasterAgreement +EU + + + +bill + +bill + + + + + + + +_Component + +_Component + ++ id : string + ++ destroy() ++ error(e : object) ++ init(document : object) ++ require(id : string) : _Component + + + +bill->_Component + + + + + \ No newline at end of file diff --git a/docs/platform/corporate-docs b/docs/platform/corporate-docs new file mode 160000 index 0000000..3af3a14 --- /dev/null +++ b/docs/platform/corporate-docs @@ -0,0 +1 @@ +Subproject commit 3af3a1449ad4d34e3d55cf30f47929e271db1b73 diff --git a/docs/platform/drewry.yaml b/docs/platform/drewry.yaml new file mode 100644 index 0000000..702a312 --- /dev/null +++ b/docs/platform/drewry.yaml @@ -0,0 +1,793 @@ +--- +openapi: 3.0.0 +info: + title: Drewry Benchmark Freight Index API + description: + version: 1.0.0 +paths: + "/oauth/token/": + post: + tags: + - Authentication + summary: Create An Access Token + description: |- + Get a new access_token. Access tokens are the thing that applications use to make + API requests. Access tokens must be kept confidential in storage. + + ### Getting an Access Token + + * Method: POST + * Body + * `grant_type` (required) = "client_credentials". + * `scope` (optional) + * Headers + * `Authorization`: The "Basic" HTTP authentication scheme is defined in RFC 7617, + which transmits credentials as `client_id:client_secret` pairs, encoded using + base64 . + + A successful response will contain these keys: `access_token`, `token_type`, + `expires_in` (duration of time in seconds the access token is granted for) and + `refresh_token`. + + ### Refreshing an Expired Access Token + + With the `refresh_token`, as the access token will expire, you’ll be able to get a + new one having to specify the scope variable. + + * Method: POST + * Body + * `grant_type` (required) = "refresh_token". + * Headers + * `Authorization`: The "Basic" HTTP authentication scheme is defined in RFC 7617, + which transmits credentials as client_id/client_secret pairs, encoded using + base64 (`client_id:client_secret`). + + If you do not get back a new refresh token, then it means your existing refresh + token will continue to work when the new access token expires. + operationId: create_an_access_token_oauth_token__post + parameters: + - required: false + schema: + title: Authorization + type: string + name: authorization + in: header + requestBody: + content: + application/x-www-form-urlencoded: + schema: + "$ref": "#/components/schemas/Body_create_an_access_token_oauth_token__post" + required: true + responses: + '201': + description: Successful Response + content: + application/json: + schema: + "$ref": "#/components/schemas/Token" + '422': + description: Validation Error + content: + application/json: + schema: + "$ref": "#/components/schemas/HTTPValidationError" + "/v1.0/me/": + get: + tags: + - Authentication + summary: Me + description: Return information about user + operationId: me_v1_0_me__get + responses: + '200': + description: Successful Response + content: + application/json: + schema: + "$ref": "#/components/schemas/AccountDetailResponse" + security: + - OAuth2ClientCredentialsBearer: [] + "/health/": + get: + tags: + - Utilities + summary: Health + description: Use this to check if the API is alive. No authentication needed. + operationId: health_health__get + responses: + '200': + description: Successful Response + content: + application/json: + schema: + "$ref": "#/components/schemas/Health" + "/v1.0/contracts/": + get: + tags: + - Contracts & Price Releases + summary: Read Contracts + description: |- + This endpoint returns all the Drewry contracts you can access according to your + current subscription. + + Please refer to our Methodology and Specifications Guide for more details. + operationId: read_contracts_v1_0_contracts__get + responses: + '200': + description: Successful Response + content: + application/json: + schema: + "$ref": "#/components/schemas/ContractListResponse" + security: + - OAuth2ClientCredentialsBearer: + - read-drewry-freight-prices + "/v1.0/contracts/{contract_ticker_symbol}/": + get: + tags: + - Contracts & Price Releases + summary: Read Contract + description: |- + This endpoint returns the Drewry contracts if, according to your current + subscription, you can access it. + + Please refer to our Methodology and Specifications Guide for more details. + operationId: read_contract_v1_0_contracts__contract_ticker_symbol___get + parameters: + - required: true + schema: + title: Contract Ticker Symbol + type: string + name: contract_ticker_symbol + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + "$ref": "#/components/schemas/ContractDetailResponse" + '422': + description: Validation Error + content: + application/json: + schema: + "$ref": "#/components/schemas/HTTPValidationError" + security: + - OAuth2ClientCredentialsBearer: + - read-drewry-freight-prices + "/v1.0/contracts/{contract_ticker_symbol}/price-releases/": + get: + tags: + - Contracts & Price Releases + summary: Read Price Releases + description: |- + For a specific contract, this endpoint returns all the Price Releases you can + access according to your current subscription. + + Drewry releases (publishes) prices several times per week, which is called + Price Release. Please read our Methodology and Specifications Guide for more details. + + ### Data Revision Policy + + Drewry will on occasion publish corrections to price assessments after the + publication date. These errors may arise from clerical mistakes or miscalculation + errors amongst other reasons. Any changes or revisions will take place + within two working days following the closing of the submission window. Drewry + will send a notification of any changes to its previous assessments via email to all + users with an explanation as to why a correction was implemented. + operationId: read_price_releases_v1_0_contracts__contract_ticker_symbol__price_releases__get + parameters: + - required: true + schema: + title: Contract Ticker Symbol + type: string + name: contract_ticker_symbol + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + "$ref": "#/components/schemas/PriceReleaseListResponse" + '422': + description: Validation Error + content: + application/json: + schema: + "$ref": "#/components/schemas/HTTPValidationError" + security: + - OAuth2ClientCredentialsBearer: + - read-drewry-freight-prices + "/v1.0/contracts/{contract_ticker_symbol}/price-releases/first/": + get: + tags: + - Contracts & Price Releases + summary: Read First Price Release + description: |- + For a specific contract, this endpoint returns the first Price Releases if, + according to your current subscription, you can access it. + + Drewry releases (publishes) prices several times per week, which is called + Price Release. Please read our Methodology and Specifications Guide for more details. + + ### Data Revision Policy + + Drewry will on occasion publish corrections to price assessments after the + publication date. These errors may arise from clerical mistakes or miscalculation + errors amongst other reasons. Any changes or revisions will take place + within two working days following the closing of the submission window. Drewry + will send a notification of any changes to its previous assessments via email to all + users with an explanation as to why a correction was implemented. + operationId: read_first_price_release_v1_0_contracts__contract_ticker_symbol__price_releases_first__get + parameters: + - required: true + schema: + title: Contract Ticker Symbol + type: string + name: contract_ticker_symbol + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + "$ref": "#/components/schemas/PriceReleaseDetailResponse" + '422': + description: Validation Error + content: + application/json: + schema: + "$ref": "#/components/schemas/HTTPValidationError" + security: + - OAuth2ClientCredentialsBearer: + - read-drewry-freight-prices + "/v1.0/contracts/{contract_ticker_symbol}/price-releases/latest/": + get: + tags: + - Contracts & Price Releases + summary: Read Latest Price Release + description: |- + For a specific contract, this endpoint returns the latest Price Releases if, + according to your current subscription, you can access it. + + Drewry releases (publishes) prices several times per week, which is called + Price Release. Please read our Methodology and Specifications Guide for more details. + + ### Data Revision Policy + + Drewry will on occasion publish corrections to price assessments after the + publication date. These errors may arise from clerical mistakes or miscalculation + errors amongst other reasons. Any changes or revisions will take place + within two working days following the closing of the submission window. Drewry + will send a notification of any changes to its previous assessments via email to all + users with an explanation as to why a correction was implemented. + operationId: read_latest_price_release_v1_0_contracts__contract_ticker_symbol__price_releases_latest__get + parameters: + - required: true + schema: + title: Contract Ticker Symbol + type: string + name: contract_ticker_symbol + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + "$ref": "#/components/schemas/PriceReleaseDetailResponse" + '422': + description: Validation Error + content: + application/json: + schema: + "$ref": "#/components/schemas/HTTPValidationError" + security: + - OAuth2ClientCredentialsBearer: + - read-drewry-freight-prices +components: + schemas: + Account: + title: Account + required: + - client_id + - is_active + - organisation_uuid + - organisation_type + - default_vertical + - products + type: object + properties: + client_id: + title: Client Id + type: string + format: uuid + is_active: + title: Is Active + type: boolean + organisation_uuid: + title: Organisation Uuid + type: string + format: uuid + organisation_type: + title: Organisation Type + type: string + default_vertical: + title: Default Vertical + enum: + - drewry-freight + type: string + products: + title: Products + type: object + additionalProperties: + "$ref": "#/components/schemas/AccountProduct" + AccountDetailResponse: + title: AccountDetailResponse + required: + - errors + - data + type: object + properties: + errors: + title: Errors + type: array + items: + "$ref": "#/components/schemas/Error" + data: + "$ref": "#/components/schemas/Account" + AccountProduct: + title: AccountProduct + required: + - status + type: object + properties: + status: + title: Status + type: string + AssessedPrice: + title: AssessedPrice + required: + - value + - unit + type: object + properties: + value: + title: Value + type: number + unit: + title: Unit + enum: + - usdPerDay + - usdPerMMBtu + type: string + AssessmentWindow: + title: AssessmentWindow + required: + - weekday + - openingTime + - closingTime + type: object + properties: + weekday: + title: Weekday + enum: + - monday + - tuesday + - wednesday + - thursday + - friday + type: string + openingTime: + title: Openingtime + type: string + closingTime: + title: Closingtime + type: string + timezone: + title: Timezone + type: string + default: GMT + Assessors: + title: Assessors + type: object + properties: + Drewry: + title: Drewry + type: integer + Body_create_an_access_token_oauth_token__post: + title: Body_create_an_access_token_oauth_token__post + required: + - grant_type + type: object + properties: + grant_type: + title: Grant Type + pattern: client_credentials|refresh_token + type: string + scope: + title: Scope + type: string + default: '' + client_id: + title: Client Id + type: string + client_secret: + title: Client Secret + type: string + refresh_token: + title: Refresh Token + type: string + Contract: + title: Contract + required: + - id + - product + - tickerSymbol + - fullName + - type + - assessmentFrequency + - contractAssumptions + - lastUpdatedAt + type: object + properties: + id: + title: Id + type: string + product: + title: Product + enum: + - drewry-freight + type: string + tickerSymbol: + title: Tickersymbol + type: string + fullName: + title: Fullname + type: string + type: + title: Type + enum: + - spot + - front-month + - forward + type: string + assessmentFrequency: + title: Assessmentfrequency + type: array + items: + "$ref": "#/components/schemas/AssessmentWindow" + contractAssumptions: + "$ref": "#/components/schemas/DrewryFreightContractAssumptions" + lastUpdatedAt: + title: Lastupdatedat + type: string + format: date-time + latestPriceRelease: + "$ref": "#/components/schemas/PriceReleaseReference" + nextPriceRelease: + "$ref": "#/components/schemas/PriceReleaseReference" + firstPriceRelease: + "$ref": "#/components/schemas/PriceReleaseReference" + ContractDetailResponse: + title: ContractDetailResponse + required: + - errors + - data + type: object + properties: + errors: + title: Errors + type: array + items: + "$ref": "#/components/schemas/Error" + data: + "$ref": "#/components/schemas/Contract" + ContractListResponse: + title: ContractListResponse + required: + - errors + - data + type: object + properties: + errors: + title: Errors + type: array + items: + "$ref": "#/components/schemas/Error" + data: + title: Data + type: array + items: + "$ref": "#/components/schemas/Contract" + DataPoint: + title: DataPoint + required: + - index + - deliveryPeriod + - derivedPrices + type: object + properties: + index: + title: Index + type: integer + deliveryPeriod: + "$ref": "#/components/schemas/DeliveryPeriod" + yourAssessedPrice: + "$ref": "#/components/schemas/AssessedPrice" + derivedPrices: + title: Derivedprices + type: object + additionalProperties: + type: object + additionalProperties: + anyOf: + - type: string + - type: integer + DataRevision: + title: DataRevision + required: + - revisionNumber + - revisionPublishedAt + - dataPoints + type: object + properties: + revisionNumber: + title: Revisionnumber + type: integer + revisionPublishedAt: + title: Revisionpublishedat + type: string + format: date-time + numberOfAssessors: + "$ref": "#/components/schemas/Assessors" + dataPoints: + title: Datapoints + type: array + items: + "$ref": "#/components/schemas/DataPoint" + DeliveryPeriod: + title: DeliveryPeriod + required: + - type + - startAt + - endAt + - name + type: object + properties: + type: + title: Type + enum: + - days + - month + - months + type: string + startAt: + title: Startat + type: string + format: date + endAt: + title: Endat + type: string + format: date + name: + title: Name + type: string + Error: + title: Error + required: + - code + - detail + type: object + properties: + code: + title: Code + type: string + detail: + title: Detail + type: string + HTTPValidationError: + title: HTTPValidationError + type: object + properties: + detail: + title: Detail + type: array + items: + "$ref": "#/components/schemas/ValidationError" + Health: + title: Health + required: + - status + - serverDateTime + type: object + properties: + status: + title: Status + enum: + - ok + - Error + type: string + serverDateTime: + title: Serverdatetime + type: string + format: date-time + DrewryFreightContractAssumptions: + title: DrewryFreightContractAssumptions + required: + - vesselSizeInM3 + - duration + - basin + - deliveryPeriod + - currency + - uom + - contractSize + type: object + properties: + vesselSizeInM3: + title: Vesselsizeinm3 + type: integer + duration: + title: Duration + type: integer + basin: + title: Basin + enum: + - pacific + - atlantic + type: string + deliveryPeriod: + title: Deliveryperiod + type: string + currency: + title: Currency + enum: + - USD + type: string + uom: + title: Uom + enum: + - usd/day + type: string + contractSize: + title: Contractsize + type: integer + PriceRelease: + title: PriceRelease + required: + - id + - contractId + - releaseDate + - publishedAt + - assessmentWindowClosedAt + - assessmentWindowOpenedAt + - data + type: object + properties: + id: + title: Id + type: integer + contractId: + title: Contractid + type: string + releaseDate: + title: Releasedate + type: string + format: date + previousPriceRelease: + "$ref": "#/components/schemas/PriceReleaseReference" + nextPriceRelease: + "$ref": "#/components/schemas/PriceReleaseReference" + publishedAt: + title: Publishedat + type: string + format: date-time + assessmentWindowClosedAt: + title: Assessmentwindowclosedat + type: string + format: date-time + assessmentWindowOpenedAt: + title: Assessmentwindowopenedat + type: string + format: date-time + data: + title: Data + type: array + items: + "$ref": "#/components/schemas/DataRevision" + PriceReleaseDetailResponse: + title: PriceReleaseDetailResponse + required: + - errors + - data + type: object + properties: + errors: + title: Errors + type: array + items: + "$ref": "#/components/schemas/Error" + data: + "$ref": "#/components/schemas/PriceRelease" + PriceReleaseListResponse: + title: PriceReleaseListResponse + required: + - errors + - data + type: object + properties: + errors: + title: Errors + type: array + items: + "$ref": "#/components/schemas/Error" + data: + title: Data + type: array + items: + "$ref": "#/components/schemas/PriceRelease" + PriceReleaseReference: + title: PriceReleaseReference + required: + - id + - releaseDate + type: object + properties: + id: + title: Id + type: integer + releaseDate: + title: Releasedate + type: string + format: date + Token: + title: Token + required: + - access_token + - token_type + - expires_in + type: object + properties: + access_token: + title: Access Token + type: string + refresh_token: + title: Refresh Token + type: string + token_type: + title: Token Type + type: string + expires_in: + title: Expires In + type: integer + ValidationError: + title: ValidationError + required: + - loc + - msg + - type + type: object + properties: + loc: + title: Location + type: array + items: + type: string + msg: + title: Message + type: string + type: + title: Error Type + type: string + securitySchemes: + OAuth2ClientCredentialsBearer: + type: oauth2 + flows: + clientCredentials: + scopes: + read-drewry-freight-prices: Access information about Drewry Drewry Freight + contracts and price releases + tokenUrl: "/oauth/token" diff --git a/docs/platform/esb-freight-trust.yaml b/docs/platform/esb-freight-trust.yaml new file mode 100644 index 0000000..01d0de3 --- /dev/null +++ b/docs/platform/esb-freight-trust.yaml @@ -0,0 +1,3213 @@ +openapi: 3.0.1 +info: + title: Freight Trust Interface OpenAPI + version: 1.0.0 + contact: {} +servers: + - url: 'https://api.freighttrust.com/interface/$oas' +paths: + /certificates: + get: + summary: Return certificates + description: >- + Returns records from the certificates entity that match the specified + query parameters. All records will be returned when no parameters are + specified. + tags: + - certificates + operationId: getAllcertificates + parameters: + - name: $select + in: query + schema: + type: string + description: >- + A comma-separated list of properties to include in the results. When + this field is left empty, all properties will be returned. + - name: $orderby + in: query + schema: + type: string + description: >- + Order the results by this property in ascending or descending + order. Example for ascending: 'Name ASC' Example for descending: + 'Name DESC' + - name: $top + in: query + schema: + type: integer + description: The number of results to return. + - name: $skip + in: query + schema: + type: integer + description: This is the offset of results to skip when returning results. + - name: $count + in: query + schema: + type: boolean + description: >- + When set, the results will return a count of results and not the + actual results. + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: certificates response + content: + application/json: + schema: + type: object + properties: + value: + type: array + items: + $ref: '#/components/schemas/certificates' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + post: + summary: Create certificates + description: Creates a new certificates object with the specified parameters. + tags: + - certificates + operationId: createcertificates + requestBody: + description: The certificates entity to post + content: + application/json: + schema: + $ref: '#/components/schemas/certificates' + required: true + responses: + '201': + description: certificates created + content: + application/json: + schema: + $ref: '#/components/schemas/certificates' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /certificates/$count: + get: + summary: Return count of certificates + description: >- + Returns count of records from the certificates entity that match the + specified query parameters. All count will be returned when no + parameters are specified. + tags: + - certificates + operationId: getcertificatesCount + parameters: + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: The count + content: + text/plain; charset=utf-8: + schema: + type: string + format: int32 + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + '/certificates(''{Name}'')': + get: + summary: Return a single certificates + description: Returns a single certificates object using the specified key. + tags: + - certificates + operationId: getcertificates + parameters: + - name: Name + in: path + description: The key Name + required: true + schema: + type: string + - name: $select + in: query + schema: + type: string + description: Select structural property + responses: + '200': + description: certificates response + content: + application/json: + schema: + $ref: '#/components/schemas/certificates' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + delete: + summary: Delete certificates + description: Deletes the specified certificates object. + tags: + - certificates + operationId: deletecertificates + parameters: + - name: Name + in: path + description: The key Name + required: true + schema: + type: string + responses: + '204': + description: certificates deleted + content: {} + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + '/certificates(''{Name}'')/{propertyName}/$value': + get: + summary: Return specified property value of specified certificates + description: >- + Returns property value of certificates object using the specified key + and property name. + tags: + - certificates + operationId: getcertificatesProperty + parameters: + - name: Name + in: path + description: The key Name + required: true + schema: + type: string + - name: propertyName + in: path + schema: + type: string + description: The property name + required: true + responses: + '200': + description: The property value + content: + text/plain; charset=utf-8: + schema: + type: string + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + /connectors: + get: + summary: Return connectors + description: >- + Returns records from the connectors entity that match the specified + query parameters. All records will be returned when no parameters are + specified. + tags: + - connectors + operationId: getAllconnectors + parameters: + - name: $select + in: query + schema: + type: string + description: >- + A comma-separated list of properties to include in the results. When + this field is left empty, all properties will be returned. + - name: $orderby + in: query + schema: + type: string + description: >- + Order the results by this property in ascending or descending + order. Example for ascending: 'Name ASC' Example for descending: + 'Name DESC' + - name: $top + in: query + schema: + type: integer + description: The number of results to return. + - name: $skip + in: query + schema: + type: integer + description: This is the offset of results to skip when returning results. + - name: $count + in: query + schema: + type: boolean + description: >- + When set, the results will return a count of results and not the + actual results. + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: connectors response + content: + application/json: + schema: + type: object + properties: + value: + type: array + items: + $ref: '#/components/schemas/connectors' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + post: + summary: Create connectors + description: Creates a new connectors object with the specified parameters. + tags: + - connectors + operationId: createconnectors + requestBody: + description: The connectors entity to post + content: + application/json: + schema: + $ref: '#/components/schemas/connectors' + required: true + responses: + '201': + description: connectors created + content: + application/json: + schema: + $ref: '#/components/schemas/connectors' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /connectors/$count: + get: + summary: Return count of connectors + description: >- + Returns count of records from the connectors entity that match the + specified query parameters. All count will be returned when no + parameters are specified. + tags: + - connectors + operationId: getconnectorsCount + parameters: + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: The count + content: + text/plain; charset=utf-8: + schema: + type: string + format: int32 + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + '/connectors(''{ConnectorId}'')': + get: + summary: Return a single connectors + description: Returns a single connectors object using the specified key. + tags: + - connectors + operationId: getconnectors + parameters: + - name: ConnectorId + in: path + description: The key ConnectorId + required: true + schema: + type: string + - name: $select + in: query + schema: + type: string + description: Select structural property + responses: + '200': + description: connectors response + content: + application/json: + schema: + $ref: '#/components/schemas/connectors' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + put: + summary: Update connectors + description: Updates the specified connectors object. + tags: + - connectors + operationId: updateconnectors + parameters: + - name: ConnectorId + in: path + description: The key ConnectorId + required: true + schema: + type: string + requestBody: + description: The connectors entity to update. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/connectors' + responses: + '200': + description: EntitySet connectors + content: + application/json: + schema: + $ref: '#/components/schemas/connectors' + '204': + description: connectors updated + content: {} + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + delete: + summary: Delete connectors + description: Deletes the specified connectors object. + tags: + - connectors + operationId: deleteconnectors + parameters: + - name: ConnectorId + in: path + description: The key ConnectorId + required: true + schema: + type: string + responses: + '204': + description: connectors deleted + content: {} + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + '/connectors(''{ConnectorId}'')/{propertyName}/$value': + get: + summary: Return specified property value of specified connectors + description: >- + Returns property value of connectors object using the specified key and + property name. + tags: + - connectors + operationId: getconnectorsProperty + parameters: + - name: ConnectorId + in: path + description: The key ConnectorId + required: true + schema: + type: string + - name: propertyName + in: path + schema: + type: string + description: The property name + required: true + responses: + '200': + description: The property value + content: + text/plain; charset=utf-8: + schema: + type: string + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + /files: + get: + summary: Return files + description: >- + Returns records from the files entity that match the specified query + parameters. All records will be returned when no parameters are + specified. + tags: + - files + operationId: getAllfiles + parameters: + - name: $select + in: query + schema: + type: string + description: >- + A comma-separated list of properties to include in the results. When + this field is left empty, all properties will be returned. + - name: $orderby + in: query + schema: + type: string + description: >- + Order the results by this property in ascending or descending + order. Example for ascending: 'Name ASC' Example for descending: + 'Name DESC' + - name: $top + in: query + schema: + type: integer + description: The number of results to return. + - name: $skip + in: query + schema: + type: integer + description: This is the offset of results to skip when returning results. + - name: $count + in: query + schema: + type: boolean + description: >- + When set, the results will return a count of results and not the + actual results. + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: files response + content: + application/json: + schema: + type: object + properties: + value: + type: array + items: + $ref: '#/components/schemas/files' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + post: + summary: Create files + description: Creates a new files object with the specified parameters. + tags: + - files + operationId: createfiles + requestBody: + description: The files entity to post + content: + application/json: + schema: + $ref: '#/components/schemas/files' + required: true + responses: + '201': + description: files created + content: + application/json: + schema: + $ref: '#/components/schemas/files' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /files/$count: + get: + summary: Return count of files + description: >- + Returns count of records from the files entity that match the specified + query parameters. All count will be returned when no parameters are + specified. + tags: + - files + operationId: getfilesCount + parameters: + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: The count + content: + text/plain; charset=utf-8: + schema: + type: string + format: int32 + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + '/files(ConnectorId=''{ConnectorId}'',Folder=''{Folder}'',Filename=''{Filename}'',MessageId=''{MessageId}'')': + get: + summary: Return a single files + description: Returns a single files object using the specified key. + tags: + - files + operationId: getfiles + parameters: + - name: ConnectorId + in: path + description: The key ConnectorId + required: true + schema: + type: string + - name: Folder + in: path + description: The key Folder + required: true + schema: + type: string + - name: Filename + in: path + description: The key Filename + required: true + schema: + type: string + - name: MessageId + in: path + description: The key MessageId + required: true + schema: + type: string + - name: $select + in: query + schema: + type: string + description: Select structural property + responses: + '200': + description: files response + content: + application/json: + schema: + $ref: '#/components/schemas/files' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + put: + summary: Update files + description: Updates the specified files object. + tags: + - files + operationId: updatefiles + parameters: + - name: ConnectorId + in: path + description: The key ConnectorId + required: true + schema: + type: string + - name: Folder + in: path + description: The key Folder + required: true + schema: + type: string + - name: Filename + in: path + description: The key Filename + required: true + schema: + type: string + - name: MessageId + in: path + description: The key MessageId + required: true + schema: + type: string + requestBody: + description: The files entity to update. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/files' + responses: + '200': + description: EntitySet files + content: + application/json: + schema: + $ref: '#/components/schemas/files' + '204': + description: files updated + content: {} + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + delete: + summary: Delete files + description: Deletes the specified files object. + tags: + - files + operationId: deletefiles + parameters: + - name: ConnectorId + in: path + description: The key ConnectorId + required: true + schema: + type: string + - name: Folder + in: path + description: The key Folder + required: true + schema: + type: string + - name: Filename + in: path + description: The key Filename + required: true + schema: + type: string + - name: MessageId + in: path + description: The key MessageId + required: true + schema: + type: string + responses: + '204': + description: files deleted + content: {} + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + '/files(ConnectorId=''{ConnectorId}'',Folder=''{Folder}'',Filename=''{Filename}'',MessageId=''{MessageId}'')/{propertyName}/$value': + get: + summary: Return specified property value of specified files + description: >- + Returns property value of files object using the specified key and + property name. + tags: + - files + operationId: getfilesProperty + parameters: + - name: ConnectorId + in: path + description: The key ConnectorId + required: true + schema: + type: string + - name: Folder + in: path + description: The key Folder + required: true + schema: + type: string + - name: Filename + in: path + description: The key Filename + required: true + schema: + type: string + - name: MessageId + in: path + description: The key MessageId + required: true + schema: + type: string + - name: propertyName + in: path + schema: + type: string + description: The property name + required: true + responses: + '200': + description: The property value + content: + text/plain; charset=utf-8: + schema: + type: string + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + /logs: + get: + summary: Return logs + description: >- + Returns records from the logs entity that match the specified query + parameters. All records will be returned when no parameters are + specified. + tags: + - logs + operationId: getAlllogs + parameters: + - name: $select + in: query + schema: + type: string + description: >- + A comma-separated list of properties to include in the results. When + this field is left empty, all properties will be returned. + - name: $orderby + in: query + schema: + type: string + description: >- + Order the results by this property in ascending or descending + order. Example for ascending: 'Name ASC' Example for descending: + 'Name DESC' + - name: $top + in: query + schema: + type: integer + description: The number of results to return. + - name: $skip + in: query + schema: + type: integer + description: This is the offset of results to skip when returning results. + - name: $count + in: query + schema: + type: boolean + description: >- + When set, the results will return a count of results and not the + actual results. + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: logs response + content: + application/json: + schema: + type: object + properties: + value: + type: array + items: + $ref: '#/components/schemas/logs' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + /logs/$count: + get: + summary: Return count of logs + description: >- + Returns count of records from the logs entity that match the specified + query parameters. All count will be returned when no parameters are + specified. + tags: + - logs + operationId: getlogsCount + parameters: + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: The count + content: + text/plain; charset=utf-8: + schema: + type: string + format: int32 + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + '/logs(''{Id}'')': + get: + summary: Return a single logs + description: Returns a single logs object using the specified key. + tags: + - logs + operationId: getlogs + parameters: + - name: Id + in: path + description: The key Id + required: true + schema: + type: string + - name: $select + in: query + schema: + type: string + description: Select structural property + responses: + '200': + description: logs response + content: + application/json: + schema: + $ref: '#/components/schemas/logs' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + '/logs(''{Id}'')/{propertyName}/$value': + get: + summary: Return specified property value of specified logs + description: >- + Returns property value of logs object using the specified key and + property name. + tags: + - logs + operationId: getlogsProperty + parameters: + - name: Id + in: path + description: The key Id + required: true + schema: + type: string + - name: propertyName + in: path + schema: + type: string + description: The property name + required: true + responses: + '200': + description: The property value + content: + text/plain; charset=utf-8: + schema: + type: string + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + /ports: + get: + summary: Return ports + description: >- + Returns records from the ports entity that match the specified query + parameters. All records will be returned when no parameters are + specified. + tags: + - ports + operationId: getAllports + parameters: + - name: $select + in: query + schema: + type: string + description: >- + A comma-separated list of properties to include in the results. When + this field is left empty, all properties will be returned. + - name: $orderby + in: query + schema: + type: string + description: >- + Order the results by this property in ascending or descending + order. Example for ascending: 'Name ASC' Example for descending: + 'Name DESC' + - name: $top + in: query + schema: + type: integer + description: The number of results to return. + - name: $skip + in: query + schema: + type: integer + description: This is the offset of results to skip when returning results. + - name: $count + in: query + schema: + type: boolean + description: >- + When set, the results will return a count of results and not the + actual results. + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: ports response + content: + application/json: + schema: + type: object + properties: + value: + type: array + items: + $ref: '#/components/schemas/ports' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + post: + summary: Create ports + description: Creates a new ports object with the specified parameters. + tags: + - ports + operationId: createports + requestBody: + description: The ports entity to post + content: + application/json: + schema: + $ref: '#/components/schemas/ports' + required: true + responses: + '201': + description: ports created + content: + application/json: + schema: + $ref: '#/components/schemas/ports' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /ports/$count: + get: + summary: Return count of ports + description: >- + Returns count of records from the ports entity that match the specified + query parameters. All count will be returned when no parameters are + specified. + tags: + - ports + operationId: getportsCount + parameters: + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: The count + content: + text/plain; charset=utf-8: + schema: + type: string + format: int32 + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + '/ports(''{PortId}'')': + get: + summary: Return a single ports + description: Returns a single ports object using the specified key. + tags: + - ports + operationId: getports + parameters: + - name: PortId + in: path + description: The key PortId + required: true + schema: + type: string + - name: $select + in: query + schema: + type: string + description: Select structural property + responses: + '200': + description: ports response + content: + application/json: + schema: + $ref: '#/components/schemas/ports' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + put: + summary: Update ports + description: Updates the specified ports object. + tags: + - ports + operationId: updateports + parameters: + - name: PortId + in: path + description: The key PortId + required: true + schema: + type: string + requestBody: + description: The ports entity to update. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ports' + responses: + '200': + description: EntitySet ports + content: + application/json: + schema: + $ref: '#/components/schemas/ports' + '204': + description: ports updated + content: {} + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + delete: + summary: Delete ports + description: Deletes the specified ports object. + tags: + - ports + operationId: deleteports + parameters: + - name: PortId + in: path + description: The key PortId + required: true + schema: + type: string + responses: + '204': + description: ports deleted + content: {} + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + '/ports(''{PortId}'')/{propertyName}/$value': + get: + summary: Return specified property value of specified ports + description: >- + Returns property value of ports object using the specified key and + property name. + tags: + - ports + operationId: getportsProperty + parameters: + - name: PortId + in: path + description: The key PortId + required: true + schema: + type: string + - name: propertyName + in: path + schema: + type: string + description: The property name + required: true + responses: + '200': + description: The property value + content: + text/plain; charset=utf-8: + schema: + type: string + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + /profile: + get: + summary: Return profile + description: >- + Returns records from the profile entity that match the specified query + parameters. All records will be returned when no parameters are + specified. + tags: + - profile + operationId: getAllprofile + parameters: + - name: $select + in: query + schema: + type: string + description: >- + A comma-separated list of properties to include in the results. When + this field is left empty, all properties will be returned. + - name: $orderby + in: query + schema: + type: string + description: >- + Order the results by this property in ascending or descending + order. Example for ascending: 'Name ASC' Example for descending: + 'Name DESC' + - name: $top + in: query + schema: + type: integer + description: The number of results to return. + - name: $skip + in: query + schema: + type: integer + description: This is the offset of results to skip when returning results. + - name: $count + in: query + schema: + type: boolean + description: >- + When set, the results will return a count of results and not the + actual results. + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: profile response + content: + application/json: + schema: + type: object + properties: + value: + type: array + items: + $ref: '#/components/schemas/profile' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + put: + summary: Update profile + description: Updates the specified profile object. + tags: + - profile + operationId: updateprofile + requestBody: + description: The profile entity to update. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/profile' + responses: + '204': + description: profile updated + content: {} + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /profile/$count: + get: + summary: Return count of profile + description: >- + Returns count of records from the profile entity that match the + specified query parameters. All count will be returned when no + parameters are specified. + tags: + - profile + operationId: getprofileCount + parameters: + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: The count + content: + text/plain; charset=utf-8: + schema: + type: string + format: int32 + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + /requests: + get: + summary: Return requests + description: >- + Returns records from the requests entity that match the specified query + parameters. All records will be returned when no parameters are + specified. + tags: + - requests + operationId: getAllrequests + parameters: + - name: $select + in: query + schema: + type: string + description: >- + A comma-separated list of properties to include in the results. When + this field is left empty, all properties will be returned. + - name: $orderby + in: query + schema: + type: string + description: >- + Order the results by this property in ascending or descending + order. Example for ascending: 'Name ASC' Example for descending: + 'Name DESC' + - name: $top + in: query + schema: + type: integer + description: The number of results to return. + - name: $skip + in: query + schema: + type: integer + description: This is the offset of results to skip when returning results. + - name: $count + in: query + schema: + type: boolean + description: >- + When set, the results will return a count of results and not the + actual results. + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: requests response + content: + application/json: + schema: + type: object + properties: + value: + type: array + items: + $ref: '#/components/schemas/requests' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + /requests/$count: + get: + summary: Return count of requests + description: >- + Returns count of records from the requests entity that match the + specified query parameters. All count will be returned when no + parameters are specified. + tags: + - requests + operationId: getrequestsCount + parameters: + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: The count + content: + text/plain; charset=utf-8: + schema: + type: string + format: int32 + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + '/requests(''{Id}'')': + get: + summary: Return a single requests + description: Returns a single requests object using the specified key. + tags: + - requests + operationId: getrequests + parameters: + - name: Id + in: path + description: The key Id + required: true + schema: + type: string + - name: $select + in: query + schema: + type: string + description: Select structural property + responses: + '200': + description: requests response + content: + application/json: + schema: + $ref: '#/components/schemas/requests' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + '/requests(''{Id}'')/{propertyName}/$value': + get: + summary: Return specified property value of specified requests + description: >- + Returns property value of requests object using the specified key and + property name. + tags: + - requests + operationId: getrequestsProperty + parameters: + - name: Id + in: path + description: The key Id + required: true + schema: + type: string + - name: propertyName + in: path + schema: + type: string + description: The property name + required: true + responses: + '200': + description: The property value + content: + text/plain; charset=utf-8: + schema: + type: string + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + /transactions: + get: + summary: Return transactions + description: >- + Returns records from the transactions entity that match the specified + query parameters. All records will be returned when no parameters are + specified. + tags: + - transactions + operationId: getAlltransactions + parameters: + - name: $select + in: query + schema: + type: string + description: >- + A comma-separated list of properties to include in the results. When + this field is left empty, all properties will be returned. + - name: $orderby + in: query + schema: + type: string + description: >- + Order the results by this property in ascending or descending + order. Example for ascending: 'Name ASC' Example for descending: + 'Name DESC' + - name: $top + in: query + schema: + type: integer + description: The number of results to return. + - name: $skip + in: query + schema: + type: integer + description: This is the offset of results to skip when returning results. + - name: $count + in: query + schema: + type: boolean + description: >- + When set, the results will return a count of results and not the + actual results. + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: transactions response + content: + application/json: + schema: + type: object + properties: + value: + type: array + items: + $ref: '#/components/schemas/transactions' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + /transactions/$count: + get: + summary: Return count of transactions + description: >- + Returns count of records from the transactions entity that match the + specified query parameters. All count will be returned when no + parameters are specified. + tags: + - transactions + operationId: gettransactionsCount + parameters: + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: The count + content: + text/plain; charset=utf-8: + schema: + type: string + format: int32 + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + '/transactions(''{Id}'')': + get: + summary: Return a single transactions + description: Returns a single transactions object using the specified key. + tags: + - transactions + operationId: gettransactions + parameters: + - name: Id + in: path + description: The key Id + required: true + schema: + type: string + - name: $select + in: query + schema: + type: string + description: Select structural property + responses: + '200': + description: transactions response + content: + application/json: + schema: + $ref: '#/components/schemas/transactions' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + delete: + summary: Delete transactions + description: Deletes the specified transactions object. + tags: + - transactions + operationId: deletetransactions + parameters: + - name: Id + in: path + description: The key Id + required: true + schema: + type: string + responses: + '204': + description: transactions deleted + content: {} + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + '/transactions(''{Id}'')/{propertyName}/$value': + get: + summary: Return specified property value of specified transactions + description: >- + Returns property value of transactions object using the specified key + and property name. + tags: + - transactions + operationId: gettransactionsProperty + parameters: + - name: Id + in: path + description: The key Id + required: true + schema: + type: string + - name: propertyName + in: path + schema: + type: string + description: The property name + required: true + responses: + '200': + description: The property value + content: + text/plain; charset=utf-8: + schema: + type: string + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + /workspaces: + get: + summary: Return workspaces + description: >- + Returns records from the workspaces entity that match the specified + query parameters. All records will be returned when no parameters are + specified. + tags: + - workspaces + operationId: getAllworkspaces + parameters: + - name: $select + in: query + schema: + type: string + description: >- + A comma-separated list of properties to include in the results. When + this field is left empty, all properties will be returned. + - name: $orderby + in: query + schema: + type: string + description: >- + Order the results by this property in ascending or descending + order. Example for ascending: 'Name ASC' Example for descending: + 'Name DESC' + - name: $top + in: query + schema: + type: integer + description: The number of results to return. + - name: $skip + in: query + schema: + type: integer + description: This is the offset of results to skip when returning results. + - name: $count + in: query + schema: + type: boolean + description: >- + When set, the results will return a count of results and not the + actual results. + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: workspaces response + content: + application/json: + schema: + type: object + properties: + value: + type: array + items: + $ref: '#/components/schemas/workspaces' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + post: + summary: Create workspaces + description: Creates a new workspaces object with the specified parameters. + tags: + - workspaces + operationId: createworkspaces + requestBody: + description: The workspaces entity to post + content: + application/json: + schema: + $ref: '#/components/schemas/workspaces' + required: true + responses: + '201': + description: workspaces created + content: + application/json: + schema: + $ref: '#/components/schemas/workspaces' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /workspaces/$count: + get: + summary: Return count of workspaces + description: >- + Returns count of records from the workspaces entity that match the + specified query parameters. All count will be returned when no + parameters are specified. + tags: + - workspaces + operationId: getworkspacesCount + parameters: + - name: $filter + in: query + schema: + type: string + description: >- + Use this to filter the results by specific property values. For + example, you can use the following filter to retrieve records with + the name 'John': $filter=Name eq 'John' + responses: + '200': + description: The count + content: + text/plain; charset=utf-8: + schema: + type: string + format: int32 + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + '/workspaces(''{Workspaceid}'')': + get: + summary: Return a single workspaces + description: Returns a single workspaces object using the specified key. + tags: + - workspaces + operationId: getworkspaces + parameters: + - name: Workspaceid + in: path + description: The key Workspaceid + required: true + schema: + type: string + - name: $select + in: query + schema: + type: string + description: Select structural property + responses: + '200': + description: workspaces response + content: + application/json: + schema: + $ref: '#/components/schemas/workspaces' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + delete: + summary: Delete workspaces + description: Deletes the specified workspaces object. + tags: + - workspaces + operationId: deleteworkspaces + parameters: + - name: Workspaceid + in: path + description: The key Workspaceid + required: true + schema: + type: string + responses: + '204': + description: workspaces deleted + content: {} + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + '/workspaces(''{Workspaceid}'')/{propertyName}/$value': + get: + summary: Return specified property value of specified workspaces + description: >- + Returns property value of workspaces object using the specified key and + property name. + tags: + - workspaces + operationId: getworkspacesProperty + parameters: + - name: Workspaceid + in: path + description: The key Workspaceid + required: true + schema: + type: string + - name: propertyName + in: path + schema: + type: string + description: The property name + required: true + responses: + '200': + description: The property value + content: + text/plain; charset=utf-8: + schema: + type: string + default: + description: Unexpected error + content: + text/plain; charset=utf-8: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + /archiveLogs: + post: + summary: >- + Archives log files for the specified connector(s). This removes files + from the application database but retains the files in an archive on + disk for auditing at a later date. + description: >- + Archives log files for the specified connector(s). This removes files + from the application database but retains the files in an archive on + disk for auditing at a later date. + tags: + - archiveLogs + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/archiveLogs_input' + required: true + responses: + '200': + description: The action result + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /copyConnector: + post: + summary: >- + This action will copy the connector settings to a new connector based on + the newly specified Id. + description: >- + This action will copy the connector settings to a new connector based on + the newly specified Id. + tags: + - copyConnector + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/copyConnector_input' + required: true + responses: + '200': + description: The action result + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /copyPort: + post: + summary: >- + This action will copy the port settings to a new port based on the newly + specified Id. + description: >- + This action will copy the port settings to a new port based on the newly + specified Id. + tags: + - copyPort + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/copyPort_input' + required: true + responses: + '200': + description: The action result + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /createCert: + post: + summary: Create the public/private certificate key pair. + description: Create the public/private certificate key pair. + tags: + - createCert + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/createCert_input' + required: true + responses: + '200': + description: The action result + content: + application/json: + schema: + $ref: '#/components/schemas/createCert_output' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /deleteLogs: + post: + summary: >- + Delete all the application and access logs older than the specified + timestamp. + description: >- + Delete all the application and access logs older than the specified + timestamp. + tags: + - deleteLogs + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/deleteLogs_input' + responses: + '200': + description: The action result + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /deleteTransactions: + post: + summary: >- + Delete all the transaction logs for the connector older than the + specified timestamp. + description: >- + Delete all the transaction logs for the connector older than the + specified timestamp. + tags: + - deleteTransactions + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/deleteTransactions_input' + responses: + '200': + description: The action result + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /downloadFile: + post: + summary: Download files for this connector. + description: Download files for this connector. + tags: + - downloadFile + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/downloadFile_input' + responses: + '200': + description: The action result + content: + application/json: + schema: + $ref: '#/components/schemas/downloadFile_output' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /exchangeCert: + post: + summary: Exchange the specified certificate. + description: Exchange the specified certificate. + tags: + - exchangeCert + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/exchangeCert_input' + required: true + responses: + '200': + description: The action result + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /getTransactionLogs: + post: + summary: Retrieves the transaction details of the application. + description: Retrieves the transaction details of the application. + tags: + - getTransactionLogs + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/getTransactionLogs_input' + required: true + responses: + '200': + description: The action result + content: + application/json: + schema: + $ref: '#/components/schemas/getTransactionLogs_output' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /importProfiles: + post: + summary: >- + This action will import partner/connector profiles from previous + versions of the application. + description: >- + This action will import partner/connector profiles from previous + versions of the application. + tags: + - importProfiles + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/importProfiles_input' + responses: + '200': + description: The action result + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /refreshTransactions: + post: + summary: Refresh the transaction log for the specified connector. + description: Refresh the transaction log for the specified connector. + tags: + - refreshTransactions + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/refreshTransactions_input' + responses: + '200': + description: The action result + content: + application/json: + schema: + $ref: '#/components/schemas/refreshTransactions_output' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /restartFile: + post: + summary: Restart an outgoing transmission for the specified file. + description: Restart an outgoing transmission for the specified file. + tags: + - restartFile + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/restartFile_input' + required: true + responses: + '200': + description: The action result + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] + /sendFile: + post: + summary: Sends a file using the specified connector. + description: Sends a file using the specified connector. + tags: + - sendFile + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/sendFile_input' + responses: + '200': + description: The action result + content: + application/json: + schema: + $ref: '#/components/schemas/sendFile_output' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/CDataError' + security: + - basic: [] + - authtoken_header: [] + - authtoken_query: [] + parameters: [] +components: + schemas: + certificates: + type: object + properties: + Name: + description: The name of the certificate file. + type: string + Data: + description: The base-64 encoded contents of the certificate file. + type: string + StoreType: + description: The store type. + type: string + Subject: + description: The certificate subject. + type: string + Issuer: + description: The issuer of the certificate. + type: string + IssuedTo: + description: The common name of certificate subject. + type: string + IssuedBy: + description: The common name of certificate issuer. + type: string + EffectiveDate: + description: The effective date of the certificate. + type: string + ExpirationDate: + description: The expiration date of the certificate. + type: string + ExpirationDays: + description: The days until the expiration date of the certificate. + type: integer + format: int32 + Serialnumber: + description: The serial number of the certificate. + type: string + Thumbprint: + description: The SHA1 thumbprint of the certificate. + type: string + Keysize: + description: The key size of the certificate. + type: string + SignatureAlgorithm: + description: The algorithm used to sign the certificate. + type: string + ConnectorId: + description: The Id of the connector configured to use the certificate. + type: string + PortId: + description: The Id of the port configured to use the certificate. + type: string + required: + - Name + connectors: + type: object + properties: + ConnectorId: + description: The id of the connector. + type: string + Workspace: + description: The workspace of the connector. + type: string + ConnectorType: + description: The type of the connector. + type: string + ParentConnector: + description: The parent connector separated by a comma. + type: string + required: + - ConnectorId + files: + type: object + properties: + ConnectorId: + description: The id of the connector. + type: string + PortId: + description: The id of the port. + type: string + Folder: + description: The folder of the file. + type: string + Filename: + description: The name of the file. + type: string + MessageId: + description: >- + The message id of the file. This will only have a value if the file + is a message. + type: string + Subfolder: + description: The subfolder of the file. + type: string + TimeCreated: + description: The time the file was created. + type: string + format: date-time + FilePath: + description: The full path to the file. + type: string + FileSize: + description: The size of the file. + type: integer + format: int32 + Content: + description: >- + The Base64 encode file contents. This will only be returned when a + specific file is requested. This field cannot be used when filtering + results using the $filter parameter. + type: string + required: + - ConnectorId + - Folder + - Filename + - MessageId + logs: + type: object + properties: + Id: + description: The Id of the log message. + type: string + Type: + description: The type of the log message. + type: string + Timestamp: + description: The time when the event occurred. + type: string + format: date-time + Script: + description: The app causing the error. + type: string + Message: + description: The message. + type: string + required: + - Id + ports: + type: object + properties: + PortId: + description: The id of the port. + type: string + Workspace: + description: The workspace of the port. + type: string + PortType: + description: The type of the port. + type: string + ParentPort: + description: The parent ports separated by a comma. + type: string + required: + - PortId + profile: + type: object + properties: + HeartbeatInterval: + description: >- + The interval in which the application will perform scheduled tasks + such as sending files to your trading partners. + type: integer + format: int32 + NotifyEmail: + description: >- + Send an email to the specified email addresses when an error is + encountered. + type: string + NotifyEmailFrom: + description: The sender of notification emails. + type: string + NotifyEmailTo: + description: The receiver of notification emails. + type: string + NotifyEmailSubject: + description: The subject of notification emails. + type: string + SMTPServer: + description: The host name or IP address of your SMTP server. + type: string + SMTPUser: + description: The username to authenticate to your SMTP server. + type: string + SMTPPassword: + description: The password to authenticate to your SMTP server. + type: string + SMTPPort: + description: The port of your SMTP server. + type: string + SMTPSSLMode: + description: The SSL mode of your SMTP server. + type: string + SendStatusReport: + description: Send a status report to the email address . + type: boolean + SendReportInterval: + description: The interval of send a status report to the email address. + type: string + NotifyWindowsEvent: + description: Write error messages to the Windows Application Event Log. + type: boolean + NotifyStopStart: + description: Log when the application starts and stops in the event log. + type: boolean + ProxyType: + description: The type of proxy to connect through. + type: string + ProxyHost: + description: The host name or IP address of the proxy. + type: string + ProxyPort: + description: The port of your proxy. + type: string + ProxyUser: + description: The username to use when authenticating to your proxy. + type: string + ProxyPassword: + description: The password to use when authenticating to your proxy. + type: string + ProxyAuthscheme: + description: The auth scheme to use when authenticating to your proxy. + type: string + requests: + type: object + properties: + Id: + description: The Id of the request. + type: string + Timestamp: + description: The time when the request was handled. + type: string + format: date-time + URL: + description: The URL of the request. + type: string + Method: + description: The HTTP method. + type: string + User: + description: The user. + type: string + RemoteIP: + description: The remote IP address from the request. + type: string + Script: + description: The script. + type: string + Bytes: + description: The size of the request. + type: integer + format: int64 + Time: + description: The time of the request. + type: integer + format: int32 + Error: + description: The error of the request. + type: string + status: + description: The status of the request. + type: string + required: + - Id + transactions: + type: object + properties: + Id: + description: The id of the logs. + type: string + ConnectorId: + description: The id of the connector. + type: string + PortId: + description: The id of the port. + type: string + MessageId: + description: The message Id. + type: string + Direction: + description: The direction of the file transaction. + type: string + Status: + description: The status of the transaction. + type: string + Filename: + description: The name of the file being transferred. + type: string + FilePath: + description: The full path to the file that was sent or received. + type: string + FileSize: + description: The size of the file. + type: integer + format: int32 + Timestamp: + description: The time that the file was sent or received. + type: string + format: date-time + ETag: + description: >- + The ETag for the file being transferred. This is only available when + using AS2 Restart. + type: string + required: + - Id + workspaces: + type: object + properties: + Workspaceid: + description: The Id of the workspace. + type: string + required: + - Workspaceid + archiveLogs_input: + type: object + required: + - Age + properties: + Age: + type: string + description: >- + Minimum file age of the files to be archived, in days. Files more + recent than the specified age will not be archived. + ConnectorId: + type: string + description: >- + The Id of the connector to be archived. If not set, all connectors + will be archived. + PortId: + type: string + description: >- + The Id of the Port to be archived. If not set, all ports will be + archived. + Folder: + type: string + description: >- + Archive directory name. By default, the application will create an + 'Archive' directory in the connector folder. + DeleteTransactions: + type: string + description: >- + If true, entries corresponding to the archived logs will be deleted + from the corresponding Transactions table in the database. Default + is true. + copyConnector_input: + type: object + required: + - ConnectorId + - NewConnectorId + properties: + ConnectorId: + type: string + description: The Id of the connector to copy. + NewConnectorId: + type: string + description: The Id of the new connector. + copyPort_input: + type: object + required: + - PortId + - NewPortId + properties: + PortId: + type: string + description: The Id of the port to copy. + NewPortId: + type: string + description: The Id of the new port. + createCert_input: + type: object + required: + - Filename + - CommonName + - Serialnumber + - Password + properties: + Filename: + type: string + description: The file name. + CommonName: + type: string + description: The common name. + Serialnumber: + type: string + description: The serial number. + Password: + type: string + description: The password. + Country: + type: string + description: The country. + Email: + type: string + description: The email. + Expiration: + type: string + description: The expiration (in years). + default: '1' + KeySize: + type: string + description: The key size. + default: '2048' + PublicKeyType: + type: string + description: The public key type. + default: X.509 + SignatureAlgorithm: + type: string + description: The signature algorithm. + default: SHA256 + Locality: + type: string + description: The locality. + Organization: + type: string + description: The organization. + OrganizationalUnit: + type: string + description: The organizational unit. + State: + type: string + description: The state. + createCert_output: + type: array + items: + type: object + properties: + Name: + type: string + description: The file name. + Password: + type: string + description: The password. + Pubname: + type: string + description: The public cert file name. + deleteLogs_input: + type: object + properties: + TimeStamp: + type: string + description: >- + When set, all logs older than this value will be deleted. If this + field is left empty, all logs will be deleted. + deleteTransactions_input: + type: object + properties: + ConnectorId: + type: string + description: The id of the connector. + PortId: + type: string + description: The id of the port. + Direction: + type: string + description: The direction of the file transaction. + TimeStamp: + type: string + description: >- + When set, all transaction logs older than this value will be + deleted. If this field is left empty, all logs will be deleted. + downloadFile_input: + type: object + properties: + ConnectorId: + type: string + description: The id of the connector. Required. + PortId: + type: string + description: The id of the port. + File: + type: string + description: >- + The file to be downloaded. When file is not supplied, all files will + be downloaded based on the connector's settings. + RemotePath: + type: string + description: >- + The path to overrides the Remote path settings in the connector(Only + used for FTP, SFTP) + downloadFile_output: + type: array + items: + type: object + properties: + MessageId: + type: string + description: The message id of the file. + Subfolder: + type: string + description: The subfolder of the file. + File: + type: string + description: The name of the file. + FileSize: + type: string + description: The size of the file. + TimeCreated: + type: string + description: The time the file was created. + ErrorMessage: + type: string + description: >- + When multiple files are transferred over the same connection, this + will return the error message if an individual file transfer + failed. If this is empty, the file transfer was successful. + exchangeCert_input: + type: object + required: + - Certificate + - ExchangeType + properties: + ConnectorId: + type: string + description: The connector id. Required. + PortId: + type: string + description: The port id. + Certificate: + type: string + description: The certificate to exchange. + ExchangeType: + type: string + description: >- + The exchange type. Validate values are AS2(Request, Response), + OFTP(Deliver, Request, Replace) + CertificatePassword: + type: string + description: The password of certificate(AS2). + CertificateUsage: + type: string + description: >- + The cryptographic function(s) for the certificate. Validate values + are 'Encryption,Verification,ServerTLS,ClientTLS'(AS2). + ResponseURL: + type: string + description: The URL which the response should be sent(AS2). + getTransactionLogs_input: + type: object + required: + - MessageId + - Direction + properties: + ConnectorId: + type: string + description: The id of the connector. Required. + PortId: + type: string + description: The id of the port. + MessageId: + type: string + description: The message Id. + Direction: + type: string + description: The direction of the transaction. + Type: + type: string + description: The type of the log file. + IncludeContent: + type: string + description: Whether to return the content of the log file. + default: 'False' + getTransactionLogs_output: + type: array + items: + type: object + properties: + TimeCreated: + type: string + description: The time the log file was created. + Type: + type: string + description: The type of the log file. + File: + type: string + description: The name of the log file. + Path: + type: string + description: The path of the log file. + Content: + type: string + description: The Base64 encoded content of the log file. + importProfiles_input: + type: object + properties: + DataDirectory: + type: string + description: The data directory or a zipped file where the profiles are stored. + Workspace: + type: string + description: The name of the workspace. + InputName: + type: string + description: The name of the form input when uploading files from a form. + DuplicateAction: + type: string + description: >- + This setting determines how to handle profiles that already exist + during an import. + default: Overwrite + IncludeDirectories: + type: string + description: Whether to retain directories on non-default locations. + default: 'False' + refreshTransactions_input: + type: object + properties: + ConnectorId: + type: string + description: The id of the connector. Required + PortId: + type: string + description: The id of the port. + refreshTransactions_output: + type: array + items: + type: object + properties: + Result: + type: string + description: The result of rebuilding the transactions cache. + restartFile_input: + type: object + required: + - Filename + - etag + properties: + ConnectorId: + type: string + description: The id of the partner/connector. Required. + PortId: + type: string + description: The id of the partner/port. + Filename: + type: string + description: The file name. + etag: + type: string + description: The ETag. + sendFile_input: + type: object + properties: + ConnectorId: + type: string + description: The id of the connector. Required. + PortId: + type: string + description: The id of the port. + File: + type: string + description: The file name. + Subfolder: + type: string + description: The subfolder of the file. + 'Attachment#': + type: string + description: The attachment file. + FormatResult: + type: string + description: Is format result. + sendFile_output: + type: array + items: + type: object + properties: + MessageId: + type: string + description: The message Id. + File: + type: string + description: The file name. + CDataError: + type: object + properties: + error: + $ref: '#/components/schemas/CDataInError' + CDataInError: + type: object + properties: + code: + type: string + message: + type: string + securitySchemes: + authtoken_header: + type: apiKey + in: header + name: x-cdata-authtoken + authtoken_query: + type: apiKey + in: query + name: '@authtoken' + basic: + scheme: basic + type: http + links: {} + callbacks: {} +security: [] diff --git a/docs/platform/freight-trust smi-spec master .github.zip b/docs/platform/freight-trust smi-spec master .github.zip new file mode 100644 index 0000000000000000000000000000000000000000..a3c6d94af5c5e33b0cadd4e26bf2a66ef74ff7af GIT binary patch literal 1386 zcmb7EO>Yx15KT+N!Iu`qiPQ8{DUwslF+!+O$ssDKwrqMp2vuIkN!&R0*7i0+;>H~~ z@;mq?{1DC+N5=b+vYUd$MqbA=^XxaXZycRI*deX(e0uvc%KwzFU7Uw;d@;Bj4@S}J z{&;X0)q=m?wr>|06vord;Ok5{FOBXlCzMj6*;4f2yfhM)n9TQ}?-szI3I!`>%ub}9 zK|C6QO9dxhdWFD)1EN?Wl{dlOD1*q!%`LWPlkjT-6H^LrqrbsIrC!e=3xd%EYp0Br1BL2g(Y)dSVFE$ zl3SJ3zVO;iJBk}ZmSoyzR56c5%Yg_<%RMNRr_TjnVA;xzGZ!*vJQUd-;*q)Y_~v=; zuRyWzSqf)nBDz=ZUZe{VRAa>P%~AKL`>ck4lW7QqODHn#!N+m|nA$=V?t0)HtSU+K5VHrHx`OP#=8G^h|&^;OF8_8kHcb-AV~`I5)OPCrSW*b>Iv?{eR?xwQhi6 zYAmKH-MTzQp3&*n_LJ7%FNC6-_R6N(xE|`@<^@rraH2RG;OY)QN&JgMK`rbQNc_O@ wXHVD9Z+3M+70)l6?r>F)H_vT~xI!cM?G65w%yRzihat9&zX3MD?oL?!2FCzv!~g&Q literal 0 HcmV?d00001 diff --git a/docs/platform/freight-trust smi-spec master .github/ISSUE_TEMPLATE/proposal.md b/docs/platform/freight-trust smi-spec master .github/ISSUE_TEMPLATE/proposal.md new file mode 100644 index 0000000..20ecd42 --- /dev/null +++ b/docs/platform/freight-trust smi-spec master .github/ISSUE_TEMPLATE/proposal.md @@ -0,0 +1,19 @@ +--- +name: Proposal +about: Propose a change to the SMI spec +labels: proposal + +--- + +**Describe the proposal** + + +**Scope** +- [ ] New specification +- [ ] Traffic Access Control +- [ ] Traffic Specs +- [ ] Traffic Metrics +- [ ] Traffic Split + +**Possible use cases** + diff --git a/docs/platform/freight-trust smi-spec master .github/ISSUE_TEMPLATE/question.md b/docs/platform/freight-trust smi-spec master .github/ISSUE_TEMPLATE/question.md new file mode 100644 index 0000000..8c6ec3d --- /dev/null +++ b/docs/platform/freight-trust smi-spec master .github/ISSUE_TEMPLATE/question.md @@ -0,0 +1,9 @@ +--- +name: Question +about: Ask a question regarding SMI spec +title: '' +labels: question +assignees: '' + +--- + diff --git a/docs/platform/freight-trust smi-spec master .github/workflows/main.yml b/docs/platform/freight-trust smi-spec master .github/workflows/main.yml new file mode 100644 index 0000000..36ff41f --- /dev/null +++ b/docs/platform/freight-trust smi-spec master .github/workflows/main.yml @@ -0,0 +1,19 @@ +name: CI + +on: + pull_request: + push: + branches: + - master + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Setup Node.js + uses: actions/setup-node@v1.1.0 + - name: Run lint + run: | + make lint diff --git a/docs/platform/freight-trust-api.json b/docs/platform/freight-trust-api.json new file mode 100644 index 0000000..5ef9057 --- /dev/null +++ b/docs/platform/freight-trust-api.json @@ -0,0 +1,4856 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "Freight Trust Interface OpenAPI", + "version": "1.0.0", + "contact": { + "email": "admin@freighttrust.com", + "name": "Operations Group" + }, + "license": { + "url": "https://www.mozilla.org/en-US/MPL/2.0/", + "name": "Mozilla Public License Version 2.0" + }, + "termsOfService": "https://github.com/freight-trust/legal/blob/master/src/terms-of-service.md", + "description": "Freight Trust and Clearing Platform Interface " + }, + "servers": [ + { + "url": "https://api.freighttrust.com/interface/$oas" + } + ], + "paths": { + "/certificates": { + "get": { + "summary": "Return certificates", + "description": "Returns records from the certificates entity that match the specified query parameters. All records will be returned when no parameters are specified.", + "tags": [ + "certificates" + ], + "operationId": "getAllcertificates", + "parameters": [ + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "A comma-separated list of properties to include in the results. When this field is left empty, all properties will be returned." + }, + { + "name": "$orderby", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Order the results by this property in ascending or descending order. Example for ascending: 'Name ASC' Example for descending: 'Name DESC'" + }, + { + "name": "$top", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "The number of results to return." + }, + { + "name": "$skip", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "This is the offset of results to skip when returning results." + }, + { + "name": "$count", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "When set, the results will return a count of results and not the actual results." + }, + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "certificates response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/certificates" + } + } + } + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + }, + "post": { + "summary": "Create certificates", + "description": "Creates a new certificates object with the specified parameters.", + "tags": [ + "certificates" + ], + "operationId": "createcertificates", + "requestBody": { + "description": "The certificates entity to post", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/certificates" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "certificates created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/certificates" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/certificates/$count": { + "get": { + "summary": "Return count of certificates", + "description": "Returns count of records from the certificates entity that match the specified query parameters. All count will be returned when no parameters are specified.", + "tags": [ + "certificates" + ], + "operationId": "getcertificatesCount", + "parameters": [ + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "The count", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string", + "format": "int32" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/certificates('{Name}')": { + "get": { + "summary": "Return a single certificates", + "description": "Returns a single certificates object using the specified key.", + "tags": [ + "certificates" + ], + "operationId": "getcertificates", + "parameters": [ + { + "name": "Name", + "in": "path", + "description": "The key Name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Select structural property" + } + ], + "responses": { + "200": { + "description": "certificates response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/certificates" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + }, + "delete": { + "summary": "Delete certificates", + "description": "Deletes the specified certificates object.", + "tags": [ + "certificates" + ], + "operationId": "deletecertificates", + "parameters": [ + { + "name": "Name", + "in": "path", + "description": "The key Name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "certificates deleted", + "content": {} + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/certificates('{Name}')/{propertyName}/$value": { + "get": { + "summary": "Return specified property value of specified certificates", + "description": "Returns property value of certificates object using the specified key and property name.", + "tags": [ + "certificates" + ], + "operationId": "getcertificatesProperty", + "parameters": [ + { + "name": "Name", + "in": "path", + "description": "The key Name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "propertyName", + "in": "path", + "schema": { + "type": "string" + }, + "description": "The property name", + "required": true + } + ], + "responses": { + "200": { + "description": "The property value", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/connectors": { + "get": { + "summary": "Return connectors", + "description": "Returns records from the connectors entity that match the specified query parameters. All records will be returned when no parameters are specified.", + "tags": [ + "connectors" + ], + "operationId": "getAllconnectors", + "parameters": [ + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "A comma-separated list of properties to include in the results. When this field is left empty, all properties will be returned." + }, + { + "name": "$orderby", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Order the results by this property in ascending or descending order. Example for ascending: 'Name ASC' Example for descending: 'Name DESC'" + }, + { + "name": "$top", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "The number of results to return." + }, + { + "name": "$skip", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "This is the offset of results to skip when returning results." + }, + { + "name": "$count", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "When set, the results will return a count of results and not the actual results." + }, + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "connectors response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/connectors" + } + } + } + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + }, + "post": { + "summary": "Create connectors", + "description": "Creates a new connectors object with the specified parameters.", + "tags": [ + "connectors" + ], + "operationId": "createconnectors", + "requestBody": { + "description": "The connectors entity to post", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connectors" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "connectors created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connectors" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/connectors/$count": { + "get": { + "summary": "Return count of connectors", + "description": "Returns count of records from the connectors entity that match the specified query parameters. All count will be returned when no parameters are specified.", + "tags": [ + "connectors" + ], + "operationId": "getconnectorsCount", + "parameters": [ + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "The count", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string", + "format": "int32" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/connectors('{ConnectorId}')": { + "get": { + "summary": "Return a single connectors", + "description": "Returns a single connectors object using the specified key.", + "tags": [ + "connectors" + ], + "operationId": "getconnectors", + "parameters": [ + { + "name": "ConnectorId", + "in": "path", + "description": "The key ConnectorId", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Select structural property" + } + ], + "responses": { + "200": { + "description": "connectors response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connectors" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + }, + "put": { + "summary": "Update connectors", + "description": "Updates the specified connectors object.", + "tags": [ + "connectors" + ], + "operationId": "updateconnectors", + "parameters": [ + { + "name": "ConnectorId", + "in": "path", + "description": "The key ConnectorId", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "The connectors entity to update.", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connectors" + } + } + } + }, + "responses": { + "200": { + "description": "EntitySet connectors", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connectors" + } + } + } + }, + "204": { + "description": "connectors updated", + "content": {} + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + }, + "delete": { + "summary": "Delete connectors", + "description": "Deletes the specified connectors object.", + "tags": [ + "connectors" + ], + "operationId": "deleteconnectors", + "parameters": [ + { + "name": "ConnectorId", + "in": "path", + "description": "The key ConnectorId", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "connectors deleted", + "content": {} + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/connectors('{ConnectorId}')/{propertyName}/$value": { + "get": { + "summary": "Return specified property value of specified connectors", + "description": "Returns property value of connectors object using the specified key and property name.", + "tags": [ + "connectors" + ], + "operationId": "getconnectorsProperty", + "parameters": [ + { + "name": "ConnectorId", + "in": "path", + "description": "The key ConnectorId", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "propertyName", + "in": "path", + "schema": { + "type": "string" + }, + "description": "The property name", + "required": true + } + ], + "responses": { + "200": { + "description": "The property value", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/files": { + "get": { + "summary": "Return files", + "description": "Returns records from the files entity that match the specified query parameters. All records will be returned when no parameters are specified.", + "tags": [ + "files" + ], + "operationId": "getAllfiles", + "parameters": [ + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "A comma-separated list of properties to include in the results. When this field is left empty, all properties will be returned." + }, + { + "name": "$orderby", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Order the results by this property in ascending or descending order. Example for ascending: 'Name ASC' Example for descending: 'Name DESC'" + }, + { + "name": "$top", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "The number of results to return." + }, + { + "name": "$skip", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "This is the offset of results to skip when returning results." + }, + { + "name": "$count", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "When set, the results will return a count of results and not the actual results." + }, + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "files response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/files" + } + } + } + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + }, + "post": { + "summary": "Create files", + "description": "Creates a new files object with the specified parameters.", + "tags": [ + "files" + ], + "operationId": "createfiles", + "requestBody": { + "description": "The files entity to post", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/files" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "files created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/files" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/files/$count": { + "get": { + "summary": "Return count of files", + "description": "Returns count of records from the files entity that match the specified query parameters. All count will be returned when no parameters are specified.", + "tags": [ + "files" + ], + "operationId": "getfilesCount", + "parameters": [ + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "The count", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string", + "format": "int32" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/files(ConnectorId='{ConnectorId}',Folder='{Folder}',Filename='{Filename}',MessageId='{MessageId}')": { + "get": { + "summary": "Return a single files", + "description": "Returns a single files object using the specified key.", + "tags": [ + "files" + ], + "operationId": "getfiles", + "parameters": [ + { + "name": "ConnectorId", + "in": "path", + "description": "The key ConnectorId", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Folder", + "in": "path", + "description": "The key Folder", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Filename", + "in": "path", + "description": "The key Filename", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "MessageId", + "in": "path", + "description": "The key MessageId", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Select structural property" + } + ], + "responses": { + "200": { + "description": "files response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/files" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + }, + "put": { + "summary": "Update files", + "description": "Updates the specified files object.", + "tags": [ + "files" + ], + "operationId": "updatefiles", + "parameters": [ + { + "name": "ConnectorId", + "in": "path", + "description": "The key ConnectorId", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Folder", + "in": "path", + "description": "The key Folder", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Filename", + "in": "path", + "description": "The key Filename", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "MessageId", + "in": "path", + "description": "The key MessageId", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "The files entity to update.", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/files" + } + } + } + }, + "responses": { + "200": { + "description": "EntitySet files", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/files" + } + } + } + }, + "204": { + "description": "files updated", + "content": {} + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + }, + "delete": { + "summary": "Delete files", + "description": "Deletes the specified files object.", + "tags": [ + "files" + ], + "operationId": "deletefiles", + "parameters": [ + { + "name": "ConnectorId", + "in": "path", + "description": "The key ConnectorId", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Folder", + "in": "path", + "description": "The key Folder", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Filename", + "in": "path", + "description": "The key Filename", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "MessageId", + "in": "path", + "description": "The key MessageId", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "files deleted", + "content": {} + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/files(ConnectorId='{ConnectorId}',Folder='{Folder}',Filename='{Filename}',MessageId='{MessageId}')/{propertyName}/$value": { + "get": { + "summary": "Return specified property value of specified files", + "description": "Returns property value of files object using the specified key and property name.", + "tags": [ + "files" + ], + "operationId": "getfilesProperty", + "parameters": [ + { + "name": "ConnectorId", + "in": "path", + "description": "The key ConnectorId", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Folder", + "in": "path", + "description": "The key Folder", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Filename", + "in": "path", + "description": "The key Filename", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "MessageId", + "in": "path", + "description": "The key MessageId", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "propertyName", + "in": "path", + "schema": { + "type": "string" + }, + "description": "The property name", + "required": true + } + ], + "responses": { + "200": { + "description": "The property value", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/logs": { + "get": { + "summary": "Return logs", + "description": "Returns records from the logs entity that match the specified query parameters. All records will be returned when no parameters are specified.", + "tags": [ + "logs" + ], + "operationId": "getAlllogs", + "parameters": [ + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "A comma-separated list of properties to include in the results. When this field is left empty, all properties will be returned." + }, + { + "name": "$orderby", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Order the results by this property in ascending or descending order. Example for ascending: 'Name ASC' Example for descending: 'Name DESC'" + }, + { + "name": "$top", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "The number of results to return." + }, + { + "name": "$skip", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "This is the offset of results to skip when returning results." + }, + { + "name": "$count", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "When set, the results will return a count of results and not the actual results." + }, + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "logs response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/logs" + } + } + } + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/logs/$count": { + "get": { + "summary": "Return count of logs", + "description": "Returns count of records from the logs entity that match the specified query parameters. All count will be returned when no parameters are specified.", + "tags": [ + "logs" + ], + "operationId": "getlogsCount", + "parameters": [ + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "The count", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string", + "format": "int32" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/logs('{Id}')": { + "get": { + "summary": "Return a single logs", + "description": "Returns a single logs object using the specified key.", + "tags": [ + "logs" + ], + "operationId": "getlogs", + "parameters": [ + { + "name": "Id", + "in": "path", + "description": "The key Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Select structural property" + } + ], + "responses": { + "200": { + "description": "logs response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/logs" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/logs('{Id}')/{propertyName}/$value": { + "get": { + "summary": "Return specified property value of specified logs", + "description": "Returns property value of logs object using the specified key and property name.", + "tags": [ + "logs" + ], + "operationId": "getlogsProperty", + "parameters": [ + { + "name": "Id", + "in": "path", + "description": "The key Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "propertyName", + "in": "path", + "schema": { + "type": "string" + }, + "description": "The property name", + "required": true + } + ], + "responses": { + "200": { + "description": "The property value", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/ports": { + "get": { + "summary": "Return ports", + "description": "Returns records from the ports entity that match the specified query parameters. All records will be returned when no parameters are specified.", + "tags": [ + "ports" + ], + "operationId": "getAllports", + "parameters": [ + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "A comma-separated list of properties to include in the results. When this field is left empty, all properties will be returned." + }, + { + "name": "$orderby", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Order the results by this property in ascending or descending order. Example for ascending: 'Name ASC' Example for descending: 'Name DESC'" + }, + { + "name": "$top", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "The number of results to return." + }, + { + "name": "$skip", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "This is the offset of results to skip when returning results." + }, + { + "name": "$count", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "When set, the results will return a count of results and not the actual results." + }, + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "ports response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ports" + } + } + } + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + }, + "post": { + "summary": "Create ports", + "description": "Creates a new ports object with the specified parameters.", + "tags": [ + "ports" + ], + "operationId": "createports", + "requestBody": { + "description": "The ports entity to post", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ports" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "ports created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ports" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/ports/$count": { + "get": { + "summary": "Return count of ports", + "description": "Returns count of records from the ports entity that match the specified query parameters. All count will be returned when no parameters are specified.", + "tags": [ + "ports" + ], + "operationId": "getportsCount", + "parameters": [ + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "The count", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string", + "format": "int32" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/ports('{PortId}')": { + "get": { + "summary": "Return a single ports", + "description": "Returns a single ports object using the specified key.", + "tags": [ + "ports" + ], + "operationId": "getports", + "parameters": [ + { + "name": "PortId", + "in": "path", + "description": "The key PortId", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Select structural property" + } + ], + "responses": { + "200": { + "description": "ports response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ports" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + }, + "put": { + "summary": "Update ports", + "description": "Updates the specified ports object.", + "tags": [ + "ports" + ], + "operationId": "updateports", + "parameters": [ + { + "name": "PortId", + "in": "path", + "description": "The key PortId", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "The ports entity to update.", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ports" + } + } + } + }, + "responses": { + "200": { + "description": "EntitySet ports", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ports" + } + } + } + }, + "204": { + "description": "ports updated", + "content": {} + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + }, + "delete": { + "summary": "Delete ports", + "description": "Deletes the specified ports object.", + "tags": [ + "ports" + ], + "operationId": "deleteports", + "parameters": [ + { + "name": "PortId", + "in": "path", + "description": "The key PortId", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "ports deleted", + "content": {} + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/ports('{PortId}')/{propertyName}/$value": { + "get": { + "summary": "Return specified property value of specified ports", + "description": "Returns property value of ports object using the specified key and property name.", + "tags": [ + "ports" + ], + "operationId": "getportsProperty", + "parameters": [ + { + "name": "PortId", + "in": "path", + "description": "The key PortId", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "propertyName", + "in": "path", + "schema": { + "type": "string" + }, + "description": "The property name", + "required": true + } + ], + "responses": { + "200": { + "description": "The property value", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/profile": { + "get": { + "summary": "Return profile", + "description": "Returns records from the profile entity that match the specified query parameters. All records will be returned when no parameters are specified.", + "tags": [ + "profile" + ], + "operationId": "getAllprofile", + "parameters": [ + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "A comma-separated list of properties to include in the results. When this field is left empty, all properties will be returned." + }, + { + "name": "$orderby", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Order the results by this property in ascending or descending order. Example for ascending: 'Name ASC' Example for descending: 'Name DESC'" + }, + { + "name": "$top", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "The number of results to return." + }, + { + "name": "$skip", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "This is the offset of results to skip when returning results." + }, + { + "name": "$count", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "When set, the results will return a count of results and not the actual results." + }, + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "profile response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/profile" + } + } + } + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + }, + "put": { + "summary": "Update profile", + "description": "Updates the specified profile object.", + "tags": [ + "profile" + ], + "operationId": "updateprofile", + "requestBody": { + "description": "The profile entity to update.", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/profile" + } + } + } + }, + "responses": { + "204": { + "description": "profile updated", + "content": {} + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/profile/$count": { + "get": { + "summary": "Return count of profile", + "description": "Returns count of records from the profile entity that match the specified query parameters. All count will be returned when no parameters are specified.", + "tags": [ + "profile" + ], + "operationId": "getprofileCount", + "parameters": [ + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "The count", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string", + "format": "int32" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/requests": { + "get": { + "summary": "Return requests", + "description": "Returns records from the requests entity that match the specified query parameters. All records will be returned when no parameters are specified.", + "tags": [ + "requests" + ], + "operationId": "getAllrequests", + "parameters": [ + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "A comma-separated list of properties to include in the results. When this field is left empty, all properties will be returned." + }, + { + "name": "$orderby", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Order the results by this property in ascending or descending order. Example for ascending: 'Name ASC' Example for descending: 'Name DESC'" + }, + { + "name": "$top", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "The number of results to return." + }, + { + "name": "$skip", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "This is the offset of results to skip when returning results." + }, + { + "name": "$count", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "When set, the results will return a count of results and not the actual results." + }, + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "requests response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/requests" + } + } + } + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/requests/$count": { + "get": { + "summary": "Return count of requests", + "description": "Returns count of records from the requests entity that match the specified query parameters. All count will be returned when no parameters are specified.", + "tags": [ + "requests" + ], + "operationId": "getrequestsCount", + "parameters": [ + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "The count", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string", + "format": "int32" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/requests('{Id}')": { + "get": { + "summary": "Return a single requests", + "description": "Returns a single requests object using the specified key.", + "tags": [ + "requests" + ], + "operationId": "getrequests", + "parameters": [ + { + "name": "Id", + "in": "path", + "description": "The key Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Select structural property" + } + ], + "responses": { + "200": { + "description": "requests response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/requests" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/requests('{Id}')/{propertyName}/$value": { + "get": { + "summary": "Return specified property value of specified requests", + "description": "Returns property value of requests object using the specified key and property name.", + "tags": [ + "requests" + ], + "operationId": "getrequestsProperty", + "parameters": [ + { + "name": "Id", + "in": "path", + "description": "The key Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "propertyName", + "in": "path", + "schema": { + "type": "string" + }, + "description": "The property name", + "required": true + } + ], + "responses": { + "200": { + "description": "The property value", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/transactions": { + "get": { + "summary": "Return transactions", + "description": "Returns records from the transactions entity that match the specified query parameters. All records will be returned when no parameters are specified.", + "tags": [ + "transactions" + ], + "operationId": "getAlltransactions", + "parameters": [ + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "A comma-separated list of properties to include in the results. When this field is left empty, all properties will be returned." + }, + { + "name": "$orderby", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Order the results by this property in ascending or descending order. Example for ascending: 'Name ASC' Example for descending: 'Name DESC'" + }, + { + "name": "$top", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "The number of results to return." + }, + { + "name": "$skip", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "This is the offset of results to skip when returning results." + }, + { + "name": "$count", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "When set, the results will return a count of results and not the actual results." + }, + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "transactions response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/transactions" + } + } + } + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/transactions/$count": { + "get": { + "summary": "Return count of transactions", + "description": "Returns count of records from the transactions entity that match the specified query parameters. All count will be returned when no parameters are specified.", + "tags": [ + "transactions" + ], + "operationId": "gettransactionsCount", + "parameters": [ + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "The count", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string", + "format": "int32" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/transactions('{Id}')": { + "get": { + "summary": "Return a single transactions", + "description": "Returns a single transactions object using the specified key.", + "tags": [ + "transactions" + ], + "operationId": "gettransactions", + "parameters": [ + { + "name": "Id", + "in": "path", + "description": "The key Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Select structural property" + } + ], + "responses": { + "200": { + "description": "transactions response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/transactions" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + }, + "delete": { + "summary": "Delete transactions", + "description": "Deletes the specified transactions object.", + "tags": [ + "transactions" + ], + "operationId": "deletetransactions", + "parameters": [ + { + "name": "Id", + "in": "path", + "description": "The key Id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "transactions deleted", + "content": {} + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/transactions('{Id}')/{propertyName}/$value": { + "get": { + "summary": "Return specified property value of specified transactions", + "description": "Returns property value of transactions object using the specified key and property name.", + "tags": [ + "transactions" + ], + "operationId": "gettransactionsProperty", + "parameters": [ + { + "name": "Id", + "in": "path", + "description": "The key Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "propertyName", + "in": "path", + "schema": { + "type": "string" + }, + "description": "The property name", + "required": true + } + ], + "responses": { + "200": { + "description": "The property value", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/workspaces": { + "get": { + "summary": "Return workspaces", + "description": "Returns records from the workspaces entity that match the specified query parameters. All records will be returned when no parameters are specified.", + "tags": [ + "workspaces" + ], + "operationId": "getAllworkspaces", + "parameters": [ + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "A comma-separated list of properties to include in the results. When this field is left empty, all properties will be returned." + }, + { + "name": "$orderby", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Order the results by this property in ascending or descending order. Example for ascending: 'Name ASC' Example for descending: 'Name DESC'" + }, + { + "name": "$top", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "The number of results to return." + }, + { + "name": "$skip", + "in": "query", + "schema": { + "type": "integer" + }, + "description": "This is the offset of results to skip when returning results." + }, + { + "name": "$count", + "in": "query", + "schema": { + "type": "boolean" + }, + "description": "When set, the results will return a count of results and not the actual results." + }, + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "workspaces response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/workspaces" + } + } + } + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + }, + "post": { + "summary": "Create workspaces", + "description": "Creates a new workspaces object with the specified parameters.", + "tags": [ + "workspaces" + ], + "operationId": "createworkspaces", + "requestBody": { + "description": "The workspaces entity to post", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/workspaces" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "workspaces created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/workspaces" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/workspaces/$count": { + "get": { + "summary": "Return count of workspaces", + "description": "Returns count of records from the workspaces entity that match the specified query parameters. All count will be returned when no parameters are specified.", + "tags": [ + "workspaces" + ], + "operationId": "getworkspacesCount", + "parameters": [ + { + "name": "$filter", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Use this to filter the results by specific property values. For example, you can use the following filter to retrieve records with the name 'John': $filter=Name eq 'John'" + } + ], + "responses": { + "200": { + "description": "The count", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string", + "format": "int32" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/workspaces('{Workspaceid}')": { + "get": { + "summary": "Return a single workspaces", + "description": "Returns a single workspaces object using the specified key.", + "tags": [ + "workspaces" + ], + "operationId": "getworkspaces", + "parameters": [ + { + "name": "Workspaceid", + "in": "path", + "description": "The key Workspaceid", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "$select", + "in": "query", + "schema": { + "type": "string" + }, + "description": "Select structural property" + } + ], + "responses": { + "200": { + "description": "workspaces response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/workspaces" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + }, + "delete": { + "summary": "Delete workspaces", + "description": "Deletes the specified workspaces object.", + "tags": [ + "workspaces" + ], + "operationId": "deleteworkspaces", + "parameters": [ + { + "name": "Workspaceid", + "in": "path", + "description": "The key Workspaceid", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "workspaces deleted", + "content": {} + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/workspaces('{Workspaceid}')/{propertyName}/$value": { + "get": { + "summary": "Return specified property value of specified workspaces", + "description": "Returns property value of workspaces object using the specified key and property name.", + "tags": [ + "workspaces" + ], + "operationId": "getworkspacesProperty", + "parameters": [ + { + "name": "Workspaceid", + "in": "path", + "description": "The key Workspaceid", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "propertyName", + "in": "path", + "schema": { + "type": "string" + }, + "description": "The property name", + "required": true + } + ], + "responses": { + "200": { + "description": "The property value", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "type": "string" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "text/plain; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ] + } + }, + "/archiveLogs": { + "post": { + "summary": "Archives log files for the specified connector(s). This removes files from the application database but retains the files in an archive on disk for auditing at a later date.", + "description": "Archives log files for the specified connector(s). This removes files from the application database but retains the files in an archive on disk for auditing at a later date.", + "tags": [ + "archiveLogs" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/archiveLogs_input" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "The action result" + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/copyConnector": { + "post": { + "summary": "This action will copy the connector settings to a new connector based on the newly specified Id.", + "description": "This action will copy the connector settings to a new connector based on the newly specified Id.", + "tags": [ + "copyConnector" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/copyConnector_input" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "The action result" + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/copyPort": { + "post": { + "summary": "This action will copy the port settings to a new port based on the newly specified Id.", + "description": "This action will copy the port settings to a new port based on the newly specified Id.", + "tags": [ + "copyPort" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/copyPort_input" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "The action result" + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/createCert": { + "post": { + "summary": "Create the public/private certificate key pair.", + "description": "Create the public/private certificate key pair.", + "tags": [ + "createCert" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/createCert_input" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "The action result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/createCert_output" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/deleteLogs": { + "post": { + "summary": "Delete all the application and access logs older than the specified timestamp.", + "description": "Delete all the application and access logs older than the specified timestamp.", + "tags": [ + "deleteLogs" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/deleteLogs_input" + } + } + } + }, + "responses": { + "200": { + "description": "The action result" + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/deleteTransactions": { + "post": { + "summary": "Delete all the transaction logs for the connector older than the specified timestamp.", + "description": "Delete all the transaction logs for the connector older than the specified timestamp.", + "tags": [ + "deleteTransactions" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/deleteTransactions_input" + } + } + } + }, + "responses": { + "200": { + "description": "The action result" + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/downloadFile": { + "post": { + "summary": "Download files for this connector.", + "description": "Download files for this connector.", + "tags": [ + "downloadFile" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/downloadFile_input" + } + } + } + }, + "responses": { + "200": { + "description": "The action result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/downloadFile_output" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/exchangeCert": { + "post": { + "summary": "Exchange the specified certificate.", + "description": "Exchange the specified certificate.", + "tags": [ + "exchangeCert" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/exchangeCert_input" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "The action result" + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/getTransactionLogs": { + "post": { + "summary": "Retrieves the transaction details of the application.", + "description": "Retrieves the transaction details of the application.", + "tags": [ + "getTransactionLogs" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/getTransactionLogs_input" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "The action result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/getTransactionLogs_output" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/importProfiles": { + "post": { + "summary": "This action will import partner/connector profiles from previous versions of the application.", + "description": "This action will import partner/connector profiles from previous versions of the application.", + "tags": [ + "importProfiles" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/importProfiles_input" + } + } + } + }, + "responses": { + "200": { + "description": "The action result" + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/refreshTransactions": { + "post": { + "summary": "Refresh the transaction log for the specified connector.", + "description": "Refresh the transaction log for the specified connector.", + "tags": [ + "refreshTransactions" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/refreshTransactions_input" + } + } + } + }, + "responses": { + "200": { + "description": "The action result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/refreshTransactions_output" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/restartFile": { + "post": { + "summary": "Restart an outgoing transmission for the specified file.", + "description": "Restart an outgoing transmission for the specified file.", + "tags": [ + "restartFile" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/restartFile_input" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "The action result" + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + }, + "/sendFile": { + "post": { + "summary": "Sends a file using the specified connector.", + "description": "Sends a file using the specified connector.", + "tags": [ + "sendFile" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sendFile_input" + } + } + } + }, + "responses": { + "200": { + "description": "The action result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sendFile_output" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CDataError" + } + } + } + } + }, + "security": [ + { + "basic": [] + }, + { + "authtoken_header": [] + }, + { + "authtoken_query": [] + } + ], + "parameters": [] + } + } + }, + "components": { + "schemas": { + "certificates": { + "type": "object", + "properties": { + "Name": { + "description": "The name of the certificate file.", + "type": "string" + }, + "Data": { + "description": "The base-64 encoded contents of the certificate file.", + "type": "string" + }, + "StoreType": { + "description": "The store type.", + "type": "string" + }, + "Subject": { + "description": "The certificate subject.", + "type": "string" + }, + "Issuer": { + "description": "The issuer of the certificate.", + "type": "string" + }, + "IssuedTo": { + "description": "The common name of certificate subject.", + "type": "string" + }, + "IssuedBy": { + "description": "The common name of certificate issuer.", + "type": "string" + }, + "EffectiveDate": { + "description": "The effective date of the certificate.", + "type": "string" + }, + "ExpirationDate": { + "description": "The expiration date of the certificate.", + "type": "string" + }, + "ExpirationDays": { + "description": "The days until the expiration date of the certificate.", + "type": "integer", + "format": "int32" + }, + "Serialnumber": { + "description": "The serial number of the certificate.", + "type": "string" + }, + "Thumbprint": { + "description": "The SHA1 thumbprint of the certificate.", + "type": "string" + }, + "Keysize": { + "description": "The key size of the certificate.", + "type": "string" + }, + "SignatureAlgorithm": { + "description": "The algorithm used to sign the certificate.", + "type": "string" + }, + "ConnectorId": { + "description": "The Id of the connector configured to use the certificate.", + "type": "string" + }, + "PortId": { + "description": "The Id of the port configured to use the certificate.", + "type": "string" + } + }, + "required": [ + "Name" + ] + }, + "connectors": { + "type": "object", + "properties": { + "ConnectorId": { + "description": "The id of the connector.", + "type": "string" + }, + "Workspace": { + "description": "The workspace of the connector.", + "type": "string" + }, + "ConnectorType": { + "description": "The type of the connector.", + "type": "string" + }, + "ParentConnector": { + "description": "The parent connector separated by a comma.", + "type": "string" + } + }, + "required": [ + "ConnectorId" + ] + }, + "files": { + "type": "object", + "properties": { + "ConnectorId": { + "description": "The id of the connector.", + "type": "string" + }, + "PortId": { + "description": "The id of the port.", + "type": "string" + }, + "Folder": { + "description": "The folder of the file.", + "type": "string" + }, + "Filename": { + "description": "The name of the file.", + "type": "string" + }, + "MessageId": { + "description": "The message id of the file. This will only have a value if the file is a message.", + "type": "string" + }, + "Subfolder": { + "description": "The subfolder of the file.", + "type": "string" + }, + "TimeCreated": { + "description": "The time the file was created.", + "type": "string", + "format": "date-time" + }, + "FilePath": { + "description": "The full path to the file.", + "type": "string" + }, + "FileSize": { + "description": "The size of the file.", + "type": "integer", + "format": "int32" + }, + "Content": { + "description": "The Base64 encode file contents. This will only be returned when a specific file is requested. This field cannot be used when filtering results using the $filter parameter.", + "type": "string" + } + }, + "required": [ + "ConnectorId", + "Folder", + "Filename", + "MessageId" + ] + }, + "logs": { + "type": "object", + "properties": { + "Id": { + "description": "The Id of the log message.", + "type": "string" + }, + "Type": { + "description": "The type of the log message.", + "type": "string" + }, + "Timestamp": { + "description": "The time when the event occurred.", + "type": "string", + "format": "date-time" + }, + "Script": { + "description": "The app causing the error.", + "type": "string" + }, + "Message": { + "description": "The message.", + "type": "string" + } + }, + "required": [ + "Id" + ] + }, + "ports": { + "type": "object", + "properties": { + "PortId": { + "description": "The id of the port.", + "type": "string" + }, + "Workspace": { + "description": "The workspace of the port.", + "type": "string" + }, + "PortType": { + "description": "The type of the port.", + "type": "string" + }, + "ParentPort": { + "description": "The parent ports separated by a comma.", + "type": "string" + } + }, + "required": [ + "PortId" + ] + }, + "profile": { + "type": "object", + "properties": { + "HeartbeatInterval": { + "description": "The interval in which the application will perform scheduled tasks such as sending files to your trading partners.", + "type": "integer", + "format": "int32" + }, + "NotifyEmail": { + "description": "Send an email to the specified email addresses when an error is encountered.", + "type": "string" + }, + "NotifyEmailFrom": { + "description": "The sender of notification emails.", + "type": "string" + }, + "NotifyEmailTo": { + "description": "The receiver of notification emails.", + "type": "string" + }, + "NotifyEmailSubject": { + "description": "The subject of notification emails.", + "type": "string" + }, + "SMTPServer": { + "description": "The host name or IP address of your SMTP server.", + "type": "string" + }, + "SMTPUser": { + "description": "The username to authenticate to your SMTP server.", + "type": "string" + }, + "SMTPPassword": { + "description": "The password to authenticate to your SMTP server.", + "type": "string" + }, + "SMTPPort": { + "description": "The port of your SMTP server.", + "type": "string" + }, + "SMTPSSLMode": { + "description": "The SSL mode of your SMTP server.", + "type": "string" + }, + "SendStatusReport": { + "description": "Send a status report to the email address .", + "type": "boolean" + }, + "SendReportInterval": { + "description": "The interval of send a status report to the email address.", + "type": "string" + }, + "NotifyWindowsEvent": { + "description": "Write error messages to the Windows Application Event Log.", + "type": "boolean" + }, + "NotifyStopStart": { + "description": "Log when the application starts and stops in the event log.", + "type": "boolean" + }, + "ProxyType": { + "description": "The type of proxy to connect through.", + "type": "string" + }, + "ProxyHost": { + "description": "The host name or IP address of the proxy.", + "type": "string" + }, + "ProxyPort": { + "description": "The port of your proxy.", + "type": "string" + }, + "ProxyUser": { + "description": "The username to use when authenticating to your proxy.", + "type": "string" + }, + "ProxyPassword": { + "description": "The password to use when authenticating to your proxy.", + "type": "string" + }, + "ProxyAuthscheme": { + "description": "The auth scheme to use when authenticating to your proxy.", + "type": "string" + } + } + }, + "requests": { + "type": "object", + "properties": { + "Id": { + "description": "The Id of the request.", + "type": "string" + }, + "Timestamp": { + "description": "The time when the request was handled.", + "type": "string", + "format": "date-time" + }, + "URL": { + "description": "The URL of the request.", + "type": "string" + }, + "Method": { + "description": "The HTTP method.", + "type": "string" + }, + "User": { + "description": "The user.", + "type": "string" + }, + "RemoteIP": { + "description": "The remote IP address from the request.", + "type": "string" + }, + "Script": { + "description": "The script.", + "type": "string" + }, + "Bytes": { + "description": "The size of the request.", + "type": "integer", + "format": "int64" + }, + "Time": { + "description": "The time of the request.", + "type": "integer", + "format": "int32" + }, + "Error": { + "description": "The error of the request.", + "type": "string" + }, + "status": { + "description": "The status of the request.", + "type": "string" + } + }, + "required": [ + "Id" + ] + }, + "transactions": { + "type": "object", + "properties": { + "Id": { + "description": "The id of the logs.", + "type": "string" + }, + "ConnectorId": { + "description": "The id of the connector.", + "type": "string" + }, + "PortId": { + "description": "The id of the port.", + "type": "string" + }, + "MessageId": { + "description": "The message Id.", + "type": "string" + }, + "Direction": { + "description": "The direction of the file transaction.", + "type": "string" + }, + "Status": { + "description": "The status of the transaction.", + "type": "string" + }, + "Filename": { + "description": "The name of the file being transferred.", + "type": "string" + }, + "FilePath": { + "description": "The full path to the file that was sent or received.", + "type": "string" + }, + "FileSize": { + "description": "The size of the file.", + "type": "integer", + "format": "int32" + }, + "Timestamp": { + "description": "The time that the file was sent or received.", + "type": "string", + "format": "date-time" + }, + "ETag": { + "description": "The ETag for the file being transferred. This is only available when using AS2 Restart.", + "type": "string" + } + }, + "required": [ + "Id" + ] + }, + "workspaces": { + "type": "object", + "properties": { + "Workspaceid": { + "description": "The Id of the workspace.", + "type": "string" + } + }, + "required": [ + "Workspaceid" + ] + }, + "archiveLogs_input": { + "type": "object", + "required": [ + "Age" + ], + "properties": { + "Age": { + "type": "string", + "description": "Minimum file age of the files to be archived, in days. Files more recent than the specified age will not be archived." + }, + "ConnectorId": { + "type": "string", + "description": "The Id of the connector to be archived. If not set, all connectors will be archived." + }, + "PortId": { + "type": "string", + "description": "The Id of the Port to be archived. If not set, all ports will be archived." + }, + "Folder": { + "type": "string", + "description": "Archive directory name. By default, the application will create an 'Archive' directory in the connector folder." + }, + "DeleteTransactions": { + "type": "string", + "description": "If true, entries corresponding to the archived logs will be deleted from the corresponding Transactions table in the database. Default is true." + } + } + }, + "copyConnector_input": { + "type": "object", + "required": [ + "ConnectorId", + "NewConnectorId" + ], + "properties": { + "ConnectorId": { + "type": "string", + "description": "The Id of the connector to copy." + }, + "NewConnectorId": { + "type": "string", + "description": "The Id of the new connector." + } + } + }, + "copyPort_input": { + "type": "object", + "required": [ + "PortId", + "NewPortId" + ], + "properties": { + "PortId": { + "type": "string", + "description": "The Id of the port to copy." + }, + "NewPortId": { + "type": "string", + "description": "The Id of the new port." + } + } + }, + "createCert_input": { + "type": "object", + "required": [ + "Filename", + "CommonName", + "Serialnumber", + "Password" + ], + "properties": { + "Filename": { + "type": "string", + "description": "The file name." + }, + "CommonName": { + "type": "string", + "description": "The common name." + }, + "Serialnumber": { + "type": "string", + "description": "The serial number." + }, + "Password": { + "type": "string", + "description": "The password." + }, + "Country": { + "type": "string", + "description": "The country." + }, + "Email": { + "type": "string", + "description": "The email." + }, + "Expiration": { + "type": "string", + "description": "The expiration (in years).", + "default": "1" + }, + "KeySize": { + "type": "string", + "description": "The key size.", + "default": "2048" + }, + "PublicKeyType": { + "type": "string", + "description": "The public key type.", + "default": "X.509" + }, + "SignatureAlgorithm": { + "type": "string", + "description": "The signature algorithm.", + "default": "SHA256" + }, + "Locality": { + "type": "string", + "description": "The locality." + }, + "Organization": { + "type": "string", + "description": "The organization." + }, + "OrganizationalUnit": { + "type": "string", + "description": "The organizational unit." + }, + "State": { + "type": "string", + "description": "The state." + } + } + }, + "createCert_output": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "The file name." + }, + "Password": { + "type": "string", + "description": "The password." + }, + "Pubname": { + "type": "string", + "description": "The public cert file name." + } + } + } + }, + "deleteLogs_input": { + "type": "object", + "properties": { + "TimeStamp": { + "type": "string", + "description": "When set, all logs older than this value will be deleted. If this field is left empty, all logs will be deleted." + } + } + }, + "deleteTransactions_input": { + "type": "object", + "properties": { + "ConnectorId": { + "type": "string", + "description": "The id of the connector." + }, + "PortId": { + "type": "string", + "description": "The id of the port." + }, + "Direction": { + "type": "string", + "description": "The direction of the file transaction." + }, + "TimeStamp": { + "type": "string", + "description": "When set, all transaction logs older than this value will be deleted. If this field is left empty, all logs will be deleted." + } + } + }, + "downloadFile_input": { + "type": "object", + "properties": { + "ConnectorId": { + "type": "string", + "description": "The id of the connector. Required." + }, + "PortId": { + "type": "string", + "description": "The id of the port." + }, + "File": { + "type": "string", + "description": "The file to be downloaded. When file is not supplied, all files will be downloaded based on the connector's settings." + }, + "RemotePath": { + "type": "string", + "description": "The path to overrides the Remote path settings in the connector(Only used for FTP, SFTP)" + } + } + }, + "downloadFile_output": { + "type": "array", + "items": { + "type": "object", + "properties": { + "MessageId": { + "type": "string", + "description": "The message id of the file." + }, + "Subfolder": { + "type": "string", + "description": "The subfolder of the file." + }, + "File": { + "type": "string", + "description": "The name of the file." + }, + "FileSize": { + "type": "string", + "description": "The size of the file." + }, + "TimeCreated": { + "type": "string", + "description": "The time the file was created." + }, + "ErrorMessage": { + "type": "string", + "description": "When multiple files are transferred over the same connection, this will return the error message if an individual file transfer failed. If this is empty, the file transfer was successful." + } + } + } + }, + "exchangeCert_input": { + "type": "object", + "required": [ + "Certificate", + "ExchangeType" + ], + "properties": { + "ConnectorId": { + "type": "string", + "description": "The connector id. Required." + }, + "PortId": { + "type": "string", + "description": "The port id." + }, + "Certificate": { + "type": "string", + "description": "The certificate to exchange." + }, + "ExchangeType": { + "type": "string", + "description": "The exchange type. Validate values are AS2(Request, Response), OFTP(Deliver, Request, Replace)" + }, + "CertificatePassword": { + "type": "string", + "description": "The password of certificate(AS2)." + }, + "CertificateUsage": { + "type": "string", + "description": "The cryptographic function(s) for the certificate. Validate values are 'Encryption,Verification,ServerTLS,ClientTLS'(AS2)." + }, + "ResponseURL": { + "type": "string", + "description": "The URL which the response should be sent(AS2)." + } + } + }, + "getTransactionLogs_input": { + "type": "object", + "required": [ + "MessageId", + "Direction" + ], + "properties": { + "ConnectorId": { + "type": "string", + "description": "The id of the connector. Required." + }, + "PortId": { + "type": "string", + "description": "The id of the port." + }, + "MessageId": { + "type": "string", + "description": "The message Id." + }, + "Direction": { + "type": "string", + "description": "The direction of the transaction." + }, + "Type": { + "type": "string", + "description": "The type of the log file." + }, + "IncludeContent": { + "type": "string", + "description": "Whether to return the content of the log file.", + "default": "False" + } + } + }, + "getTransactionLogs_output": { + "type": "array", + "items": { + "type": "object", + "properties": { + "TimeCreated": { + "type": "string", + "description": "The time the log file was created." + }, + "Type": { + "type": "string", + "description": "The type of the log file." + }, + "File": { + "type": "string", + "description": "The name of the log file." + }, + "Path": { + "type": "string", + "description": "The path of the log file." + }, + "Content": { + "type": "string", + "description": "The Base64 encoded content of the log file." + } + } + } + }, + "importProfiles_input": { + "type": "object", + "properties": { + "DataDirectory": { + "type": "string", + "description": "The data directory or a zipped file where the profiles are stored." + }, + "Workspace": { + "type": "string", + "description": "The name of the workspace." + }, + "InputName": { + "type": "string", + "description": "The name of the form input when uploading files from a form." + }, + "DuplicateAction": { + "type": "string", + "description": "This setting determines how to handle profiles that already exist during an import.", + "default": "Overwrite" + }, + "IncludeDirectories": { + "type": "string", + "description": "Whether to retain directories on non-default locations.", + "default": "False" + } + } + }, + "refreshTransactions_input": { + "type": "object", + "properties": { + "ConnectorId": { + "type": "string", + "description": "The id of the connector. Required" + }, + "PortId": { + "type": "string", + "description": "The id of the port." + } + } + }, + "refreshTransactions_output": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Result": { + "type": "string", + "description": "The result of rebuilding the transactions cache." + } + } + } + }, + "restartFile_input": { + "type": "object", + "required": [ + "Filename", + "etag" + ], + "properties": { + "ConnectorId": { + "type": "string", + "description": "The id of the partner/connector. Required." + }, + "PortId": { + "type": "string", + "description": "The id of the partner/port." + }, + "Filename": { + "type": "string", + "description": "The file name." + }, + "etag": { + "type": "string", + "description": "The ETag." + } + } + }, + "sendFile_input": { + "type": "object", + "properties": { + "ConnectorId": { + "type": "string", + "description": "The id of the connector. Required." + }, + "PortId": { + "type": "string", + "description": "The id of the port." + }, + "File": { + "type": "string", + "description": "The file name." + }, + "Subfolder": { + "type": "string", + "description": "The subfolder of the file." + }, + "Attachment#": { + "type": "string", + "description": "The attachment file." + }, + "FormatResult": { + "type": "string", + "description": "Is format result." + } + } + }, + "sendFile_output": { + "type": "array", + "items": { + "type": "object", + "properties": { + "MessageId": { + "type": "string", + "description": "The message Id." + }, + "File": { + "type": "string", + "description": "The file name." + } + } + } + }, + "CDataError": { + "type": "object", + "properties": { + "error": { + "$ref": "#/components/schemas/CDataInError" + } + } + }, + "CDataInError": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + }, + "securitySchemes": { + "authtoken_header": { + "type": "apiKey", + "in": "header", + "name": "x-cdata-authtoken" + }, + "authtoken_query": { + "type": "apiKey", + "in": "query", + "name": "@authtoken" + }, + "basic": { + "scheme": "basic", + "type": "http" + } + }, + "links": {}, + "callbacks": {} + }, + "externalDocs": { + "url": "https://ft-docs.netlify.app", + "description": "# Documentation\n\n## [links](https://ft-docs.netlify.app)" + }, + "security": [] +} \ No newline at end of file diff --git a/docs/platform/freight-trust-primitives.yaml b/docs/platform/freight-trust-primitives.yaml new file mode 100644 index 0000000..82c1208 --- /dev/null +++ b/docs/platform/freight-trust-primitives.yaml @@ -0,0 +1,1039 @@ +openapi: 3.0.0 +info: + title: Freight Document primitiveization Application + description: This is the api reference for creation of 211, 210, and other EDI spec'd shipping documents. + termsOfService: https://freighttrust.com/ + contact: + email: sam@freighttrust.com + license: + name: BSD-3-Clause + url: http://github.com/freight-chain/regulatory + version: 2-oas3 +externalDocs: + description: Find out more about Postman + url: http://postman.com +servers: +- url: https://api.freighttrust.net +tags: +- name: Proxy and Upgrade + description: Allows Freight Trust Network to Control the App +- name: EDI Primitive + description: Exposes the Freight Trust instrment primitive methods +paths: + /getNonce: + get: + summary: Returns the current message Freight Trust needs to sign to verify their + next post request + operationId: getNonce + responses: + "200": + description: Successful query + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "428": + description: Request Timeout + x-swagger-router-controller: Default + /primitive/name: + get: + tags: + - EDI Primitive + summary: Returns the primitive contract's name + operationId: name + responses: + "200": + description: Successful query + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/symbol: + get: + tags: + - EDI Primitive + summary: Returns the primitive contract's symbol + operationId: symbol + responses: + "200": + description: Successful query + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/totalSupply: + get: + tags: + - EDI Primitive + summary: An API endpoint to get the total supply of primitives in the ERC721 + contract + description: Returns the total supply of Non fungible primitives + operationId: totalSupply + responses: + "200": + description: Successful query + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/primitiveURI/: + get: + tags: + - EDI Primitive + summary: Enumerate primitives assigned to an owner + operationId: primitiveURIById + parameters: + - name: primitiveId + in: query + required: true + style: form + explode: true + schema: + maximum: 1.157920892373162E+77 + minimum: 0 + type: integer + responses: + "200": + description: Successful Query + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "420": + description: Bad Request + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/supportsInterface/: + get: + tags: + - EDI Primitive + summary: Returns an interface's support status + operationId: supportsInterfaceById + parameters: + - name: interfaceId + in: query + description: The Id of the interface to check + required: true + style: form + explode: true + schema: + maximum: 4294967295 + minimum: 0 + type: integer + responses: + "200": + description: Successful Query + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "420": + description: Bad Request + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/primitiveByIndex/: + get: + tags: + - EDI Primitive + summary: Returns the primitive identifier of the `index`-th primitive tracked + by the contract + operationId: primitiveByIndex + parameters: + - name: index + in: query + description: A counter less than `totalSupply()` + required: true + style: form + explode: true + schema: + maximum: 1.157920892373162E+77 + minimum: 0 + type: integer + responses: + "200": + description: Successful Query + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "420": + description: Bad Request + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/primitiveOfOwnerByIndex/: + get: + tags: + - EDI Primitive + summary: Returns the primitive identifier of the `index`-th primitive assigned + to the `owner` + operationId: primitiveOfOwnerByIndex + parameters: + - name: owner + in: query + description: The address of the owner + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + - name: index + in: query + description: The index of the primitive assigned to the owner + required: true + style: form + explode: true + schema: + maximum: 1.157920892373162E+77 + minimum: 0 + type: integer + responses: + "200": + description: Successful Query + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "420": + description: Bad Request + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/balanceOf/: + get: + tags: + - EDI Primitive + summary: Count all primitives assigned to an owner + operationId: balanceOf + parameters: + - name: owner + in: query + description: The address of the owner + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + responses: + "200": + description: Successful Query + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "420": + description: Bad Request + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/ownerOf/: + get: + tags: + - EDI Primitive + summary: Find the owner of an primitive + operationId: ownerOf + parameters: + - name: primitiveId + in: query + description: The Id of the primitive in question + required: true + style: form + explode: true + schema: + maximum: 1.157920892373162E+77 + minimum: 0 + type: integer + responses: + "200": + description: Successful Query + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "420": + description: Bad Request + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/safeTransferFrom/: + post: + tags: + - EDI Primitive + summary: Transfers the ownership of an primitive from one address to another + address + operationId: safeTransferFrom + parameters: + - name: from + in: query + description: The sender of the transfer + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + - name: to + in: query + description: The recipient of the transfer + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + - name: primitiveId + in: query + description: The id of the primitive to be transferred + required: true + style: form + explode: true + schema: + maximum: 1.157920892373162E+77 + minimum: 0 + type: integer + - name: extraData + in: query + description: Optional data to be sent with the transaction + required: false + style: form + explode: true + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/auth' + responses: + "200": + description: Successful Transfer + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "420": + description: Bad Request + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/transferFrom/: + post: + tags: + - EDI Primitive + summary: Transfer ownership of an primitive without safety checks + description: Allows Freight Trust to tranfer primitives unsafely -- THE CALLER + IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING primitiveS OR + ELSE THEY MAY BE PERMANENTLY LOST + operationId: transferFrom + parameters: + - name: from + in: query + description: The sender of the transfer + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + - name: to + in: query + description: The recipient of the transfer + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + - name: primitiveId + in: query + description: The id of the primitive to be transferred + required: true + style: form + explode: true + schema: + maximum: 1.157920892373162E+77 + minimum: 0 + type: integer + requestBody: + $ref: '#/components/requestBodies/auth' + responses: + "200": + description: Successful Transfer + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "420": + description: Bad Request + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/approve/: + post: + tags: + - EDI Primitive + summary: Change or reaffirm the approved address for an primitive + operationId: approve + parameters: + - name: approved + in: query + description: The address being approved + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + - name: primitiveId + in: query + description: The id of the primitive to be approved + required: true + style: form + explode: true + schema: + maximum: 1.157920892373162E+77 + minimum: 0 + type: integer + requestBody: + $ref: '#/components/requestBodies/auth' + responses: + "200": + description: Successful Approve + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "420": + description: Bad Request + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/setApprovalForAll/: + post: + tags: + - EDI Primitive + summary: Allows Freight Trust to issue univeral approval + description: Enable or disable approval for a third party (`operator`) to manage + all of Freight Trust's assets + operationId: setApprovalForAll + parameters: + - name: operator + in: query + description: Address to add to the set of authorized operators + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + - name: approved + in: query + description: True if the operator is approved, false to revoke approval + required: true + style: form + explode: true + schema: + type: boolean + requestBody: + $ref: '#/components/requestBodies/auth' + responses: + "200": + description: Successful Approve + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "420": + description: Bad Request + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/getApproved/: + get: + tags: + - EDI Primitive + summary: Get the approved address for a single primitive + description: The approved address for this primitive, or the zero address if + there is none + operationId: getApprovedById + parameters: + - name: primitiveId + in: query + description: The primitive to find the approved address for + required: true + style: form + explode: true + schema: + maximum: 1.157920892373162E+77 + minimum: 0 + type: integer + responses: + "200": + description: Successful Query + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "420": + description: Bad Request + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/isApprovedForAll/: + get: + tags: + - EDI Primitive + summary: Query if an address is an authorized operator for another address + description: True if `operator` is an approved operator for `owner`, false otherwise + operationId: isApprovedForAll + parameters: + - name: owner + in: query + description: The address that owns the primitives + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + - name: operator + in: query + description: The address that acts on behalf of the owner + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + responses: + "200": + description: Successful Query + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "420": + description: Bad Request + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/signedTransfer/: + post: + tags: + - EDI Primitive + summary: Signed Transfer + description: Allows Freight Trust to sign and transfer a EDI Primitive on the + behalf of its holder + operationId: signedTransfer + parameters: + - name: from + in: query + description: The sender of the transfer + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + - name: to + in: query + description: The recipient of the transfer + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + - name: primitiveId + in: query + description: The id of the primitive to be transferred + required: true + style: form + explode: true + schema: + maximum: 1.157920892373162E+77 + minimum: 0 + type: integer + - name: data + in: query + description: Optional data to be sent with the transaction + required: false + style: form + explode: true + schema: + type: string + requestBody: + description: The Freight Trust authorization signature followed by the signature + of the sender of the transfer. + content: + application/json: + schema: + $ref: '#/components/schemas/body' + required: true + responses: + "200": + description: Successful Transfer + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "420": + description: Bad Request + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/createRecord/: + post: + tags: + - EDI Primitive + summary: Creates a new record + description: Allows Freight Trust to create a record with the signature of the + owner and of the participant. + operationId: createRecord + parameters: + - name: recordID + in: query + description: The identifying hash of the record + required: true + style: form + explode: true + schema: + maxLength: 66 + minLength: 66 + type: string + - name: owner + in: query + description: The owner of the record + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + - name: participant + in: query + description: The address of the participant in the record + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + requestBody: + description: The Freight Trust nonce signature, followed by the owner's signature + and the participant's signature + content: + application/json: + schema: + $ref: '#/components/schemas/body_1' + required: true + responses: + "200": + description: Successful Creation + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "420": + description: Bad Request + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/versionRecord/: + post: + tags: + - EDI Primitive + summary: Versions a record for Freight Trust + description: Allows Freight Trust to version one of the records they own. + operationId: versionRecord + parameters: + - name: current + in: query + description: The identifying hash of the record + required: true + style: form + explode: true + schema: + maxLength: 66 + minLength: 66 + type: string + - name: new + in: query + description: The new identifying hash of the record + required: true + style: form + explode: true + schema: + maxLength: 66 + minLength: 66 + type: string + requestBody: + description: The Freight Trust nonce signature to verify this action + content: + application/json: + schema: + $ref: '#/components/schemas/auth' + required: true + responses: + "200": + description: Successful Edit + "420": + description: Bad Request + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /primitive/versionRecord/signed/: + post: + tags: + - EDI Primitive + summary: Versions a record for the owner + description: Allows Freight Trust to version a record for the owner using the + owner's signature. + operationId: versionRecordSigned + parameters: + - name: current + in: query + description: The identifying hash of the record + required: true + style: form + explode: true + schema: + maxLength: 66 + minLength: 66 + type: string + - name: new + in: query + description: The new identifying hash of the record + required: true + style: form + explode: true + schema: + maxLength: 66 + minLength: 66 + type: string + - name: owner + in: query + description: The owner of the record which will be updated + required: false + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + requestBody: + description: The Freight Trust nonce signature followed by the owner's signature + content: + application/json: + schema: + $ref: '#/components/schemas/body_2' + required: true + responses: + "200": + description: Successful Editing + "420": + description: Bad Request + "428": + description: Request Timeout + x-swagger-router-controller: EDIPrimitive + /proxy/getTarget/: + get: + tags: + - Proxy and Upgrade + summary: Gets address of Function + description: Gets address that is delegate called to run a function's logic. + operationId: getTarget + parameters: + - name: id + in: query + description: The function selector the return the target of + required: true + style: form + explode: true + schema: + maxLength: 10 + minLength: 10 + type: string + responses: + "200": + description: successful operation + content: + application/xml: + schema: + $ref: '#/components/schemas/ApiResponse' + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "425": + description: Invalid Input + x-swagger-router-controller: ProxyAndUpgrade + /proxy/getMaster: + get: + tags: + - Proxy and Upgrade + summary: Gets address of the Master Contract + description: Gets the address of the master contract. + operationId: getMaster + responses: + "200": + description: successful operation + content: + application/xml: + schema: + $ref: '#/components/schemas/ApiResponse' + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + x-swagger-router-controller: ProxyAndUpgrade + /proxy/getControler: + get: + tags: + - Proxy and Upgrade + summary: Gets address of the controler Contract + description: Gets the address of the controler contract. + operationId: getControler + responses: + "200": + description: successful operation + content: + application/xml: + schema: + $ref: '#/components/schemas/ApiResponse' + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + x-swagger-router-controller: ProxyAndUpgrade + /proxy/getUniversalProxy: + get: + tags: + - Proxy and Upgrade + summary: Gets address of the Universal Proxy Contract + description: Gets the address of the Universal Proxy contract. + operationId: getUniversalProxy + responses: + "200": + description: successful operation + content: + application/xml: + schema: + $ref: '#/components/schemas/ApiResponse' + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + x-swagger-router-controller: ProxyAndUpgrade + /proxy/setTarget/: + post: + tags: + - Proxy and Upgrade + summary: Sets the address of Function + description: Sets address that is delegate called to run a function's logic. + This function must be called with an signed nonce from the Freight Trust account + in the https body. + operationId: setTarget + parameters: + - name: id + in: query + description: Function selector whose target to change. + required: true + style: form + explode: true + schema: + maxLength: 10 + minLength: 10 + type: string + - name: target + in: query + description: The address to set the function too + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + requestBody: + $ref: '#/components/requestBodies/auth' + responses: + "200": + description: Successfuly Changed + content: + application/xml: + schema: + $ref: '#/components/schemas/ApiResponse' + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "425": + description: Invalid Input + x-swagger-router-controller: ProxyAndUpgrade + /proxy/changeMaster/: + post: + tags: + - Proxy and Upgrade + summary: Sets the address of Function + description: Sets address that is delegate called to run a function's logic. + This function must be called with an signed nonce from the Freight Trust account + in the https body. + operationId: changeMaster + parameters: + - name: newMaster + in: query + description: The new master address + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + requestBody: + $ref: '#/components/requestBodies/auth' + responses: + "200": + description: Successfuly Changed + content: + application/xml: + schema: + $ref: '#/components/schemas/ApiResponse' + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "425": + description: Invalid Input + x-swagger-router-controller: ProxyAndUpgrade + /proxy/changeController/: + post: + tags: + - Proxy and Upgrade + summary: Sets the the new controller address + description: Sets the new controller address. + operationId: changeController + parameters: + - name: newController + in: query + description: The new controller address + required: true + style: form + explode: true + schema: + maxLength: 42 + minLength: 42 + type: string + requestBody: + $ref: '#/components/requestBodies/auth' + responses: + "200": + description: Successfuly Changed + content: + application/xml: + schema: + $ref: '#/components/schemas/ApiResponse' + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "425": + description: Invalid Input + x-swagger-router-controller: ProxyAndUpgrade + /proxy/pause: + post: + tags: + - Proxy and Upgrade + summary: Pauses the execution + description: Calls the pause method in the universal proxy, blocking any state + changes while Blockarray updates. + operationId: pause + requestBody: + $ref: '#/components/requestBodies/auth' + responses: + "200": + description: Successfuly Paused + content: + application/xml: + schema: + $ref: '#/components/schemas/ApiResponse' + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + "425": + description: Invalid Input + x-swagger-router-controller: ProxyAndUpgrade +components: + schemas: + auth: + required: + - signature + type: object + properties: + signature: + maxLength: 132 + minLength: 132 + type: string + ApiResponse: + type: object + properties: + code: + type: integer + format: int32 + type: + type: string + message: + type: string + example: + code: 0 + type: type + message: message + body: + type: object + properties: + blockArrayAuth: + $ref: '#/components/schemas/auth' + senderAuth: + $ref: '#/components/schemas/auth' + body_1: + type: object + properties: + blockArrayAuth: + $ref: '#/components/schemas/auth' + ownerAuth: + $ref: '#/components/schemas/auth' + partAuth: + $ref: '#/components/schemas/auth' + body_2: + type: object + properties: + blockArrayAuth: + $ref: '#/components/schemas/auth' + ownerAuth: + $ref: '#/components/schemas/auth' + requestBodies: + auth: + description: The Freight Trust signature of the nonce + content: + application/json: + schema: + $ref: '#/components/schemas/auth' + required: true \ No newline at end of file diff --git a/docs/platform/icons/factory.svg b/docs/platform/icons/factory.svg new file mode 100644 index 0000000..17da1bc --- /dev/null +++ b/docs/platform/icons/factory.svg @@ -0,0 +1,17 @@ + + + factory + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/platform/icons/factory.xml b/docs/platform/icons/factory.xml new file mode 100644 index 0000000..17da1bc --- /dev/null +++ b/docs/platform/icons/factory.xml @@ -0,0 +1,17 @@ + + + factory + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/platform/raw.txt b/docs/platform/raw.txt new file mode 100644 index 0000000..bdee2e0 --- /dev/null +++ b/docs/platform/raw.txt @@ -0,0 +1,79 @@ + +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x42f1181e00000000000000000000000000000000000000000000000000000000, method=addAuthorizedAddress(address)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x66615d5600000000000000000000000000000000000000000000000000000000, method=attachStakingContract(address)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x856a65eb00000000000000000000000000000000000000000000000000000000, method=batchExecute(bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x37b006a600000000000000000000000000000000000000000000000000000000, method=detachStakingContract()) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x7071293900000000000000000000000000000000000000000000000000000000, method=removeAuthorizedAddress(address)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x9ad2674400000000000000000000000000000000000000000000000000000000, method=removeAuthorizedAddressAtIndex(address,uint256)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x8a2e271a00000000000000000000000000000000000000000000000000000000, method=addExchangeAddress(address)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x68a7d6cd00000000000000000000000000000000000000000000000000000000, method=createStakingPool(uint32,bool)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x5d91121d00000000000000000000000000000000000000000000000000000000, method=decreaseStakingPoolOperatorShare(bytes32,uint32)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x0b9663db00000000000000000000000000000000000000000000000000000000, method=endEpoch()) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xff691b1100000000000000000000000000000000000000000000000000000000, method=finalizePool(bytes32)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xe1c7392a00000000000000000000000000000000000000000000000000000000, method=init()) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xb3e3337900000000000000000000000000000000000000000000000000000000, method=joinStakingPoolAsMaker(bytes32)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x58f6c7e300000000000000000000000000000000000000000000000000000000, method=moveStake((uint8,bytes32),(uint8,bytes32),uint256)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xa3b4a32700000000000000000000000000000000000000000000000000000000, method=payProtocolFee(address,address,uint256)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x01e28d8400000000000000000000000000000000000000000000000000000000, method=removeExchangeAddress(address)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x9c3ccc8200000000000000000000000000000000000000000000000000000000, method=setParams(uint256,uint32,uint256,uint32,uint32)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xa694fc3a00000000000000000000000000000000000000000000000000000000, method=stake(uint256)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x2e17de7800000000000000000000000000000000000000000000000000000000, method=unstake(uint256)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xb510879f00000000000000000000000000000000000000000000000000000000, method=withdrawDelegatorRewards(bytes32)) +%%% +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x442026ed00000000000000000000000000000000000000000000000000000000, method=approveMakerAssetProxy(bytes)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x942d33c000000000000000000000000000000000000000000000000000000000, method=marketBuyOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[],uint256,address)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xae93b97a00000000000000000000000000000000000000000000000000000000, method=marketSellOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],uint256,address)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x630f1e6c00000000000000000000000000000000000000000000000000000000, method=withdrawAsset(bytes,uint256)) +%%% + +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xdedfc1f100000000000000000000000000000000000000000000000000000000, method=batchCancelOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xfc74896d00000000000000000000000000000000000000000000000000000000, method=batchExecuteTransactions((uint256,uint256,uint256,address,bytes)[],bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xbeee2e1400000000000000000000000000000000000000000000000000000000, method=batchFillOrKillOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256[],bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x9694a40200000000000000000000000000000000000000000000000000000000, method=batchFillOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256[],bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x8ea8dfe400000000000000000000000000000000000000000000000000000000, method=batchFillOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256[],bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x6fcf3e9e00000000000000000000000000000000000000000000000000000000, method=batchMatchOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x6a1a80fd00000000000000000000000000000000000000000000000000000000, method=batchMatchOrdersWithMaximalFill((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x2da6298700000000000000000000000000000000000000000000000000000000, method=cancelOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes))) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x2280c91000000000000000000000000000000000000000000000000000000000, method=executeTransaction((uint256,uint256,uint256,address,bytes),bytes)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xe14b58c400000000000000000000000000000000000000000000000000000000, method=fillOrKillOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),uint256,bytes)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x9b44d55600000000000000000000000000000000000000000000000000000000, method=fillOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),uint256,bytes)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x8bc8efb300000000000000000000000000000000000000000000000000000000, method=marketBuyOrdersFillOrKill((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x78d29ac100000000000000000000000000000000000000000000000000000000, method=marketBuyOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xa6c3bf3300000000000000000000000000000000000000000000000000000000, method=marketSellOrdersFillOrKill((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x369da09900000000000000000000000000000000000000000000000000000000, method=marketSellOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[])) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x88ec79fb00000000000000000000000000000000000000000000000000000000, method=matchOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),bytes,bytes)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0xb718e29200000000000000000000000000000000000000000000000000000000, method=matchOrdersWithMaximalFill((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),bytes,bytes)) +SignatureReg.Registered(creator=[Receiver] MassParityRegistry, signature=0x46c02d7a00000000000000000000000000000000000000000000000000000000, method=preSign(bytes32)) +%%% +SignatureReg.Registered(creator=[Receiver] CloneableWallet, signature=0x83ef0c2300000000000000000000000000000000000000000000000000000000, method=buyEgg(uint256,uint256,bool)) +%%% + +SignatureReg.Registered(creator=customIcoToken, signature=0xb7df1d2500000000000000000000000000000000000000000000000000000000, method=migrate(address,uint256,uint256,address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0xe8e3370000000000000000000000000000000000000000000000000000000000, method=addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0xf305d71900000000000000000000000000000000000000000000000000000000, method=addLiquidityETH(address,uint256,uint256,uint256,address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0xbaa2abde00000000000000000000000000000000000000000000000000000000, method=removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x02751cec00000000000000000000000000000000000000000000000000000000, method=removeLiquidityETH(address,uint256,uint256,uint256,address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x2195995c00000000000000000000000000000000000000000000000000000000, method=removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)) +SignatureReg.Registered(creator=customIcoToken, signature=0xded9382a00000000000000000000000000000000000000000000000000000000, method=removeLiquidityETHWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)) +SignatureReg.Registered(creator=customIcoToken, signature=0x38ed173900000000000000000000000000000000000000000000000000000000, method=swapExactTokensForTokens(uint256,uint256,address[],address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x8803dbee00000000000000000000000000000000000000000000000000000000, method=swapTokensForExactTokens(uint256,uint256,address[],address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x7ff36ab500000000000000000000000000000000000000000000000000000000, method=swapExactETHForTokens(uint256,address[],address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x4a25d94a00000000000000000000000000000000000000000000000000000000, method=swapTokensForExactETH(uint256,uint256,address[],address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x18cbafe500000000000000000000000000000000000000000000000000000000, method=swapExactTokensForETH(uint256,uint256,address[],address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0xfb3bdb4100000000000000000000000000000000000000000000000000000000, method=swapETHForExactTokens(uint256,address[],address,uint256)) +%%% + +SignatureReg.Registered(creator=customIcoToken, signature=0xb7df1d2500000000000000000000000000000000000000000000000000000000, method=migrate(address,uint256,uint256,address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0xe8e3370000000000000000000000000000000000000000000000000000000000, method=addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0xf305d71900000000000000000000000000000000000000000000000000000000, method=addLiquidityETH(address,uint256,uint256,uint256,address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0xbaa2abde00000000000000000000000000000000000000000000000000000000, method=removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x02751cec00000000000000000000000000000000000000000000000000000000, method=removeLiquidityETH(address,uint256,uint256,uint256,address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x2195995c00000000000000000000000000000000000000000000000000000000, method=removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)) +SignatureReg.Registered(creator=customIcoToken, signature=0xded9382a00000000000000000000000000000000000000000000000000000000, method=removeLiquidityETHWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)) +SignatureReg.Registered(creator=customIcoToken, signature=0x38ed173900000000000000000000000000000000000000000000000000000000, method=swapExactTokensForTokens(uint256,uint256,address[],address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x8803dbee00000000000000000000000000000000000000000000000000000000, method=swapTokensForExactTokens(uint256,uint256,address[],address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x7ff36ab500000000000000000000000000000000000000000000000000000000, method=swapExactETHForTokens(uint256,address[],address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x4a25d94a00000000000000000000000000000000000000000000000000000000, method=swapTokensForExactETH(uint256,uint256,address[],address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0x18cbafe500000000000000000000000000000000000000000000000000000000, method=swapExactTokensForETH(uint256,uint256,address[],address,uint256)) +SignatureReg.Registered(creator=customIcoToken, signature=0xfb3bdb4100000000000000000000000000000000000000000000000000000000, method=swapETHForExactTokens(uint256,address[],address,uint256) +%%% \ No newline at end of file diff --git a/docs/tos.md b/docs/tos.md new file mode 100644 index 0000000..5a27d7a --- /dev/null +++ b/docs/tos.md @@ -0,0 +1,335 @@ +# TERMS OF USE + +- [TERMS OF USE](#terms-of-use) + + [AGREEMENT TO TERMS](#agreement-to-terms) + + [INTELLECTUAL PROPERTY RIGHTS](#intellectual-property-rights) + + [USER REPRESENTATIONS](#user-representations) + + [USER REGISTRATION](#user-registration) + + [FEES AND PAYMENT](#fees-and-payment) + + [FREE TRIAL](#free-trial) + + [CANCELLATION](#cancellation) + + [SOFTWARE](#software) + + [PROHIBITED ACTIVITIES](#prohibited-activities) + - [As a user of the Site, you agree not to:](#as-a-user-of-the-site--you-agree-not-to-) + + [USER GENERATED CONTRIBUTIONS](#user-generated-contributions) + + [CONTRIBUTION LICENSE](#contribution-license) + + [GUIDELINES FOR REVIEWS](#guidelines-for-reviews) + + [MOBILE APPLICATION LICENSE](#mobile-application-license) + - [Use License](#use-license) + + [Apple and Android Devices](#apple-and-android-devices) + + [SUBMISSIONS](#submissions) + + [THIRD-PARTY WEBSITES AND CONTENT](#third-party-websites-and-content) + + [U.S. GOVERNMENT RIGHTS](#us-government-rights) + + [SITE MANAGEMENT](#site-management) + + [PRIVACY POLICY](#privacy-policy) + + [DIGITAL MILLENNIUM COPYRIGHT ACT (DMCA) NOTICE AND POLICY](#digital-millennium-copyright-act--dmca--notice-and-policy) + - [Notifications](#notifications) + - [Counter Notification](#counter-notification) + + [MODIFICATIONS AND INTERRUPTIONS](#modifications-and-interruptions) + + [GOVERNING LAW](#governing-law) + + [DISPUTE RESOLUTION](#dispute-resolution) + + [Restrictions](#restrictions) + - [Exceptions to Informal Negotiations and Arbitration](#exceptions-to-informal-negotiations-and-arbitration) + + [CORRECTIONS](#corrections) + + [DISCLAIMER](#disclaimer) + + [LIMITATIONS OF LIABILITY](#limitations-of-liability) + + [INDEMNIFICATION](#indemnification) + + [USER DATA](#user-data) + + [ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES](#electronic-communications--transactions--and-signatures) + + [CALIFORNIA USERS AND RESIDENTS](#california-users-and-residents) + + [MISCELLANEOUS](#miscellaneous) + + [CONTACT US](#contact-us) + + +Last updated July 01, 2020 + + + +### AGREEMENT TO TERMS + +These Terms of Use constitute a legally binding agreement made between you, whether personally or on behalf of an entity (“you”) and FreightTrust and Clearing Corporation, doing business as Freight Trust ("Freight Trust", “we”, “us”, or “our”), concerning your access to and use of the https://freighttrust.com website as well as any other media form, media channel, mobile website or mobile application related, linked, or otherwise connected thereto (collectively, the “Site”). You agree that by accessing the Site, you have read, understood, and agree to be bound by all of these Terms of Use, including the Omnibus Rulebook posted on the Site, which are incorporated into these Terms of Use. IF YOU DO NOT AGREE WITH ALL OF THESE TERMS OF USE, THEN YOU ARE EXPRESSLY PROHIBITED FROM USING THE SITE AND YOU MUST DISCONTINUE USE IMMEDIATELY. + +Supplemental terms and conditions or documents that may be posted on the Site from time to time are hereby expressly incorporated herein by reference. We reserve the right, in our sole discretion, to make changes or modifications to these Terms of Use at any time and for any reason. We will alert you about any changes by updating the “Last updated” date of these Terms of Use, and you waive any right to receive specific notice of each such change. It is your responsibility to periodically review these Terms of Use to stay informed of updates. You will be subject to, and will be deemed to have been made aware of and to have accepted, the changes in any revised Terms of Use by your continued use of the Site after the date such revised Terms of Use are posted. + +The information provided on the Site is not intended for distribution to or use by any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country. Accordingly, those persons who choose to access the Site from other locations do so on their own initiative and are solely responsible for compliance with local laws, if and to the extent local laws are applicable. + +The Site is not tailored to comply with industry-specific regulations (Health Insurance Portability and Accountability Act (HIPAA), Federal Information Security Management Act (FISMA), etc.), so if your interactions would be subjected to such laws, you may not use this Site. You may not use the Site in a way that would violate the Gramm-Leach-Bliley Act (GLBA). + +The Site is intended for users who are at least 18 years old. Persons under the age of 18 are not permitted to use or register for the Site. + + +### INTELLECTUAL PROPERTY RIGHTS + +Unless otherwise indicated, the Site is our proprietary property and all source code, databases, functionality, software, website designs, audio, video, text, photographs, and graphics on the Site (collectively, the “Content”) and the trademarks, service marks, and logos contained therein (the “Marks”) are owned or controlled by us or licensed to us, and are protected by copyright and trademark laws and various other intellectual property rights and unfair competition laws of the United States, international copyright laws, and international conventions. The Content and the Marks are provided on the Site “AS IS” for your information and personal use only. Except as expressly provided in these Terms of Use, no part of the Site and no Content or Marks may be copied, reproduced, aggregated, republished, uploaded, posted, publicly displayed, encoded, translated, transmitted, distributed, sold, licensed, or otherwise exploited for any commercial purpose whatsoever, without our express prior written permission. + +Provided that you are eligible to use the Site, you are granted a limited license to access and use the Site and to download or print a copy of any portion of the Content to which you have properly gained access solely for your personal, non-commercial use. We reserve all rights not expressly granted to you in and to the Site, the Content and the Marks. + + +### USER REPRESENTATIONS + +By using the Site, you represent and warrant that: (1) all registration information you submit will be true, accurate, current, and complete; (2) you will maintain the accuracy of such information and promptly update such registration information as necessary; (3) you have the legal capacity and you agree to comply with these Terms of Use; (4) you are not a minor in the jurisdiction in which you reside; (5) you will not access the Site through automated or non-human means, whether through a bot, script or otherwise; (6) you will not use the Site for any illegal or unauthorized purpose; and (7) your use of the Site will not violate any applicable law or regulation. + +If you provide any information that is untrue, inaccurate, not current, or incomplete, we have the right to suspend or terminate your account and refuse any and all current or future use of the Site (or any portion thereof). + + +### USER REGISTRATION + +You may be required to register with the Site. You agree to keep your password confidential and will be responsible for all use of your account and password. We reserve the right to remove, reclaim, or change a username you select if we determine, in our sole discretion, that such username is inappropriate, obscene, or otherwise objectionable. + + +### FEES AND PAYMENT + +We accept the following forms of payment: + +- $EDI Token +- $USDC +- ACH +- Wire Transfer +- SWIFT +- USD Deposit +- Other Currencies ($ETH, $BTC, $USDT) + +You may be required to purchase or pay a fee to access some of our services. You agree to provide current, complete, and accurate purchase and account information for all purchases made via the Site. You further agree to promptly update account and payment information, including email address, payment method, and payment card expiration date, so that we can complete your transactions and contact you as needed. We bill you through an online billing account for purchases made via the Site. Sales tax will be added to the price of purchases as deemed required by us. We may change prices at any time. All payments shall be in U.S. dollars. + +You agree to pay all charges or fees at the prices then in effect for your purchases, and you authorize us to charge your chosen payment provider for any such amounts upon making your purchase. If your purchase is subject to recurring charges, then you consent to our charging your payment method on a recurring basis without requiring your prior approval for each recurring charge, until you notify us of your cancellation. + +We reserve the right to correct any errors or mistakes in pricing, even if we have already requested or received payment. We also reserve the right to refuse any order placed through the Site. + + +### FREE TRIAL + +We offer a 30-day free trial to new users who register with the Site. The account will be charged according to the user’s chosen subscription at the end of the free trial. + + +### CANCELLATION + +All purchases are non-refundable. You can cancel your subscription at any time by contacting us using the contact information provided below. Your cancellation will take effect at the end of the current paid term. + +If you are unsatisfied with our services, please email us at admin@freighttrust.com or call us at (+1)628 221 5916. + + +### SOFTWARE + +We may include software for use in connection with our services. If such software is accompanied by an end user license agreement (“EULA”), the terms of the EULA will govern your use of the software. If such software is not accompanied by a EULA, then we grant to you a non-exclusive, revocable, personal, and non-transferable license to use such software solely in connection with our services and in accordance with these Terms of Use. Any Software and any related documentation is provided “as is” without warranty of any kind, either express or implied, including, without limitation, the implied warranties of merchantability, fitness for a particular purpose, or non-infringement. You accept any and all risk arising out of use or performance of any Software. You may not reproduce or redistribute any software except in accordance with the EULA or these Terms of Use. + + +### PROHIBITED ACTIVITIES + +You may not access or use the Site for any purpose other than that for which we make the Site available. The Site may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us. + +#### As a user of the Site, you agree not to: + +1. Systematically retrieve data or other content from the Site to create or compile, directly or indirectly, a collection, compilation, database, or directory without written permission from us. +2. Make any unauthorized use of the Site, including collecting usernames and/or email addresses of users by electronic or other means for the purpose of sending unsolicited email, or creating user accounts by automated means or under false pretenses. +3. Circumvent, disable, or otherwise interfere with security-related features of the Site, including features that prevent or restrict the use or copying of any Content or enforce limitations on the use of the Site and/or the Content contained therein. +4. Engage in unauthorized framing of or linking to the Site. +5. Trick, defraud, or mislead us and other users, especially in any attempt to learn sensitive account information such as user passwords. +6. Make improper use of our support services or submit false reports of abuse or misconduct. +7. Engage in any automated use of the system, such as using scripts to send comments or messages, or using any data mining, robots, or similar data gathering and extraction tools. +8. Interfere with, disrupt, or create an undue burden on the Site or the networks or services connected to the Site. +9. Attempt to impersonate another user or person or use the username of another user. +10. Sell or otherwise transfer your profile. +11. Use any information obtained from the Site in order to harass, abuse, or harm another person. +12. Use the Site as part of any effort to compete with us or otherwise use the Site and/or the Content for any revenue-generating endeavor or commercial enterprise. +13. Decipher, decompile, disassemble, or reverse engineer any of the software comprising or in any way making up a part of the Site. +14. Attempt to bypass any measures of the Site designed to prevent or restrict access to the Site, or any portion of the Site. +15. Harass, annoy, intimidate, or threaten any of our employees or agents engaged in providing any portion of the Site to you. +16. Delete the copyright or other proprietary rights notice from any Content. +17. Upload or transmit (or attempt to upload or to transmit) viruses, Trojan horses, or other material, including excessive use of capital letters and spamming (continuous posting of repetitive text), that interferes with any party’s uninterrupted use and enjoyment of the Site or modifies, impairs, disrupts, alters, or interferes with the use, features, functions, operation, or maintenance of the Site. +18. Copy or adapt the Site’s software, including but not limited to Flash, PHP, HTML, JavaScript, or other code. +19. Upload or transmit (or attempt to upload or to transmit) any material that acts as a passive or active information collection or transmission mechanism, including without limitation, clear graphics interchange formats (“gifs”), 1×1 pixels, web bugs, cookies, or other similar devices (sometimes referred to as “spyware” or “passive collection mechanisms” or “pcms”). +20. Except as may be the result of standard search engine or Internet browser usage, use, launch, develop, or distribute any automated system, including without limitation, any spider, robot, cheat utility, scraper, or offline reader that accesses the Site, or using or launching any unauthorized script or other software. +21. Disparage, tarnish, or otherwise harm, in our opinion, us and/or the Site. +22. Use the Site in a manner inconsistent with any applicable laws or regulations. +23. Use the Site to advertise or offer to sell goods and services. +24. Use a buying agent or purchasing agent to make purchases on the Site. +25. Anything that FreightTrust and Clearing Corporation deems undesirable +26. Malicious Attacks such as DDoS or Spamming Transactions +27. Attempting to Decompile or Exploit any Smart Contracts on-network or off network +28. Attempting to disrupt normal network operations +29. Anything that FreightTrust and Clearing Corporation has listed in its Network Rulebook + + +### USER GENERATED CONTRIBUTIONS + +The Site may invite you to chat, contribute to, or participate in blogs, message boards, online forums, and other functionality, and may provide you with the opportunity to create, submit, post, display, transmit, perform, publish, distribute, or broadcast content and materials to us or on the Site, including but not limited to text, writings, video, audio, photographs, graphics, comments, suggestions, or personal information or other material (collectively, "Contributions"). Contributions may be viewable by other users of the Site and through third-party websites. As such, any Contributions you transmit may be treated as non-confidential and non-proprietary. When you create or make available any Contributions, you thereby represent and warrant that: + +1. The creation, distribution, transmission, public display, or performance, and the accessing, downloading, or copying of your Contributions do not and will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark, trade secret, or moral rights of any third party. +2. You are the creator and owner of or have the necessary licenses, rights, consents, releases, and permissions to use and to authorize us, the Site, and other users of the Site to use your Contributions in any manner contemplated by the Site and these Terms of Use. +3. You have the written consent, release, and/or permission of each and every identifiable individual person in your Contributions to use the name or likeness of each and every such identifiable individual person to enable inclusion and use of your Contributions in any manner contemplated by the Site and these Terms of Use. +4. Your Contributions are not false, inaccurate, or misleading. +5. Your Contributions are not unsolicited or unauthorized advertising, promotional materials, pyramid schemes, chain letters, spam, mass mailings, or other forms of solicitation. +6. Your Contributions are not obscene, lewd, lascivious, filthy, violent, harassing, libelous, slanderous, or otherwise objectionable (as determined by us). +7. Your Contributions do not ridicule, mock, disparage, intimidate, or abuse anyone. +8. Your Contributions do not advocate the violent overthrow of any government or incite, encourage, or threaten physical harm against another. +9. Your Contributions do not violate any applicable law, regulation, or rule. +10. Your Contributions do not violate the privacy or publicity rights of any third party. +11. Your Contributions do not contain any material that solicits personal information from anyone under the age of 18 or exploits people under the age of 18 in a sexual or violent manner. +12. Your Contributions do not violate any applicable law concerning child pornography, or otherwise intended to protect the health or well-being of minors. +13. Your Contributions do not include any offensive comments that are connected to race, national origin, gender, sexual preference, or physical handicap. +14. Your Contributions do not otherwise violate, or link to material that violates, any provision of these Terms of Use, or any applicable law or regulation. + +Any use of the Site in violation of the foregoing violates these Terms of Use and may result in, among other things, termination or suspension of your rights to use the Site. + + +### CONTRIBUTION LICENSE + +By posting your Contributions to any part of the Site, you automatically grant, and you represent and warrant that you have the right to grant, to us an unrestricted, unlimited, irrevocable, perpetual, non-exclusive, transferable, royalty-free, fully-paid, worldwide right, and license to host, use, copy, reproduce, disclose, sell, resell, publish, broadcast, retitle, archive, store, cache, publicly perform, publicly display, reformat, translate, transmit, excerpt (in whole or in part), and distribute such Contributions (including, without limitation, your image and voice) for any purpose, commercial, advertising, or otherwise, and to prepare derivative works of, or incorporate into other works, such Contributions, and grant and authorize sublicenses of the foregoing. The use and distribution may occur in any media formats and through any media channels. + +This license will apply to any form, media, or technology now known or hereafter developed, and includes our use of your name, company name, and franchise name, as applicable, and any of the trademarks, service marks, trade names, logos, and personal and commercial images you provide. You waive all moral rights in your Contributions, and you warrant that moral rights have not otherwise been asserted in your Contributions. + +We do not assert any ownership over your Contributions. You retain full ownership of all of your Contributions and any intellectual property rights or other proprietary rights associated with your Contributions. We are not liable for any statements or representations in your Contributions provided by you in any area on the Site. You are solely responsible for your Contributions to the Site and you expressly agree to exonerate us from any and all responsibility and to refrain from any legal action against us regarding your Contributions. + +We have the right, in our sole and absolute discretion, (1) to edit, redact, or otherwise change any Contributions; (2) to re-categorize any Contributions to place them in more appropriate locations on the Site; and (3) to pre-screen or delete any Contributions at any time and for any reason, without notice. We have no obligation to monitor your Contributions. + + +### GUIDELINES FOR REVIEWS + +We may provide you areas on the Site to leave reviews or ratings. When posting a review, you must comply with the following criteria: (1) you should have firsthand experience with the person/entity being reviewed; (2) your reviews should not contain offensive profanity, or abusive, racist, offensive, or hate language; (3) your reviews should not contain discriminatory references based on religion, race, gender, national origin, age, marital status, sexual orientation, or disability; (4) your reviews should not contain references to illegal activity; (5) you should not be affiliated with competitors if posting negative reviews; (6) you should not make any conclusions as to the legality of conduct; (7) you may not post any false or misleading statements; and (8) you may not organize a campaign encouraging others to post reviews, whether positive or negative. + +We may accept, reject, or remove reviews in our sole discretion. We have absolutely no obligation to screen reviews or to delete reviews, even if anyone considers reviews objectionable or inaccurate. Reviews are not endorsed by us, and do not necessarily represent our opinions or the views of any of our affiliates or partners. We do not assume liability for any review or for any claims, liabilities, or losses resulting from any review. By posting a review, you hereby grant to us a perpetual, non-exclusive, worldwide, royalty-free, fully-paid, assignable, and sublicensable right and license to reproduce, modify, translate, transmit by any means, display, perform, and/or distribute all content relating to reviews. + + +### MOBILE APPLICATION LICENSE + +#### Use License + +If you access the Site via a mobile application, then we grant you a revocable, non-exclusive, non-transferable, limited right to install and use the mobile application on wireless electronic devices owned or controlled by you, and to access and use the mobile application on such devices strictly in accordance with the terms and conditions of this mobile application license contained in these Terms of Use. You shall not: (1) decompile, reverse engineer, disassemble, attempt to derive the source code of, or decrypt the application; (2) make any modification, adaptation, improvement, enhancement, translation, or derivative work from the application; (3) violate any applicable laws, rules, or regulations in connection with your access or use of the application; (4) remove, alter, or obscure any proprietary notice (including any notice of copyright or trademark) posted by us or the licensors of the application; (5) use the application for any revenue generating endeavor, commercial enterprise, or other purpose for which it is not designed or intended; (6) make the application available over a network or other environment permitting access or use by multiple devices or users at the same time; (7) use the application for creating a product, service, or software that is, directly or indirectly, competitive with or in any way a substitute for the application; (8) use the application to send automated queries to any website or to send any unsolicited commercial e-mail; or (9) use any proprietary information or any of our interfaces or our other intellectual property in the design, development, manufacture, licensing, or distribution of any applications, accessories, or devices for use with the application. + +### Apple and Android Devices + +The following terms apply when you use a mobile application obtained from either the Apple Store or Google Play (each an “App Distributor”) to access the Site: (1) the license granted to you for our mobile application is limited to a non-transferable license to use the application on a device that utilizes the Apple iOS or Android operating systems, as applicable, and in accordance with the usage rules set forth in the applicable App Distributor’s terms of service; (2) we are responsible for providing any maintenance and support services with respect to the mobile application as specified in the terms and conditions of this mobile application license contained in these Terms of Use or as otherwise required under applicable law, and you acknowledge that each App Distributor has no obligation whatsoever to furnish any maintenance and support services with respect to the mobile application; (3) in the event of any failure of the mobile application to conform to any applicable warranty, you may notify the applicable App Distributor, and the App Distributor, in accordance with its terms and policies, may refund the purchase price, if any, paid for the mobile application, and to the maximum extent permitted by applicable law, the App Distributor will have no other warranty obligation whatsoever with respect to the mobile application; (4) you represent and warrant that (i) you are not located in a country that is subject to a U.S. government embargo, or that has been designated by the U.S. government as a “terrorist supporting” country and (ii) you are not listed on any U.S. government list of prohibited or restricted parties; (5) you must comply with applicable third-party terms of agreement when using the mobile application, e.g., if you have a VoIP application, then you must not be in violation of their wireless data service agreement when using the mobile application; and (6) you acknowledge and agree that the App Distributors are third-party beneficiaries of the terms and conditions in this mobile application license contained in these Terms of Use, and that each App Distributor will have the right (and will be deemed to have accepted the right) to enforce the terms and conditions in this mobile application license contained in these Terms of Use against you as a third-party beneficiary thereof. + + +### SUBMISSIONS + +You acknowledge and agree that any questions, comments, suggestions, ideas, feedback, or other information regarding the Site ("Submissions") provided by you to us are non-confidential and shall become our sole property. We shall own exclusive rights, including all intellectual property rights, and shall be entitled to the unrestricted use and dissemination of these Submissions for any lawful purpose, commercial or otherwise, without acknowledgment or compensation to you. You hereby waive all moral rights to any such Submissions, and you hereby warrant that any such Submissions are original with you or that you have the right to submit such Submissions. You agree there shall be no recourse against us for any alleged or actual infringement or misappropriation of any proprietary right in your Submissions. + + +### THIRD-PARTY WEBSITES AND CONTENT + +The Site may contain (or you may be sent via the Site) links to other websites ("Third-Party Websites") as well as articles, photographs, text, graphics, pictures, designs, music, sound, video, information, applications, software, and other content or items belonging to or originating from third parties ("Third-Party Content"). Such Third-Party Websites and Third-Party Content are not investigated, monitored, or checked for accuracy, appropriateness, or completeness by us, and we are not responsible for any Third-Party Websites accessed through the Site or any Third-Party Content posted on, available through, or installed from the Site, including the content, accuracy, offensiveness, opinions, reliability, privacy practices, or other policies of or contained in the Third-Party Websites or the Third-Party Content. Inclusion of, linking to, or permitting the use or installation of any Third-Party Websites or any Third-Party Content does not imply approval or endorsement thereof by us. If you decide to leave the Site and access the Third-Party Websites or to use or install any Third-Party Content, you do so at your own risk, and you should be aware these Terms of Use no longer govern. You should review the applicable terms and policies, including privacy and data gathering practices, of any website to which you navigate from the Site or relating to any applications you use or install from the Site. Any purchases you make through Third-Party Websites will be through other websites and from other companies, and we take no responsibility whatsoever in relation to such purchases which are exclusively between you and the applicable third party. You agree and acknowledge that we do not endorse the products or services offered on Third-Party Websites and you shall hold us harmless from any harm caused by your purchase of such products or services. Additionally, you shall hold us harmless from any losses sustained by you or harm caused to you relating to or resulting in any way from any Third-Party Content or any contact with Third-Party Websites. + + +### U.S. GOVERNMENT RIGHTS + +Our services are “commercial items” as defined in Federal Acquisition Regulation (“FAR”) 2.101. If our services are acquired by or on behalf of any agency not within the Department of Defense (“DOD”), our services are subject to the terms of these Terms of Use in accordance with FAR 12.212 (for computer software) and FAR 12.211 (for technical data). If our services are acquired by or on behalf of any agency within the Department of Defense, our services are subject to the terms of these Terms of Use in accordance with Defense Federal Acquisition Regulation (“DFARS”) 227.7202‑3. In addition, DFARS 252.227‑7015 applies to technical data acquired by the DOD. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFARS, or other clause or provision that addresses government rights in computer software or technical data under these Terms of Use. + + +### SITE MANAGEMENT + +We reserve the right, but not the obligation, to: (1) monitor the Site for violations of these Terms of Use; (2) take appropriate legal action against anyone who, in our sole discretion, violates the law or these Terms of Use, including without limitation, reporting such user to law enforcement authorities; (3) in our sole discretion and without limitation, refuse, restrict access to, limit the availability of, or disable (to the extent technologically feasible) any of your Contributions or any portion thereof; (4) in our sole discretion and without limitation, notice, or liability, to remove from the Site or otherwise disable all files and content that are excessive in size or are in any way burdensome to our systems; and (5) otherwise manage the Site in a manner designed to protect our rights and property and to facilitate the proper functioning of the Site. + + +### PRIVACY POLICY + +We care about data privacy and security. Please review our Privacy Policy: freighttrust.com/privacy-policy. By using the Site, you agree to be bound by our Privacy Policy, which is incorporated into these Terms of Use. Please be advised the Site is hosted in the United States. If you access the Site from any other region of the world with laws or other requirements governing personal data collection, use, or disclosure that differ from applicable laws in the United States, then through your continued use of the Site, you are transferring your data to the United States, and you agree to have your data transferred to and processed in the United States. + + +### DIGITAL MILLENNIUM COPYRIGHT ACT (DMCA) NOTICE AND POLICY + +#### Notifications + +We respect the intellectual property rights of others. If you believe that any material available on or through the Site infringes upon any copyright you own or control, please immediately notify our Designated Copyright Agent using the contact information provided below (a “Notification”). A copy of your Notification will be sent to the person who posted or stored the material addressed in the Notification. Please be advised that pursuant to federal law you may be held liable for damages if you make material misrepresentations in a Notification. Thus, if you are not sure that material located on or linked to by the Site infringes your copyright, you should consider first contacting an attorney. + +All Notifications should meet the requirements of DMCA 17 U.S.C. § 512(c)(3) and include the following information: (1) A physical or electronic signature of a person authorized to act on behalf of the owner of an exclusive right that is allegedly infringed; (2) identification of the copyrighted work claimed to have been infringed, or, if multiple copyrighted works on the Site are covered by the Notification, a representative list of such works on the Site; (3) identification of the material that is claimed to be infringing or to be the subject of infringing activity and that is to be removed or access to which is to be disabled, and information reasonably sufficient to permit us to locate the material; (4) information reasonably sufficient to permit us to contact the complaining party, such as an address, telephone number, and, if available, an email address at which the complaining party may be contacted; (5) a statement that the complaining party has a good faith belief that use of the material in the manner complained of is not authorized by the copyright owner, its agent, or the law; and (6) a statement that the information in the notification is accurate, and under penalty of perjury, that the complaining party is authorized to act on behalf of the owner of an exclusive right that is allegedly infringed upon. + +#### Counter Notification + +If you believe your own copyrighted material has been removed from the Site as a result of a mistake or misidentification, you may submit a written counter notification to [us/our Designated Copyright Agent] using the contact information provided below (a “Counter Notification”). To be an effective Counter Notification under the DMCA, your Counter Notification must include substantially the following: (1) identification of the material that has been removed or disabled and the location at which the material appeared before it was removed or disabled; (2) a statement that you consent to the jurisdiction of the Federal District Court in which your address is located, or if your address is outside the United States, for any judicial district in which we are located; (3) a statement that you will accept service of process from the party that filed the Notification or the party's agent; (4) your name, address, and telephone number; (5) a statement under penalty of perjury that you have a good faith belief that the material in question was removed or disabled as a result of a mistake or misidentification of the material to be removed or disabled; and (6) your physical or electronic signature. + +If you send us a valid, written Counter Notification meeting the requirements described above, we will restore your removed or disabled material, unless we first receive notice from the party filing the Notification informing us that such party has filed a court action to restrain you from engaging in infringing activity related to the material in question. Please note that if you materially misrepresent that the disabled or removed content was removed by mistake or misidentification, you may be liable for damages, including costs and attorney's fees. Filing a false Counter Notification constitutes perjury. + +Designated Copyright Agent +Copyright Agent +Attn: Copyright Agent +admin@freighttrust.com + + +TERM AND TERMINATION + +These Terms of Use shall remain in full force and effect while you use the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE TERMS OF USE, WE RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR LIABILITY, DENY ACCESS TO AND USE OF THE SITE (INCLUDING BLOCKING CERTAIN IP ADDRESSES), TO ANY PERSON FOR ANY REASON OR FOR NO REASON, INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, WARRANTY, OR COVENANT CONTAINED IN THESE TERMS OF USE OR OF ANY APPLICABLE LAW OR REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE SITE OR DELETE YOUR ACCOUNT AND ANY CONTENT OR INFORMATION THAT YOU POSTED AT ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION. + +If we terminate or suspend your account for any reason, you are prohibited from registering and creating a new account under your name, a fake or borrowed name, or the name of any third party, even if you may be acting on behalf of the third party. In addition to terminating or suspending your account, we reserve the right to take appropriate legal action, including without limitation pursuing civil, criminal, and injunctive redress. + + +### MODIFICATIONS AND INTERRUPTIONS + +We reserve the right to change, modify, or remove the contents of the Site at any time or for any reason at our sole discretion without notice. However, we have no obligation to update any information on our Site. We also reserve the right to modify or discontinue all or part of the Site without notice at any time. We will not be liable to you or any third party for any modification, price change, suspension, or discontinuance of the Site. + +We cannot guarantee the Site will be available at all times. We may experience hardware, software, or other problems or need to perform maintenance related to the Site, resulting in interruptions, delays, or errors. We reserve the right to change, revise, update, suspend, discontinue, or otherwise modify the Site at any time or for any reason without notice to you. You agree that we have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access or use the Site during any downtime or discontinuance of the Site. Nothing in these Terms of Use will be construed to obligate us to maintain and support the Site or to supply any corrections, updates, or releases in connection therewith. + + +### GOVERNING LAW + +These Terms of Use and your use of the Site are governed by and construed in accordance with the laws of the State of Delaware applicable to agreements made and to be entirely performed within the State of Delaware, without regard to its conflict of law principles. + + +### DISPUTE RESOLUTION + +Informal Negotiations + +To expedite resolution and control the cost of any dispute, controversy, or claim related to these Terms of Use (each a "Dispute" and collectively, the “Disputes”) brought by either you or us (individually, a “Party” and collectively, the “Parties”), the Parties agree to first attempt to negotiate any Dispute (except those Disputes expressly provided below) informally for at least sixty (60) days before initiating arbitration. Such informal negotiations commence upon written notice from one Party to the other Party. + +B### inding Arbitration + +Any dispute arising out of or in connection with this contract, including any question regarding its existence, validity, or termination, shall be referred to and finally resolved by the International Commercial Arbitration Court under the European Arbitration Chamber (Belgium, Brussels, Avenue Louise, 146) according to the Rules of this ICAC, which, as a result of referring to it, is considered as the part of this clause. The number of arbitrators shall be of our choosing. The seat, or legal place, of arbitration shall be of our choosing. The language to be used in the arbitral proceedings shall be of our choosing. The governing law of the contract shall be the substantive law of our choosing. + +### Restrictions + +The Parties agree that any arbitration shall be limited to the Dispute between the Parties individually. To the full extent permitted by law, (a) no arbitration shall be joined with any other proceeding; (b) there is no right or authority for any Dispute to be arbitrated on a class-action basis or to utilize class action procedures; and (c) there is no right or authority for any Dispute to be brought in a purported representative capacity on behalf of the general public or any other persons. + +#### Exceptions to Informal Negotiations and Arbitration + +The Parties agree that the following Disputes are not subject to the above provisions concerning informal negotiations and binding arbitration: (a) any Disputes seeking to enforce or protect, or concerning the validity of, any of the intellectual property rights of a Party; (b) any Dispute related to, or arising from, allegations of theft, piracy, invasion of privacy, or unauthorized use; and (c) any claim for injunctive relief. If this provision is found to be illegal or unenforceable, then neither Party will elect to arbitrate any Dispute falling within that portion of this provision found to be illegal or unenforceable and such Dispute shall be decided by a court of competent jurisdiction within the courts listed for jurisdiction above, and the Parties agree to submit to the personal jurisdiction of that court. + + +### CORRECTIONS + +There may be information on the Site that contains typographical errors, inaccuracies, or omissions, including descriptions, pricing, availability, and various other information. We reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information on the Site at any time, without prior notice. + + +### DISCLAIMER + +THE SITE IS PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU AGREE THAT YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, IN CONNECTION WITH THE SITE AND YOUR USE THEREOF, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE SITE’S CONTENT OR THE CONTENT OF ANY WEBSITES LINKED TO THE SITE AND WE WILL ASSUME NO LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR PROPERTY DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF OUR SECURE SERVERS AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO OR FROM THE SITE, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH MAY BE TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR (6) ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SITE. WE DO NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY THROUGH THE SITE, ANY HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE APPLICATION FEATURED IN ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND ANY THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES. AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE. + + +### LIMITATIONS OF LIABILITY + +IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR USE OF THE SITE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION, WILL AT ALL TIMES BE LIMITED TO THE LESSER OF THE AMOUNT PAID, IF ANY, BY YOU TO US DURING THE THREE (3) MONTH PERIOD PRIOR TO ANY CAUSE OF ACTION ARISING OR $25,000.00 USD. CERTAIN US STATE LAWS AND INTERNATIONAL LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MAY HAVE ADDITIONAL RIGHTS. + + +### INDEMNIFICATION + +You agree to defend, indemnify, and hold us harmless, including our subsidiaries, affiliates, and all of our respective officers, agents, partners, and employees, from and against any loss, damage, liability, claim, or demand, including reasonable attorneys’ fees and expenses, made by any third party due to or arising out of: (1) your Contributions; (2) use of the Site; (3) breach of these Terms of Use; (4) any breach of your representations and warranties set forth in these Terms of Use; (5) your violation of the rights of a third party, including but not limited to intellectual property rights; or (6) any overt harmful act toward any other user of the Site with whom you connected via the Site. Notwithstanding the foregoing, we reserve the right, at your expense, to assume the exclusive defense and control of any matter for which you are required to indemnify us, and you agree to cooperate, at your expense, with our defense of such claims. We will use reasonable efforts to notify you of any such claim, action, or proceeding which is subject to this indemnification upon becoming aware of it. + + +### USER DATA + +We will maintain certain data that you transmit to the Site for the purpose of managing the performance of the Site, as well as data relating to your use of the Site. Although we perform regular routine backups of data, you are solely responsible for all data that you transmit or that relates to any activity you have undertaken using the Site. You agree that we shall have no liability to you for any loss or corruption of any such data, and you hereby waive any right of action against us arising from any such loss or corruption of such data. + + +### ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES + +Visiting the Site, sending us emails, and completing online forms constitute electronic communications. You consent to receive electronic communications, and you agree that all agreements, notices, disclosures, and other communications we provide to you electronically, via email and on the Site, satisfy any legal requirement that such communication be in writing. YOU HEREBY AGREE TO THE USE OF ELECTRONIC SIGNATURES, CONTRACTS, ORDERS, AND OTHER RECORDS, AND TO ELECTRONIC DELIVERY OF NOTICES, POLICIES, AND RECORDS OF TRANSACTIONS INITIATED OR COMPLETED BY US OR VIA THE SITE. You hereby waive any rights or requirements under any statutes, regulations, rules, ordinances, or other laws in any jurisdiction which require an original signature or delivery or retention of non-electronic records, or to payments or the granting of credits by any means other than electronic means. + + +### CALIFORNIA USERS AND RESIDENTS + +If any complaint with us is not satisfactorily resolved, you can contact the Complaint Assistance Unit of the Division of Consumer Services of the California Department of Consumer Affairs in writing at 1625 North Market Blvd., Suite N 112, Sacramento, California 95834 or by telephone at (800) 952-5210 or (916) 445-1254. + + +### MISCELLANEOUS + +These Terms of Use and any policies or operating rules posted by us on the Site or in respect to the Site constitute the entire agreement and understanding between you and us. Our failure to exercise or enforce any right or provision of these Terms of Use shall not operate as a waiver of such right or provision. These Terms of Use operate to the fullest extent permissible by law. We may assign any or all of our rights and obligations to others at any time. We shall not be responsible or liable for any loss, damage, delay, or failure to act caused by any cause beyond our reasonable control. If any provision or part of a provision of these Terms of Use is determined to be unlawful, void, or unenforceable, that provision or part of the provision is deemed severable from these Terms of Use and does not affect the validity and enforceability of any remaining provisions. There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Terms of Use or use of the Site. You agree that these Terms of Use will not be construed against us by virtue of having drafted them. You hereby waive any and all defenses you may have based on the electronic form of these Terms of Use and the lack of signing by the parties hereto to execute these Terms of Use. + +See Omnibus Documentation for Additional Clauses. Any clauses may be added at any time without prior notice. + + +### CONTACT US + +In order to resolve a complaint regarding the Site or to receive further information regarding use of the Site, please contact us at: + +FreightTrust and Clearing Corporation +Phone: (+1)628 221 5916 +admin@freighttrust.com \ No newline at end of file diff --git a/docs/tradedocs/README.md b/docs/tradedocs/README.md new file mode 100644 index 0000000..73f46ba --- /dev/null +++ b/docs/tradedocs/README.md @@ -0,0 +1,54 @@ +# n-Supply-Chain + + +Freight Trust Network Interface +
+ +## Documents of Trade + +TradeDocs Programtic Interface + +
+ + +## Lex as a Service + +### Concepts +- Units of Execution +- Units of Agreement +- Units of Afferent +- Units of Efferent +- Units of Lexigram + + +- Controlled Natural Language = Jurisdictional Grammar (see [Burgess](https://github.com/freight-trust/burgess) ) +- Afferent = Towards +- Efferent = Away + +## Blocks as `units of agreement` + +A couple of specific block linkages are stated as facts. Two general principles of block chaining based on such linkages are stated as "conclusion if condition" rules. (The diagrams' color coding is extended to the symbolic form by using green for facts and their rule-condition counterparts while using red for rule conclusions and their -- recursive -- rule-condition counterpart.) + +Facts +"Block1 links to Block2." +"Block2 links to Block3." +Rules +"x chains to y if x links to y." +"x chains to z if x links to y and y chains to z." + + +Facts are *primitives* (i.e. not containing variables) that apply +a predicate to arguments + +to Block1 followed by Block2 and +to Block2 followed by Block3 + + +Rules are of the form `conclusion :- condition` (i.e. containing variables), with the Prolog-like (symbol) infix `":-"` corresponding to the above "if". + +This consittutes the extent of which RuleML is applied to the `TradeDocs` system, a basic primitive set for `rule-conditions` + diff --git a/docs/tradedocs/documents.png b/docs/tradedocs/documents.png new file mode 100644 index 0000000000000000000000000000000000000000..2f793d893070356dc09e2e4ed1ea44b083141165 GIT binary patch literal 724510 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
AEEmyOwPT=M@k$V=Xs!w&V+YTlSOhV%!t# z?NZ_{U!JC((%d6^hv|lNkUX0TPymwN88UJHBiizxG3!GhPNl==@)h9SoEcT*_b)HB+)KMTbs#Rb}o7uo+L@K7n`|F!w|L8RpdY& z%-;xhhfkJ+;x|);RcvIIKG?UQ!TvO%rE!Ub?{}nN(n)iq=U`>GePTfq`uFUw{+H~D zA)*J6GS)K2?7z(-y2_%-Xj#0pg>1Z2u_VHty2N^@Fq(ALS>cvgEt(E|>lWm^daPZO4ttXxGw)L5KVO zx+x-FQTfjftd{&^@6S@lTI*u&xW&+r=%8=y7%XvJx%5$-BPiU$cx5KWl}lNvnE20` zJ;wEK?j)NLTprWi9z|f?TD0FK#PZ$=oi^w|rysox`EBv4$&q%CvO|d*@}Hd|iu@P- zKqMkT2+TgA;c)9O&BrmV&5l>_uewYtt$fq-u010xlK_g;;8ixLL(?ySlUM(828@uH z+mh9)L@5e2m)$Dm&E7Xq5w2dq17|DYqsPBG?H$qFGNreOa4E-a$txw(QzYxcqJIuW z_{Ucd5&jMgoG~|?_+|gB`?H6b{KJc;vm#>@=vh%rogb$lnAtQFojpO6=%+AWdHM9` z?0fLv@Pqqz&tR0HW5Az)n{b)%wnRrIpT#x!c@_CzkCYOco^8<6)>bT;qB0bZYj0Ny zB$LAE<02zGpAkdea@)R2;ZuNg{v6C72mkw1!<>-hy)Q-&J(Q1>Sl;U_m6bD$`ZFad zm;Y-@zL9D=QK_(H7>^lMhSd^+6x}+W8$jlW zSFe`;__2I)GSt!{xUn&j;ui)D*d)ZOIXORw6K)5u#%g#5_HK)$*NaX;|%7%b!oUXy(6h_<u?Pg7LJtkaA4z+ai5L+ zR~`HmhT6_l{?M57r@un^_w=#eGF^|*7!U)sG`eqZ4XeL<7ZiLy*!PZxzW#%|x&BR1 z?amMHqc5D50t*ixl`KM1=X}k4T2NF)g;+@mhl|VZ+x-SNez9j9J-5~6Z;+wF?HR*5 zMv{_}oSat(I{^U)lgl{$?ekCmIPveSaZ=bkTV28-Yl(qU=5}`F@ESP>;8uP3U{30r zWX>Bevhndl+38#j2_YdbA;B+a`4eDyj5%jO8beMc1A}CV6Vf-=$6cJF#-9@<0LeQ( zJ|^{5E_&~1qQj4@+=z7knf!22p8rCIY}lHX4*6|oTVGb2h6eZMqN$0hzdsjZWLMWy zSW0_zS<2iYVUMEO9eCT($;{8jjx9oG^E^_tol>Rrh(E3;P0SSE>J9NK zq6L<`g$2<>YhdzO;Op|+RiA5?zf9Il2Ies*mh1+i?ZrcNQ=;TkeJmd%q!!CEvF2N% zBudE0$T&Ehrlh3Q*1jI6&z5xGUubCm;GZWU?s8F1#gzTq^J4b!d8Pb(NH!-df`32H zgT??dgQW;=W$6!5!dT_hhvat)#PJsRj_YJF5K=Rm_?gOcr-EbNaCJF25a^$e-=*m* ze@D_IPGR#l0;Ydclah_-Ctl6Lqv5?SyNZny+b?m&_g>FmY675;Xll^<6gUF{m3LDvhOo< zrR5!Ap?IF%d-TUVIX`cysnvkU4pyjVDW+Qy?GKrO5wg)^ZcjTV3^rKisg z75boJ_xJq#Id*caHlgs9kXk}w^5@U1lJAY>6v|7uH8sub?T-L2oQTR*eaQh>%V_!H z>3~)%v}z$;k-(ntRuccF>9nx8Xt&PIOm=jzh%Da^_4(=E)Am*a=cxvJ^Vcm(=MysuojOGh(n6Fs%dDruu{RXbCQ#XDwwY?(A)&U`T<$;kqE zy^dGYWJNr<$UFM_;?-^;53Y}KJj2;WW49F&dg0NOEV3FqE%t6@SjvdF9WnX@HMLvmqoSqzFFs-ma;N7cTC-b2Xh^Fj<>p0 z$$W5zh-o)Zquky;Z~2DJkWJ41Ij%T>!e>GhJ(AFaMPF8Aq3wyocF!eUrDBt7fyHhs z$WEIgNdQCWZmbVbSOpO@0Nz;{k{XxADkU>2^9KT@sQ(Fuqk~vz$b&q`fCKr0T<8ZVjZ|uV z%DdGQV=kQ`4{+yVdu-1IOR~GF0%Rds2ff+BRxE(P0IG_X#8gi;UacGP;0rha@L0eF zaO3vmnS~N>y*LM);bG*v_U~%zNbj!4=aBOQd`3kKjOWBJvM2vz{iRSdre;OE)^W98 z4}`?Wa{H3#6Bfz{B>sio4D(9+$lU*%!f+5(dMTue*8%mDl*mm$=rT1`OEWZI<@`2u z*h{ZB-EnDEC=}cc<)#fr8&i(*^77C^@OaYa6`UJ@{b*@$=NWkKt{}pEh#~Y=8mle# z%LW5GV0SRjqfe#FYG;j>@#%$`HX48#HisQcLjDthyw}8D1jiM0+y)8-qpLEO%LRC<;w#Dlkd7RGNk=eNYo=fHFY134o)tM0wW`VKnU+q>}c`hW@NUu zFKw(Ce;0{mpSp)>{=ybE{%)l5divu>gW(!A9BiU|T@5Z5;2uu)CMm*P40LTbrU)W8 zeV^JOA}+_s%}tqdRh(GAZ;LV*Ff$`cZBG)SE%6W+uLgJJyo}!BBQqk>&z8>t)o4l7 zwn|Oa0)+HF-YS3e4-Ce;SqW^#4R!t~!gbjXWoF;!W#>N6 z(N4hf+awFQZ?W8i#*yR|URbNQQ+P$s)UO8PgTd~j-taWDjlpr;*{5@SYNS_A(V{rFIOnY?a|HJV=|?s zdq~ByRpv)M=jL`Rl20XvFW-A}1wG)DN?pDORO@wI1lxd~k7n=_RmOc-l0AYHvpGm8 z5yN8pTXIn)*^T*g*7j1$m9s2<;b!S9A_rb~-kRlj&(&A%qL%3STyFQC^6YHvjzTY| z>hE((B~zK;K=->lGg}yl44}$5lfZ#(i*}ji`i;OsgTwCt&Gisn;J_N4 zc!wBvm5sHb>hZuM?cYGn<(>fUbi`A=GFllYp6CIre`nXzI&$AzaI$gh`8Nuc#>C)k z&Uhsm0_3xF1Pwj-rkgOAmwEDjO=RQaGtZk%H{&Tnb}8VFM1~t4iNlpguPqv0$;bPC zDdFmMX|a42d(!u>iyFqMX^{FJ$Fv5^HUjh=&VgxDY~LrcB?ao>jV{mpAkS7Xmy>;mxp5L@Aq89zQBmLNw}* z`Bk2Kpx>7nTT?1u;0yI&5~Ud^-n8i*AEe6y_!>Hg>GAv#?@Z5fTGMtLFy`=ul$gC2*6q zWeELM#3<0~8%jHo=cCy(D;aKR2pkZHkdfX<6U(=3OcS%M;;j#eD8WvUkh8ZJmUsOF z8U&D@mD%0*KeR3O-fKvHXLy?+732xeI5( zOmw%AJT18l`5=k_AWI^#*JZ!i?r*ewlcI&fB$zV1$?3CCB$M{h@eRd;#->qwW=G^D zVWy0)O+eJW3q0JRoUNy^F{=OaPV#q=an!Xo1dXUsSCkz|&G1Bsu9{Sn6LtP6CR0C^ z&Ej~Wd6p(u{~}AM1=KoD^s26(mJ+0y)YnzvTZRcVZuGB%Icc^9NjXpRCDuld%+(ZP zrFt-A*&OaTO*!&L2{z^t;0k2;;JJy@AAFhnAreWp=3lGzN}6hA(AmM`ao2(5;<$OI z)LVnW?|QNL4wq8Th}8A{C?xC7z$a_eWR6G&YvaZ!`_UZgf0@iY;6>R_7zDUh*u)RM zNhCiaq~{L_s11?fS3y~^>Vw`MOMaQ+b&4V)!PjUGE9DEC6bhLrRM@=ylyw*67NFx^ zE7YWODjxrX#SAc&t-f`02>P-+Y%km!wWakI*Ld?r5_o2vlGV!SmJ0VXK1qxwa)bM1 zt)`Dy_=r>Mqi#s?;zVwcb*`4*&Dxp7vZ@n#PLnsruTCz{Ox5yx$02BF^+kFAYSh7} z+;b)($@t{gc(A==rnu$aewoZ&B0tTqF)Jn7US1II`gCVgAbGA9<V ze;F$zCMI7rAc+C}1v~o*0{X3ze?hW_*r22oS#IMHV+bWL;N5;FgsIl%H$OD* zHDUUUI-tc=J72GQu~X}=QhRpL+ET3#zBC8}_EU&;K)7nQt!8f(0f)Up<@lgrZt8PQ zXKK75q;tv@EVSC9GMY~OQ4q8t!F6}%=+4(4kTldHvsj8yRYmQ>Fc`95S}4hcJok~w z=*r%DbZUE=Oex3=w3ShcjT*=d46q`Zcd;UwkWV;IzV-RA8?G&8k%PoTb%bq>CW@&* zf$L;$3>FPWLz_`rf&-sMiRRp=E-gr{a3SgD@eytpLD@%@Z>;-#v8chB&J_s3#q4*= zvv<|OkQ-&_Q?FW#+7Vhk{&Uz85xVT{=_jRm8{AcbrGI)Wd*p}U^jIeAUh)l^j8bKr zRfgCuot~dznb=%vPeB^YZ$5y+?gpjp}FKC5;I~V6E_sSIn zW7R?nMoSY2GKAB|Ug6C=nK&Cj+8H`r^ z{P8La;y9hIBof+a0~s2&tW>O%ue*Craq)a4vpr4meeN1iE3g0`R)J)_pX(-Q_~OGt zx1ZNEE~Cxfnl4;)1VzYM%&b|(1F_4Hc(G=yewg-PK0dHh9i5%I-!nPL_n~36AGsLD z>qfqZY%51jboIDkcjXWlc6_TeoRuP&H7-baOhyGI#+r${g(iY-@s#Q*?OldoF(P(uGtusZjEtTF zJw3itaUzG`6s9QmsVMq)`P!$u%Wc9J`^xJ);p>}F5jG3(zE6|O`<9b49>Msu)Lbt^ zZ0$LwY`ED;>NX%3TkksX^8{pWM>x;`ou9V8n<=_3ch@J;igL#4McY zUq2=rP7AL$H7MDv`H-{-xBCpeNEYD!BM8{GRlyrZYO3IXlnF4;q$<O-xJq%<4@o{Rucyg0EZT8MVI*DtnJu6DQsonLFZV{23#n5(^>^rXp1=sVF^*%&2h zK$XU0!aDI7FGASF7erWwObehI5SM?u@>obHW2rph%KEI-i+F~ZFBTvD;uV$pbRcQM zL(rnnr8_-XJRP-{Fa4faYExB-a}+45#ZS#Y@zcXhie?|Pz;-`B+Tp~T=@U?yfqoq7 z8|=^GdOE)w(Ds*&#RySm=ElHVml>U=c?z$vhA{O-Q)C!~cv> z)ka*yB<~C<0FlXor_7U7&R=!r_JDyAjn>p2QF7mP6B6-h`Q<&1>()$QWm2ma&BjVN zSA$a;BmVxb`o_@W#MJ~9JXR)-MY&jfZ5D@SKTiZ4o46SH&Sd4~^qWrsSF*A; zjJu+g380b7a}FPzL%zvXdY=u#d7YjN1yeX^INAUJ@BOAh3Id?7Xu`zBKcRjC6l=-% zTZa6=GmEtqB?kbE69tlQaIVMu5@-e7IzNk2va`!2`8IP^4D{0(OMNvHHh(k)l-@$w z9>{apCl7s*dK$x_6j)2TAtkkU7oviEd4hS>TKk+jEn6CEhsl{01a9lnBJcZuND= z;27gpQ1E2^vQ_8#9<)fQ64xtjt?C=JXnR&iE1$5k=31M3LP)KvF9E)_fRzw1WP?MeGL_|2(oH)RM&b%KWNPY+&Fy zWU~M`l^EB!LG{g0Y7F{Ms2SU$*bFbkwL1X=k7O%%qk8r|Ugm7-o-R`CrPn>~N5u%7D5zs-*X4>PEo2N>F4c^Dor3 zyI$XgY=V_?he7(kWD|h-e*NNwvb;1nS~Lzb-1xXD*t!BaAN9dQf5X@(^n zfM-Y+!Q=1pC3#c;0GGbuKQ?(ajV@z}euq@y@eMK}{N*(KYQbFWMuxYA*1Lj&zZ zMJfB(cgy{A^n3=1a7QM;do71H@_}rzN+5-DM-NHRVe~!QK_=HQfIf7q*oj3V>m%PHf2wb(hWxV5)!PW&K zcjh)k^{x1ur^naZl9ltREhX+qo_rdjk1_KVlmH4P`s+^5?M6W?W-Z^{S+z3I^0SfX z{8N6E%ZRYD<8j5;-p7qiH_ zaodFrD!Vbn8izMd?RG}jvxd+d_Ee}`&OY@{^4U8|oxP)aQY$zgMrPBl;Jx54!jt6e zp51)jjpuXC@v-nUTjWfVma<$4`Kf{TpS&{V?m4F9xfUg3UnWv>XJYr`hrM*_)e#Yg zcZSk|qqE(}yXYCNNAWVRQk{Si-B~$~RX=%fRQdVTiNq1SD?7l`R_$^h>jfUdSLx;} z4YkzE6ZpXYEt|vpnGlE*S~v$~xG*%%*ra|&&$9HT+STjRp7N<^+n=r?bJzwRnuVRd zBsQ6wSfieqDsQ~|{UYHFybSF7E4w?xn+GGKLp8cZKQ0qy$eQgfu9IKi32jCn_5KpP}y9TIUqwNpGtgRD@L@f8%n848xBe+Sy@_Q)V zW+{M9hyE_2kcVL_*KJ9`v$qP+8l1Wv{CKG9Hy+Ab#Pry7ZWnp&z+o=?Ihn{>Fk$@o zHbD>*KqJcbEi&v;OV8+LrAq#C^4Bg#ek`gl)wtQt)d({@Mo^&_Ta9S0d!4*CBVkPr z3;iC&ozqkHRGZzGaQy)%ycPs1W+tk!J`$filj$#b_IqK{K

hlQHf9?hSziq}vlG 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‚Ixo` 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

@K@$ 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�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 G_`d*_1k7gu literal 0 HcmV?d00001 diff --git a/docs/tradedocs/events.png b/docs/tradedocs/events.png new file mode 100644 index 0000000000000000000000000000000000000000..8c22e2998d362095ecfda870fa0134b6842c1865 GIT binary patch literal 109780 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

  • 9@1FnR2l^MM0A^?E& zHPOL^zup?k`ixfZk2DEH8{(kPJ43Wps^2jN8s3Mow33b@TTW+IOCU@ovU}2jvR7>n zKqEC)mNK*7Q5?$Zse)^Knq$hP$y_F~odIpA$6umuBRUHw=n_~{P*ttgL<4(70T&xA zS7X8y@)25?bOSa4lJ|7AXEAR$U07=C^lESS*!oOT46{$d(T#G`vDR}oHRaJ{eE(dD zZfq9C;&NMXGi;n84dlFs%5pG;Zy!KgVAyz00Mwh^O!l8-4OEe)K|Vf2b?=VWuz{6` ze#ga8vx2JiJ2Nv*^9hqCa@nNw>}VAXWaJZ2jAwPi#u)u2NOz5fgq3>4m!g4MZC2B@?lJ_FgHT=aA#KHs3|6$3W8T_7$p}cJ%L4}~vTthM zStrL}%X))l|4_9QBeZ`o)bn@)YchEaCF?U4MIz}e#xY}W(k~>-Cp;c;fD0)iNm_=S zEwV{bGM*kaB88bG06)NM{HIX&7i`r_kVh2-_X!7C+;V$}8V z{eRO|Py>ty0M!Fo)(a7vz_N*da*x+C_9CJ^9Hp+V%pg0)c#ZD8F8g8Rr(YHAKWDL7 z8en$z!@3oJp!5H&Cinne%Jr}G79{xpO-cXvH@Lj(rU$yY1d>w zKZ#)M7-&vs)V~q}tVPXGWOWb@E&*-Ko;_$~vo0TSlt5Yn_{F7~M`bBIPA@&r=4(u4 z8B6*lsb2O|wRYp9r9Z{y1i{?;qsqQvMuf0G_zW3|+{~ zaDmZ;U61}%FFofoT_C1Y9Zd0DXS!lcAo{%KH>p3ZMN@+_#h7!nXb z*rN+5{{4xXwY7!Dp66#oeZ9e?UwLfx>j5AOm?%yk4K$QNP7)QxG;y@jk*S=80>JUH zXE5qK?Ys-C&R1Bj`lrU|LZf5yO_bT2u6Qjb*1PDfDfk`b$9%nyGT?&DZH-p|+J=Qi z&J+KzzHst4BAm6~teDuX`d-vI_19a?f9vUKxlUmP)7W85cbdbsf5IP}SmF1_1kB6_ zE+64f&i3x&w?MKVACEIK(z-YIBu#YH49F9f{4J)-1Gxde9st=m*quQ7ERljk(2zI- zOwo6SGc(`Wfgy$%G4Hdx6Jg_V{uXy-_uE(@$@;DT&`82o2ge;B;HLQaq-1BC{s}QF z{$KFMyM7dW1|IQEp6nJ&;CKgV4?c(07|70y2Z^3Zd;KX3zycrkg%QeE`~RKZPm|Wb zHi`g)q3bp0r{*X^!r!&R=M~hx-v*4{i4I_A-l0Z2|6sLvNKo+)-DBtfCnyE){fr0!JG z&jBdmnacZwzBgGMg-GkyYUNu{i^%=+&48?;{jHLNnVFS^Wp^wexgL{+@#% z6O#f2AihE09|Q3`nCypnAUKl+U}sxCo~vx6E||Q<1&wAy7;9I2y~21Mtcv_HaJ0eB zUU_Bi2P!7?P>3t&^Z53JYry*Ce~OT7PO@0*CR|QHKo#vN;{zM|_*g$4h%QD)M@fGv zYGgT;=p+M><#CSL%yE$)Qgc-))9{e|Vx2t=9XD4|Hn)tvzW#HNKhqwqg?v@Yg+L&0 z0mgRGhC`q5&T?K^Rn-_!@8&*%WfapGS^TP0YTH?XQ#h^NDSlM62;vJqkMj}AGys269bK&i4}euOkih1)F_cm`RhrH&6Oo87^J=Efo`)6~ zpx|!x?2>d*lC}C2hOZXpQKx8ICCG5PpKf%83R_qjM=UEa)AYn@?UyvmYSpjF0F~R5 zZ1()+-T7XSkC&G-U}JZd`BVm8j&>rz@2(nwfCOJ1UU?6Uxq=l*fZBJC??3i?YVGf4 zC0LRFkGx|Cc~b>mtd4olOh5<(G+i-S-I19zKMU zNMSsclS0bvaX;R0*&JcEdMzcTG=YM6Sp)#gvFAM10+vVJ;i;%ZbIDIb9qi|7?@{Dj z=hymxxrKbceK9~KPsuq4ej5hEG{E-hL2V-LK@HtKo%GPP8r#p1%DpDWt zyQ2SSdiz!bb1;XROUCegU#D=s$rH)RS|9LY!Mw846#y86I3Rm)v10eZ;O)#QUmZe)~Z`tGtN7^uE8y1VKD&fV*;6~ zkOUS^M}7lUijcTO{P}NHCv$ZM61UWIxTJjUUhQ*MqdAX0!r!>N1&!!~CRB?lwdbV= z@JqK4?Ri26@Yvu`=X58qhA0e0MGsn9>VcWm6k!mU0(rYr^YPpu|G_pf+Oi;|8*)AT z=_7)3Zq?AY1-IU%R=>6&^ef<*E?~)otVfjw<|rriy<$7D0Hnvu-bM7oR=u{{D(PbC zlyqQ32B`YoeGR2fI|OWOY)PfQ|C~QzcJ25a9$WiMeT>{Q;o57Rz#xuvc~LB(J26(wc3J-^$VwUiQMRti8nGiJFIO zfID;mErkSvED=cpdnPD*GxV zuQO4BR!!L@-1DJFk9{HX$7G6pviS~_gvfu!llB8;6o0vgD~8C!5MTrn+h{T}ZuQy! z$b2j(=M>3p-PaeE_Q4jt=lO3BoOF4Le0;Yd~JP)OUP>F3sK3*fY`~f0@H8?JKu&Y zS=l`74DhHT@&6nn5CFb=XS=w#m_vqTG0J|p*B8Vq6~^W!bbfwZ3sDD&Dd(~85*!Qj zomsD6lL#PXofMgQcv7qoaRnhEqI9F|lgF)MA5k6gejliGh@rx^_eh_7F2qo-zPqn) zNaYC!v?>HJbK0tq-6RP-cu>=H$|mVQ%^J#8H$r(9R^}{Ri9Pa0+@a>rm2*I*K57is?dUw=qebQLjxyv7 zlLi;*@j%3?==kr9TKTPOReb)>ub>P9rC7y8wcR}(V7GxukP*H4=iB}V&fT*1)=s!V zH1sLFDNKf<%706bK10et-WO)oHPjrZo)TztvfzlCjyrPMRSE~Okge6c+Q2^f#SQNV z#O|=8gYxh7<(Np~B(`wto}F4eu5v%keo@9$7i)q(tYq_wTBjpRQcqoR8B z$H!=BI$fARF9oWp|6UCxo%-i$?W9apRPHv`wkt#8XVE^LIml{9yyt(gwcgm$g71>_ zTY3bdJ+#*-LKXFM4Q9saA5g+7)Q=!45JLT2gz-K713BzbsGr*qC7%Al4F(bQhyS-< z9(-2(wQ-~$jtD(yiLpl6&|Zf@y&#$_-91EE zwr=O-J(Y9gv!GsvF=9vcsQfDb+*eHKtL#&uYc9u^tYLP@ZlXqq9x5;>@Mk<}mUj`N zqSSZpz}uvvp-BXV?Wi!cON8P-v?S=f>8bdcvLth02{dFdEueZO>@(Blrz&mj#pgom@l05v#A+=e1IqU&X6qn3T11HS_HAfV>vu#(zgwi|0`MBAJ+kP z1+go(j0p1mi()FMf^B(bsmBqm`jUc*(t5#KF$y zgxX{b&*0ln)Sg5IOA3ZDo00(U*+%$-!Y9{ooiMoP@aBzHizlBq;KWcV?~@SCm3 zXY1ciL2Z%rXHH+0C&~RD=gL%FflMrBl7~;TUIBFnTcBFx^}AuJB_hR@abASHWuv5P z7b~Sc$-(4KItTMuF#fiAZ5i^(?(X}GF7F<=jGRk&@8s*oQ#s|Sf^;evh(tb*+j~3< zXZm7qIpAMrT2I^$o<1*LurhKF$URjFhUp`F39j~9;^CNQ3q^=Q!`bdblVnAem-m3+FA#&$ ztCtaw?}21F5)-9$)3%M7nyzCr>RN-0()zcspu!OrC@Tvt((nbIndwk5v%C1ye{SQA z!mQ&@ji0?0pju;jwz%7kmSM13T*KI^zT`x!@t~wY?;n-wa~N&Db!630?G8MT&N>PxH*!CVXQD1f6nv% zeQ7^356{J?dxOZPR$bJd9E{RPC*eVVrGA^wpg*hF`A2^SMr_yTY;NzxX7(vU?(!Ec zFu~gUvY#GI_>wg7{Tv#a3f0v6u!y|-{;J-9qh>t?l~QPE z{6mJ8{;v!TJ%tX8+yN(JZ?dIC)F>hXXl~W}K$LU4O*(*6a9%Kbk{LWK#9}t6uFSYbJqv_-P z$eh~47@uWpF8~Fegc4OvHe}4Sozz!Vg%ohyH93LOEr7F(Pxnl%@+f(}(}_VfQh#4h z`UhNGKg&VcOpW2mAB9;36%|Z$gyBymB_~l5m~OcMKDzZa2$MrX67J*x-Tgv4Vq(Jk zYH1F(dZ~@HiOIU5;1Id^--0ukM&#SPuE*D`WAzE~wr+8Zc+cjR6Ag}FF!VE~dDv|Kr2b*U=lz`!*I0nu=(EBpLgSC;#a zuI#)hN>?UN>yncjYw@qJ%+M?-j`$TMd(*@ifYPC4udNXuuD$Toa0wiW_O5av@Y<5c zOj&#Pry3^=DJlK3v_ZTGX8+G6F=SNB#P7oHp?LOmx4!n^Tj~1j+ey!5eltxc;_Qqt zMD;6}>J}_RkvzV0)A?V{2e!RxT?bNxi_0-+HB3CP-gmieVCnf2;0W)c=2dFt?g$TX zOW2qCQ`6JM&FH&7o&;6dj@$<>R8{XUt=R39!^4-cZ?^DumQ<_iCAcU!_aTObT)V3J zJ*QFrTLT$KQ@p?hqZ= zM_w-=8>I>nde}-TP0NA7%Nuy(&l#dK^=mD`QBrNCn<%MmKPyoIO z$xO|PrJj7_3u<(;o=}$kSQ4w!YW_2nG-o`k%k;5(V5$xXo6L2HgQI63#pTEWkUsdCOnu1J z_tX1ut`~9n@=)VPify=OApiA>UV5v7!foK2JC$iviNialX9JejM(V2UbO)>K<-s-#JRu#ql=i4p7E!ayQ!$R7 z!k2_8of3|_DxD_O6u3qaufYAd9^A405jj=vL-A&8mQEVJ+WEZqor0 zD?!<-$Vm}{%Er(cI)Muq$=`u*DzeSo8(KJ(z5I1rLb0aYL#Mv)bR*FpcfFnF4Zd}_ zJ>8&sc$tjXUDS&YU2gb~BR(0*&Drh)23jq=uxFBw>q!1#G@9nym6f%Z{Bs>;@z+H5 z|JZ%OXJLc3Z-45L@@N2Cpm;1%aM$@qThZR}D~h=^zdI|DC)-Pp=gM|w)spOk+_0C z{tnG%Q0bVzc1g&wpaR0bu6!11IT^#nE?#qshUg3?LKmtK{Ivv1g(U_zFNh7iI-rPS zKHsA56;wsZT2N8l75Imi-~X`Y2v^4+x1u;{T#U5M`kVgukHL z8DCG-cl>?d|EKp!j1z#;mHqXaP}m*r^Dpf9|Dmre<8bdUzUow?K*2;fGj%ES2wE@x zF+il=8ylG!TvPGA&7(#JwVq@r+!hmc!wBS+{|pY&pYZ+F2$@4iZ^w5TQQUmet{cPA zsXK`xPhG6&)vQUflW2hxYymzkEIb?vAQ+S){^oy*q3KMIJ~)X0r~n%bGqYPo{sPo$DoJrid00Xv3Z# ztz67E9)E~Sve9gY7aysp`~Z#gRHm+E>P!nGRJ`Q!|3orr+QiyG1&r!2 zWRQ=L1e)797U+%NlqEb;3oE0;izvXYg!%>ZQKh<|L z(*=m3oFD2Dqp%$#R*=t-#HFsSwNvp4jtg6~$Mvd5oof#_v2raG4|YAB#$%WMZ^*YL zd!PUD_hRe4z1-B&{Gnjj5?i|RfKUah*dt9iLv{{G!-iijZ|gnc;sVln9gdpS(G%8g z$SSe2GRMWcj~3$!erV_}v046(4SiN{tk>4E0M9eu^>JLM2;^mcV8@vc-kSqZ15z~= zLFtW3mi{qAH1QriYICi$?!A9c>o}x6ij}sS^m=W}fMBVUYbv?Zt50tza}*vwAtvda zTU-qLd?OH9Tw->+hV@>1ZXTQI$k0Sr^0Og-x!8jzs_dvt4G?(PLlw?m2?-99^&i7H zoEMk+(cd=8MD&@NnSG<(r&hbCrK+6r?Vla)B=m%rbuZS7RBaf2l*CzUE9X{t1Zkvq zlcW^kjzT?O@AH9CP2$pT_ZU1hRSXe|L>8q}Q_puMg+d@tvM1U9tIEg6Ga`ca_&Wrj z2tVl$Gzr58M1ITqB+>_@*EKlCm~F!`tvwJ)RwE)q(&x<=70sW2IAtW{y{jWTa0oBE3V zqai%^_aphU#+2*HUnejrUv%2oCo4RbiMh5z%j{iE5vH(q#1gGG=P7pc?-TLsfX+yn z>nQ71Q(z?A5@x6pwf9>gt$E!)cThz?8vV)s2S zL8h|1f^o?kD9+wYM?yU0>eS_AZ7FFR8$88^Rbd{ta6$^*{W#k$9`juAr;b4vdyA+0VQZ>muB)p%hsXbtaT9Sk5(CACv z68c{;)7^(Fm?^3s-YY(>_d}r&Sp_k#BH}KyG!Nxn1rnNCX-(HnPQR``W7ztuUFab@ zVX;3G{sv+g*-ylSojpB|Wtc;XAr}w2NqMIDM@G8~-5|;Gc%G6VHL6y$rjCV$623(8 zgywt;>QqbVyaN*an3%&PmX{+%VBG=MZr1Z1Q36iCzFh*9Bcz2mOg{gRdH}>fQBr1R zsr{yqGH7ktp-Y58pTYiyD`V%V>!3e5AF!o{fg4adE;_(i$Vie;IZU9fgp9l?%ZH{OB~SIyQEHVwN2dI+67 zNNXq}XQNrWf`(gtB}LrORVf=)<>Yuvci6+tcb0wu!O=I+dZ#89ikz5>#{i2K*|da* zKps!RRK8}oG<0^lPDl6I-Mc<7&<%066F)*D%l zvhH{o511AY3`1sSs9{lbML{tQC=!$IyCAt-=dPtK>oBDHndQ^I_rbXaVW1|L2XwiSsPXI-DZoVA%tv zzpbWIKfh?cGVMoc98e(ds|8)dPkytZ)uHcX8F%}k(FogSkF(a*FW_qdsuL)_baq-Q zmawr|?`>L|eGLmUCo?#hpspb1Kbg*0o&Q@holHOf&UAX5=%Y+V9~?X|L4SDeq2k@! zHeT7r*VUK2iL|Rm*o{oQY6;}-8{PH7$f_scxlMc|D2Vs)VVpOSqi}5PTkj`l#w%8@ zzTj9~d6O8GWs4k{-CbL1X>G-}&n&O!L`2lKw==$fe|~8;5ZYsFTKdcqmfi0`d# z(34gb!Sy1Fj|W5ySE(dJ?o!jF(E@-qxCnbBzkj7JLb{)ebpBprbC%`vXM;&^HkptW zD$fKg6ESG5Yb8USBvE-+4jX~epC5~hRpmRvr9Kh#WNIoCCiV0Z@_rhvjFcALeW<{8g%}dAYzEI8A@M2!Q_xIHOOz2D zfr9Z#xpF?PH1zdlspU(wwpu3Lp*6tmr|FJ4_~E-ewHt@<<7f_)%kG8=G5v2P(52Q>}1%wZ~}x-sh5wyrg~#BA6MA^SnboSH2JW^Gg#?BMiyi?8*)sScCPD! zWv!&Nu{cChWCILvFJh3Ppd}dMAzsw)SuAQv%f%`j+PUN!h4jlhFU$E82j|XdrS}79 z_ew=;VG$Kk9#Y0UH$g-=&Mk|l!)L#9n<9X!*3iSmYw~!XVYff?Hmjij(9#I10Hz6C zWX{LhMLL_N%2eld$E5#oSa2ojGBDW6a#!JKa@!V^6Fx6UD##%yJ$B~%>G!a}_cYSt ztt+@x=2T5;ZT0uIX<+uAZM+7$(a>h_rrbeW!$59(}gKVu=| zFTQ25F+miH`)>AvDz^RlE}s_mS8~XyxVyXW9~=Z;Tf!LAG;sY|{&oj@Kv-U0-t7<@ z?W@=?G{jE{M+X63oL|04dqH=^StF-sI7aG+t4pON!}3=Wj2nU~GmZeg^q><}2Q#RE zD}WfrltuC7*RC-~Z+0*TI1R3fOG)9caH74Yc!W;8&fn_W^^Mn4Y)YV5ruA8ynABwG zJyM#dPA=#{m;=HR5}4wG@aGekoq`l#yotr>@qh=n!r7(+wyy#(9_>tIf0VzsWV^%qk^_aI6!8Q z`PKQ|j=zu3<#88uG+KGKdYskCULrQ$-3=F2@~jNgr6Nt{OiNdDUOI-O;iv}=GufaBgvwDuqUmbfrg|$mRE7!^1&1tj$ zJ38GKr>%WlY-RVD|IE9U_a)w(BA8r1abV_rSF%JU2Ipg|d_Qk;-`^;8&oOd7(sKwP zoC%NSJ2L8z$jMDS(0=t0lkq1GA3^5uJIzs4j`5CP0yo7aP4mP?jh4joOC|K5gyfQ> zWj(}ym{JSkez*tA2NIL-+7%H#Hzoz&-k5VxH*ss4bl{1bj8m}L(YAev37u|#e?|;Z zHnU8gI>7mSR-M&Tvv9v4&eNM(@1(om`jN)q`BAC6DX@#cXR(FQN$%79N<5Zbx4ky# zx-E4Hhq_*A&$>Fqj@XDx*0RmY<(SvuaOcrgQeynfKo?kQFxKZ|?0xN?tuW>iQ(O~i z3ba40B+JcnjTZlTWiYQGA)K{BlOf4wZSzerVJ*(h%Tz2Dy<=5;wbLEqBDK+5naN<9 zsJ+Afa>PGQp-duTHzh*z-^4`}oNy&LzOUG#O8e&==BF1A>T zM4zuY3Vq}`E%OM$TQV+Yuvn%2j?2bGf4F2uRdqctA}DBXB4^@o)f5^{4Wz2vSEL9^ z-`RRvqeQJDDQ1qV5?fS~v9)cDd36-h5ZW*zU%tGekzO(!EHK<&2qt8Xa$1Q9-OHc@ zp&8U%KmOc4I^u#{?7gJ8F&q6sScoGx|8SQ%w7Ivlx*@>X#I*F_Ff*LPv|(eqvzQ0} zrF4vxUJDVsVc>F4`jw|Y<|;q4=*rsIoGon(#u~ue`rU;Qx&A{-;E0Wa-iVU{=cHMp z^xSFM`tu3s91RM-ru~oYWF!KJAZt@gwBuz&fE`HKwCQeA3F=I_WCZALuK* z&NHp^#vdqrDNUls*?4i&SfO1%V`FPxIO)ZfL3@o-!sB^x#(#qK)>YLo^xtVPm(j^@ ze!`fIOrG<6m{F*sJD8hLv_^x|77=js#@uKH3A8DEV4)N3jzuFo9>rHlL_{RpxH|Mh@BKsyi5tkY~&9Fk{DD6oa(z~q9(%Pyi%g^~L*@#+>PGer)- zFLhz<)FXt=$PLYu^L%cF=X847u|f;=Lg9d#Fs zrVoTPlEL)TQ*4P(x%gOOkSXhJbo~|10m+6KYJCMQZy52e1*V{1aN%TQ%PJ(3;UpoZ zW^s;_6)$%n@GiVn>B9H=z;a`XKRz66Fu;+P!R7F6(6gfO{rtvNR+U7<&I4#nqU-MB z(z+!Z7w1NQ6pH`t&*4hi*$l%-WW7q%Rj!=Apx@fiU;zy#$A_|Aj>6y-gmG_w)TB?Z zZ>7`1rI^Li(=1{5^WQYKPOI zA6G~C9-puq&b`GbCd*{_9|rJ#shR&&35JUM7VEtLY|cTT0OZin+HbS9<81Di&s;GzaeM#d zo5-WnmMi=4YSafakm9x4`0U3iE>j=Y5TlW*-U%h zmi&XiFPp&qjY0;OvQnKkwMPXxTwA!2o2bbc4hQG8+HWY;+UcD_GrpDo>9kkf5IP7i zq|G}H1S>}M}xY9)3wnta# zQ9yb)vE!_TeH%)PJl&^s@f z+aJ#r$Ljk>Asjdq05i9(JI2UH+|Y6D(ONW(UYq6Q&!GECJ+ka+PssN1ixyd*w!h3a zsbYVjL))10yH^i8wQtOL9?oVe&NiP#6O=OeOxdCS*dbOtlX5FT;XE5IyYvlO4gJye zk9)?y3K}YMkBprrO^22ZLX-7pUJ~@6yNgvppZnUn%0{#=N}By!#TpsvWkS!&+8XAW z84p`O&-NC%ifz8x(~6tGg)drCNjhFXi}tm>9X!N#L+=o5i3VvPs$c7E%vacb+FxrN z_7CE;xo}Yhx$4TLnwhJqcTuv6=C%Ohr+uWIQxmaYSWlF6Y9rR>htUIe7wdzu3q2pi zKT|r4na%erj zadm}b=Tl^PAN@7cQ&R(ARqF`j6}+y#XdT|+KGL|Dy@^%FYKPloZoZ#`=8o(Is%)McyT-qs*|V$R=X@zq>xFJ*)$}<$JeVBoXP^NwQ4Lxkc#|4Gtz;!t0@Fi z7dRYolQS?x$;XNY$4e&WOam~icO}CHG7YT zzff}9n_ZKPx$RMQ49vu51x$-tf#U|Hde>vFh{3m=5iojrw}aAW7I^Ki8|vs}*{x4~ z|BjtU|G+NyiPX=Q7U&+w#5AkllO`u{!W+U!Lsjg$UN<}4G!Li@oVIC$tyYh_XIeJ< z2N+b4x7f1o=wDZf%`@!OfzSYuFnIG5ab_^n&HLP}Y5qhfMImV<$;41$+;n`@+}M~z z2WMYeZBq(?A%nVE_X4ZyiM2N`BF;5VGL#wKy~D0q+i+04N{T^H*X$4}fmx;a*r{me>U9&4jVZD7t$pk8oSXP4?YG}uNQRaZ6u z(_i+g4D&E@koEDr(hbd_5{A1S8X#1Yi%;#v;jGwUHy(`WO4n%&%u%S&ro+2)uezqv z0ZfcOQ&u?L6y6d2D1unEwmkeuurk8;vpWV1+#*EoP*MU~v6`31B9w0U=`*P!TZaRd zY}QMC(gi~~@!eC6=rU15y%1Lb!!3Ww`s*VshJv0dE$tt^jKRtZQ-;L--9Nuj+OBFy zJj1>^`f59+42Uq0a`=86jt<6Wu2@vb)NZKnNe_42&mrr*aDYG}Bl>f)v&rcQjh|{( zLUYnV&}@+(Cf0^m+P#9hjg&h%BO|^rYc5?fd-_8;ZI7Ivf4BCwnS{Jy_*?$mCMyIW zCNVxrN?SSh)`q&1oFYk-nkf#%d#`0ArF#~KSfA5dVK1^xcgaXM9=-*ND50Sdr>Bzu zhALyQm1mrhFwaExL)pX8uMvG0>(-^Vf`U!k=rFjnBe~hVlHp^4_UQO7gUJ z$2c9D{>ZE}dx)hI1n4ahQ|IIE3duNqStm~B({-oJEE z#OVh{Kf%PnX`}QdJ;F}De(5H|`nL7Ap0j6rHd|t?7e%4SWZcZbk*DK5GSHTrLcC*b zyu6Pk{Bo*hCAH+?PK&C2tf)0HG4*?QQw9}jW#jR9| zp5T~@4Ud#`zcCGurnLBYvNPx-5$w~S^L%r8kWg+EWfN97J^C|KDw{G#uh_DF9*2^U zFz@?O^Tf$%y&r1!)1I}+(ZKp}yjw|FxTpjvn^w| zl@C2(xE3bs!hmRhYiX86Tg_Z{b_5W?3as8KmF5drBC*tiacOPm``<+CU|s1FWw#q0W7 z^xLGNlP9z*si<&Jl5PR%*pUO;A)+t&&c2cYJv6e-C*t_YU8#^l#^=4Zp(ZJ6y)|be zFU)bGQkb!yXDBQky<^auadQ~7W3VGiOY*oZbe(}{ZD-7rGqFM`Re8Rd`PPpgr6VQy z#DudHb2m;BIymrO?tW29;9yQ`WLx9s+?(&Wf`OJ;HlyD8buS!88Ol_^uB z&Yw4!PGO*-;q`#YU;&*fQSi&YdomD1)qNMNRLQgi^TG$0ARi&Gjx+Hc-Vfz#5HOf>uE1Ac9UQ|73u{XWaglIoW+TV)p3$=2vy@!@H@e~0E`+c@m64d<4g2AfJubsdPq@3j)dxVI|~4+RzSus`PtWmymsgVnvXdiP`{ z$3}83`mIIE%^}kzIv#f9^-CKSTz2M^wgY>Kr?tMQsT1xMUQ}Hwq*7d07;rR$%(puv zseB=!v{8P0p4W_(;RuO6?#&C*wARJicYO6TM%r5tS2p1;+h;9)p5(waV8~XwJ%Do0 zl1G7(oz10#$U**beL^#?<7JZ*Bj>15F`OPdnU2<{+vz5dH1IQj#P6Hb&{;dFFk{!1 zM*zU|TIIGea$$>0SO4n6yI1~x=GRXlFQw5xwNJa^bS9c|vv`_R0@#foueJ+aT z$ZLcr)aW|O&bpnm4#j5cnAYUXag}*XJTIa&Cy&WnE)X=@UJIZ&HHCraM4Qs+JZutG z9f}L~Q1jjCTD*qb&zg(DV$QTB>~Rc_Q(c@xTQwe-Tu*L(ss&ti_$f1fpLGdc{qjcg z2xX!B0^d7zZ0WH4+q*2BDUo$P2B&^ss8>D4h}X|$sGmW-id9nNP-#vQBa1Bj9BCQX zV!J|BxkWp?GZaXYwl)mi`A+^uZfGO#x*9r1M4$OueYP@sKe;V%)OgYPamg&{jHHWo zQr%qdd>e$v3;&G9F6HKW=OF@@iHFSdX8D7-dC%7aNAvgECgM-F-A8w;aB%Sd#`kDs z4WpzU<;}J(l%DZ}dtbH#=ktQ*U8Ojgc{1Z`1m5CBK(+|wlZbL!8!NYW*<1-Iz@3|u zmY*~2>+j7&=#2J<_LRhlMpih|hJ-7NTtiXEf?;rapshZX*6Z1yE-m|5a*mzI#;ATk zeI;h<0}^xT&@;3*y_jsp_cq3C&L$CDIuHbQXtKdep*L-jeu<)ytuDcIPj{Ig=wrz7 z?XEeCpxr^$3Va1Cj(?vM&H5}tMDf({0QJ_AfZF)x@b{V$j6{Xa|2*ab^gB!<{cGx> z$pYUmvJLm>5BVmv*WA$6D+QIbM&V?%E|>>$&JI@3kqg%jjQ~4tM`SvTv=HUhrx5z zj0g?r;?o)t@QR(&Ebjz}xvqr5!q|@UO2rCNf4rF)&+N&iV>Kj$INDKnt$Xf=&=6X= zZ>EC@vu%!mLN~foZ%|Uc!=>4IT1xOWG4XItuC_bXBE|pH)G^Y2D~Kk*n|CudP@{a{ zSfO9~SpxP2dvnxlglq466$>@1Yaax+4?=wt( zRNRcVAOe~AOJur>$`{blk6yptzHrqnZm8_0h`S#d+2MAtp{VG2C}O^DBE*95y@8)U zIP9zh(WojV9HXD;mFOYOtQj-_O%2UtgL%5Q{++A8BoHWd03z|HFG;1Wy|OYgSD&V% z!xvCjoYIsLyw6FFSCF#6=jH2FOwoymj9f$7v)OAH%n_*Bn1AjAcKP8XDBynI@4wSL zuMwx8j`}X-S~xj4z-fVM-_lm|(R(P0R?OAw2Je?EBnR&Xb=tqKKseA8(hWuEID_Wk zGvMG*g3q9wq)~1GNvgN?=;)jfY13`+dl9fDHANczu_6sTDCx0_pGip29$Jt$A028z zH%gl|0DTa$?A_ASts5mX2pNz52H=(Tgp8j-^*A0m5s=h^S>)U4h``b5Y(b_*4KLs4963XqI)w>4l78SA?pF}0+*Ab zrOfGO4U>`7C9FXXJ)aiP`;hTIXu>D(2Q3p=lUxfW^!RuD8{2R|gKDIwrv}kDbH!f7 zvjxBFgtPMbDTbX1+sP4!)T7xic%bMeBUV9gcO_msbuX*TVLQ6U+52ZWXKPOZ1LIHy ziMEc;*yJP>2fb&w`#{sB-|pxjx^B7-RV;}LtYDUISk_Mduq}6q^pA{ej}f*Eq*3n6 zUnF!zX1^wgh?wc?b85k4*4W~*w*V_RYem~yLS|`9iF2ZTnVPd0Sk#`JaZG&9L{v#$(hD z{(BPN5kO3_K(+|nxEVHPcEG?{Ql>4q7z(W^DbbHpZ16R1%-=-D`gd0Md1n%d);JMQOOb{W;Jf z8C8uz7dqYp8uazeRVBBMg=|?u0zLtg(~B=>&MY48EGs4l-XCTTKaRupBknIS_!S2< zPrzn(x^XK$y{T4j1{G==s&!jcyB+6wJrVpM{_k0Uw}hfarrx4dUymRA6e$5vf1z#R zTK)Oan5UN3AlT@oOJ3HfBo&3xal?JV+HN+O3Y@ zq%^w3xJfE@ndOKE=0-$_*l-E=j6q^m0luH-aL!*YuKQds0}qCD_E2diw@(#w+Af!MwXVjX=!$9qyiPI5N#P~btUn?sPD_d ztUTg~m5b%hGhZ7M&0(vWfj2%+3S5UZgc2E5VeF|n(_>>T+}yebTHq(_h4ATo>46H3JaI!${077^}=(r;v4_Kk}h!<-_M_>G~y*5X=>7B zOiecrwT1Qfo`J=qwx-`Q0n^>=`)j7Bx;ulmN~vLHgEQYTp)ilv`QRE@F<2S3MVZzy z`jgl!AGlYzsP4!yS5|?Y7MMOpPK^5H*3{T$Wd(vM!RFvN$JW{tU9Et_8V4lY47-uy z_;LP(Q?)m$Y%cHg%=VH;fUQk_P6|7aek?+mwxVLQt?6F|)1UDyhQAz%$gQR@uWb%J zI+qxOqMsmnjBihq_K8k``~I(wA&WiiG~~^V;?NXQ+rZ$v%bAxGwP(Okyk<0nKI=eE zt`zphpJeO?FE-hSv4&M3uLKEfxhd-xsFBkeaEpB15hu>a(v0w<=;)-JXRf4~az8q( z%zm69J0t|$+|19L&mvUGfXLuG3!M31sncXz*;pJg?#sBAaYz)?c^;zbQ)w77WM zVgkQ@mFl{mBE0QKGT68(?ni1G!q~hmbp^Of)JbcN2S!Hv2VR$OExx{xyT^p- zS%gtSh%}1+_tiBXa(@%47SO_=%lmhi{UwWVI$&EUPdJa0|2I2~*5&n{n?nB1-#8b| zdP5pf=Agt>WOG^ID%tx?HC;|UpN|Xrhpmx3%I5Z_^Rv^Hc6BJGo+NU}7>i_aGb}qbp6W%3W zcmU-f0b`gV%yo;366=;?p?Jonfqb`T?XO@bAFvXC^e=3eKslO(bQ!IV=-RH5&JeEy zaOBvuT~J%%dD3Sd>S@X|w9w`d2)-@E?O+Yi6@e4&ML5C_bYjc3$} zZA(4&dHa^*Rk~bE5k`;r!gm0+HSbk}^f!4De*HVEVQC2q7v8vaD~B1&BAWg1fIEN} zPHlAfmyR2&bYj^OwEGVZDEbZwRK>hMJqEbO}q32ZzsOHd+R79+PXb~d)>p}(RYy!t-(3;5P}%rqB(4PYj{iNGF! z!**9_SE)GXQl~;r8x+{fsTkryTht)x?S{MJ=AHkWgGAV`%^P3f(_K}0nAXHzj^bfzlYT4_Glh`-IL>KfKvdzg6VITmS)ONaZR*FO5)k8sirDh2Ub@& z^8_?*&v(AT)NdtDPEA$FPnieuanILo#>Xc_JSOP~g~%+94%lH4A+LN6Q@(g*$tJ=UqS-Qg7-w+e&WJB=+un$WZ>JWK_fe;-aqV zj(7!C)LNhOor|W>(oGyVhhh3nLyjcH6>=XgG7eh?xhAR^gd13Oj3xs*GMvq!%$zn$ zg#%W9p7Q`X#K2ki98ZiJSzy_xPwh)foP_Q;X%2h$o(9;W`XX`$y@gC;)+#$awvwZ! zJB2FV2_~44N(^XqdfXkNqXyD08yuC|Pbl{MV2RY($_dsowwK>a?#}u5_@VoblTQbB zO8!^>Ccn^VSoUXpH6-9V&3}kLb>`wX-cn#|&iJDgz~2)o zxVhDsLQ9K_m(PqnYj+WH#9C%W^#J6%geHpz_l_3r9Tyjum32>3Q@OvFMdgnL^L_3*>qHbv00v{&}@epYXV+XuwGZ zf$;eAV^Apf$Hy?a`@o~1Lr#E;YabJBU)b^DGEH7#JAY6>0Qpc5C|XgD8>pZE?_0v4 zp5lM&a8nkZmY29&gBu_d39r-bsxuCNJopdaOUa#IF|Si?ByZlPklSk~#DTXdi1YfA z*Tl8?#~x_;<^pXv%v_n}z=t_`KebT9g8znR+gEk|7q|+_Ug$b|t00aAvyN^`VQNIq zRveoc&cm-4zq`5FAdEW61sT8N2v~oneE(qC)7Mv8LZZZCS^|C`LRkAkdl#nLYYMar zx0Zdo5`1zgyY1D%{}P+; z=ns`wZw?umccft`N*lXx2Nc$vZw1vi$g-WBoyBnt_uBh#_;KA)tqf$(l^s5RXJ8S> zL2|ZBsH$d1+Vg{J&>5E0ikx}N@~4G%?j?570iBv^JCXO>GGCqe&!DfKih+x=-sHBq z)J5?*ilHu8nl?41GtMga1U11Q307UWC84K`?0;SU5Le%xR%%ijpEZ#^nd_;Yv!5dQx(QcVJts!rOlI3La!rhs zJLs({~n3F>mSa<^M%mzP`CFjC zhgtJ=>$&jTxo-PU3%J)cH2p5GzPogZPSnVQ`zt|h&5qib1_)S2Xhw*#a+TZCVA)WOi9WnBUQ_6!ZMcIkHv{wJTjk%mn&SG*LEZ3FwQ_v)AG; zImhu^?|^~tsG!UnZM;e};E+UQcQ@Mq>j8hh;|n1nqkw^!D@hntS>?Yq9mw?}=7rZ4 zZ}@Mem%rcnvS{#DUEB0yiGAyh%2DJOAL|tINvBZMVUR`{SxlM zhtzDv43iw=-s{IgC}qXVC>bnNP0Tt<*#X9~&7m^0iwRxlQCqm|xr}MUhG8&{CzF0!#6IT1PG{kffHhaO!}#(6-!Wyvf36EIVKTjlZ0;c z@Se$4nW$whXC~KszR^4Z9~Bm>%8P|)GCz`D;(x0p$#sw`3@c-ZzcWqsom6<-_7}8D zNk~{`=cR>wo~t)Yh;ys2UBZ1?O<^N~j_y3;dFR7oPmA+0??L^??*N*TOhZFc)C2_QCgx%2{*7Eg_lI(qfL zN>6~fs7=MBL0$n*8;1seQV>;77%jB$Bnp}hW3CLB9)Y-Vh+3Yf>rDRb8wG#qKKyDk zj!JX+Y8x%z*+pPlG%U8Y_qa zkmmwygs9Kl(Sp+DLAM3}7x2k1Y{o#S_V*XR#MoWcl-5SP8vxQv#T2N*XC+P#9hsNo zK@+b#?Rqrb4`k#(;bM1gUyd%h%9m12mr&@TEq?MTbx}h3BU!vNLmv*O8B)d_pybyO z-0LGriGRFK*a2LAx`{L_VIVJgogG=vj^n|q?3%&TR9 zBk{hZW5Uv>Oc`%P$x&EGTi6$Av%YKwi zRzt(Ht@^f6SCT=u?k`-HQz&pG4UC5Ww}6gcOb(#TP$f~3`b&*LM|A5JlR8HvW-@iT z2(T0Q`QlW0_E0L7A!SpEWD0PQCvl(}-!W&}-b-}17jXpG!*{yZT)^1YfjVx9dOQFQ+ zesiv-=UHK-ZM8a+LH}2RM^>QCWUY7|lRd(*SG9h&X#1kBWN_xc3+ zUf#+Uzd!5X&NMKKw`l0&(pSNuGhLmaQVw2WtFki7HcERSoA*nGAdqG!F);M>mymz1 zkp=aC7Gj8xYMywdS4JF^9CYuJ3AuWKYB8Kz6Q$nd!-XQnKTMm}9yuWB$>DqeqOTJU z^S7Qo3GvDz$0HfOL>ilOPfGwFU-Bzsl#JINJu9e$qe{WXb4+tS^aB9q%}{bjXW*~h zy`QOftZgp}KmanuluNep@vYNpvH5|~;FO-mABG38m8MjPGW1b+E>RaCklU~IU6%ba z87yQtekut_FYS0As3>&>q6b4IEp=OlJub{qLRiFRG#=I+Vu8qef*3wiOG`+e++w&! zYxZ1S?I7OxJtF|&|98{jbM@>@O$@`WUzC%Bxg9)?U>(GK@j(^DBS0Tv)XJWaiF+ZM z`5F}1ZQYC0`0l-~4X8k%fCR*nCxDuux+JrrFn@M9!^0B*Abp1&&5UmeBIATmZ^xI4 zykyjC4FFFBRIHN&qn-NPBkiGK60vK4u4}?}5NX>bt*q$&xfbV>XCYeyMH&J8oTpb* zS65;JP&Kk;&)B5+>f-wYdJEwc=U0UKx2Xfz{Z0KVQ0$hOz}L<;q-8uMZ9ZM zPX?OWh4KQoKC#H8uR0gtSLjU4PFfj`GTD;R87FV2m|`4{x06G;-v!I~Vl00+El&LB zJ*4CwYtOU0h(iwuTYPRI;$6E)pS+;$3)GrB&idNiMz*&2jR8n!7B5o;gb*UL-7lsj z&?MoO_!9qqMFBViHiMUWi~=?L<{?i2EQ!%EsGXE*}~C=AAr^ zrut;Yvg2D0HfRZ(IVlzUq*Zo1!{p!GjxxZptA*rASbnFIDRsX*jf25xRPHk*S4sgK z^3^oFh+rnp$fz}vctG9Bcs7cc8jHZ?A~tO9b#vrS!UcmSRjn7?-5^Bt_6e~Zge8PQ z_a<9q#QXR>T#V}tI|z4-)U-m!YA@6b#msmZ-YcQcj6*eJ*ivQvzXBT08dUKm$Ns#` z{xN@`$P2Ozr|P?bHO@gakP60wdSZKfI*vA5sDz?m1Qg}5?cag3yt_sEy#b4QX8~bI!X@>!U*~kPh|6DZ z2fU~TgDc?CXbC{B-=lvl9LWQh8%D9PoDczUkQ29vUF=HBq7j zc)~#5u(9UsKaNB6^)0ugHWW672mc?SP707T_oXVWW~)zEQ=54*g3=FOv4Th3nrnRL z>L5EJCYQ|R?oUrVTu2{no*UrII@S>fZMeG{XK`Bnaq3@M6-)5AygW`Pz(26{YLqcQ zBfvLQ13h>?f4>0EKgcgG1pxp>?<-v531gzg+(=Ka!p*rZRD9s4J9n4O!BXA%Z&Sq+ zP;xX;VGdF|fS$v#BcJ{)!3jgOG4UI>=ZqBmNFb1X&FLBZGJ82Hxhs|)+8dUb_Z%4? zzm#OOuHOale}C7)X6HOH_B`7+bF4eM1Vrpj`MW|W&+0tgXe4kQ11BpM7tywq_397ss%XZNd z&+hkFU9&1IGHwmznjT+=tN-<~VM7q@g7amqZ%pU*^LYlx-Lk*7Xy%luqEmx&;J8=3f{ zupm9F7dM~#6YYE)@WCSEX}XZ!Tj!RHMh_@fx_%4=-KgK)n$>#ovd#Zw#=lP*_;*l+ zsn@BKNmKs!Za5<|6FR76J)u6BTJtgW+l@l76&0;sM1%}sfFFPyUG`_%X}HJ=*iW9t*}39| zKlo4a@<+M50u@JSgNsR^p}3pm-$>Jm9ad@4b7kcydSNr}jP*z%v2tl`BX_hhb4X2) z=tl&lqJ*L%zQC8dy1K0Au3kUVA<^U-E}zz|WhEr=1S$T;+jAGtiDcJP!3@8{gH+{f z8Bbf%lL#FbQipfm;(cW##KaJ}uW-D_{uPYr?;sM+M{E`1{@5DABRJ`QNHayN+TEsw z+PSBWC;mDVkQR0wt1P3$9wQ(A*!X<8o%S=qWfLs$ZNM`Hst(lA?aUEPGU zN#DX1V7t6%OzyvtOG&mL+fXXGSm)Vfrx2Vk>U4|R0o5VGPIu~Y2?_omf1FF-+v4$k zt9AC|6Ek3}Zce%*vqRHP)AmE-qK~7nIiYqUyAWSFd<5#9X1sDToVNy`v>g<$qNQR2*{dJPLmfx>W-fJj;_&AikH~ zJ=pdAlNbWSE2&2%aTFgO<2xt=bWMe!f`*HpKD_C^WE6w-`8WT{P{4y`kkOv1^UROc z68%Nt%M65?0mVpTOo0j%&Wk?TLdudZA*%u_0M9Bm;0dSO8aRHmG}=65c3{>v#vDaV zy9cOE6~&p}W&xR^PjGRvf@4B7@#{c!X};ze&6W97<&4+e`Z629jR&3_lWP7PaHK8Z z$sBEU0O|q?aU2aVZ|^mDbpaF$*xn28IJm4tCH4@Zu6ne{*VimLxUu)=ZB_?WiJbc7+u z1EN)$?7Er3}h+VXBz5AA2Hq+z$@p1FD=sZ z-|E!IYcKhptr*MIzvTp#cDZ$F$V=`%@psdB&q6e@ux`41Nk~eTpdf|(CyxrKRzF-F z3x%2NMJps;HjqMw66S^x5LjRGk%fO^s~j{eT2Z>|phYB^&Y(=6)0_oZlW74IB#($b zZZMElC6Lm&0irrUtwFl6ST5#oonwUi(CvXN$5)lFOB+8TCgGKGVJs8tP&|W2 z;<$IUEQ3Pioi#1}?UL*Oo^&bcp98AW|MN}I0qy&@d^l(0csnR(4`ABahnd@e^Z>>!%_ksncxrAqEl0klw-*Rk#N62vexFXGeRv$E zvQ1iiSU}QJH0h?HC@Mx!cC)edgSyDvXP3@H+DaKAkA}SJA(@5ZE&azvNNJ^W{Aj)_ z_SyP+cz)RZ6hKzt%8+UNDjW{3V}Y8@Z(WOw$Xmk9z#kc|Lc zEh6u$1K>mugq_unvzH&oZcDF=ZP~4r5!?Xwe;#+t{mjtg+}CiPx4(VZyDu@jyPMnE zdHcNSb-*|Fzn`en#Pk{ROBmrCm6H$?4Adf#gy^7xFys z-r+9;mE0S>dB>Geoi8f6isAP`1fUIgHH?|xzb}GFm4pk+!Sfcm8iV9xh~%x+of0+BNXQ&naD>9wndBExYjO}tt8m(_=brJ0LcpOCn$ zIRXLl1IQ#1tbi&s`JD}ryFfcAxycF{(3%D)*e!v&9z~_*@8-5~Pt)sbuTDpc2%;Qx zm)Zr{jYAEW7hDw#jL%PY2dW)i#bzwU)HS{@PaJ^|qb*G9nw6IJ8>nmtz8xd5zfMY- zqvu;&ZwfOZ@fCIts!JPv+|$Xy!vjn%eSc%;l?%@C(SXc627=&2b6e5>gGxXo-8ej+ zVd?Ddj=HKFfj3Gin6Z0VksMAyZm-R55OgbhZcn@k ztTA=?X7ZbaxlI9)!S_Y~=r@0z<&>&w$U5gzPyqYL%sw9qWM~1LN_ho_PqYX*cfs%- zlaIYFEN?{)Y-(wl6Zvd^;&@{3c9X<=d0lT$QUMHr26C*o(oz=*q5YK#iB#JLay%c( zkB-_EvnAo#=Y))eAuMpPz)Ef(FYas!RyAL^oyLU6)h+*DmPJqK~I(TcNK(_Y^5B~QY&t*U>FKzr$aTB zKU>=>nLP{g%}^bOAB7)JJ~A?n*e@beT1xNbcaCtKc>9XP=Cm=>$z64b*3`2k6TtT$yScD8`ku+US^=EQ;U60?sJqI_`z*E)!bVJ!eO8`V9N z(}mU!u;@HIJ&bCyFgNCU6TpZAc2KemM~M?u(|pY*AC29?WCTo~deVmv$0lLMwBFc& z2&C^%Atrc|QP|4@;6%?RjPFzudg}w(W5m?C-|a4g0GOsapM%g+vwMO^%o6uno^_ncSYu1|YgQ7(^w-@*hQ%NUv?p^Dj zqg7a4bcQl~qvt{$woZL321ePWEF4dE<^j>5?@3qv8HScbAnU+VUyvWH)XZW)+PMytf}JL>}W5}~uukC*<> z96IiSn}qj{03gyxsuq+gO?U+mp!V(Oegv6z<5T*40Ffu~I)KU?vWj)?34l4OuI|?R ztT$%SP?(}ZkSXWff0@GTcU+YfBQ5}0bSqP1Vz9k7lzciR9Is1I(_*q>9l&Qt+R$l! z_X!`?7iQ|rf-})Gn&lSL;^B@x8-VN3f062X5-J`4JV(FvW+q^H=j%x*V4b;)J>B#{ z<%;+gF1iD#E)UbczYeT%lz(9;e%&%$34?ujFp!h(3xx`;hbRTqoHYTcl4uS}_)t<= z#PaeqxxaI6c#a^wy_bjG(-u*U9QkDkc(Ya<-CKyTODX6J$ftH8$LBNYAz0H%hs|`t z9F4#6kZql!00HhHN8T$|@RARGHEt|;_%tmDNK_pAV4SJIRTZY%TI{&vg>Lx7W{m6X zj`HNwFLgYfRg1LavBjgA6M;5MYVr^ZKm@)4!vRbdA}cnN^?U1S061`H!XRTA_jzY# zHuhO2vL|uXmR@skJ{~)1ienyJw{C(!*x|7^U{?=lZvb+&T27HpjQdEpCP+6qIwVzh z@K9Haf6=^N@rSv)J^En$Zgxt*&FO0c=m@mhM+el*egUntM^O%DrHX)g`q}RVug8^r z!hng}wn2SUjpvQc+s|GNy;p2wczky6WoZGE?(FX>;oV$yLQ{kmMvq_4gNHL`W)=W7 z3DBEM+qi08T||YF3E*^Wxq1cGu#26>&J#JN0se_aV7OSTt3t`cdUoVhaNI$&fKYG; zGB+w9TDk4*=JNxax(v26@6V9P7oCGnS;nJ13XeubsV_Rq(q;7<|O+g0eD*)gyH?KaR$HU~2 z-Ig-+j8a7~Ql$DbX2AXM|tydzJx-<}O}Tyo$_#C!||L~#S(;XD-^d#zk2 zIY`!LfV_bY^5bo7CBQoeyS=vy{fTFO&`O*NdA-Bys`}Go{5df1+UM{B&C9&yRVa|z z_t-{UG8#6=0m!vUIwDLez zu)5yi3RbS@6P;9@^2j(c2=h)~|wT z6M(F*s5I+_{-E)z*Fy!v)khz=_7yIX=P}m9L73{tsra%qg`Yss1phT3nL_xNfbdz? zD3wj-Yl{Vqv+=>Am>xzxSG0w;KkEcS435t>MvI zEs%rMs8V@>vzJl~=HtwYWiA@_rzps`ryBNxC*XvJU;hga5+~V)!AKCG2$W-6JbUqB z#Cxi1iV(JoLL>|K_CeWD(0iLb6M6o|$|sa&@(p;HL|fql=%E-d?Vs9|^T9u_t4WN@ z$sm&CAPRv1)=9sWxP*j+oQ9R89#92BkPsDCmLnE~D&7H=JgmSe9d2wN-T`iolee|j z%ds>-oQdjMe(?y%v%MG10%8^vqKt?T(V_eBKu34U#BtAL?-@|A3;lg9v5rG1k>m*5 ztg-Z@?M?D5UZzal5XgCcm2Je-e{ShnB3$BmEeT|A0FmY)9vB3GKAKP!B;N6 z-!{_=L>mk4uVpB0O|7*5r_ z--GfAita&X&kNNG4~MHzD_^>>*~(t$ zJIYY;0$6~eo1xUBlV3U#DY9~R6<>_k%K4xmFfbkP#ZXS*$?!jtL==;i9UGn18K0xl zOs8TX8-45sxo}&Zw$5_=_GJvyH=UOZqUgRoC@S-a@Zm1hEh95?*`_Knagtnq=zXUs zF9TB)xl~pp5Uv4O1dwMOo|@Wf@S4qS8Me>%^?d`VW589{wZG32Cl8o&1Ozld@^Ole zS?yZfla#Blts=w8xxl=yp;VKn)?quLgyNpz|EweGcuj!guQ+$Wdr}-4$+55W&TqgP zXtUI43QHdlZ_JTYNqwu19Q~QB=Q_*uC4mewpt^7+nVAVz;w$I|!Wckq4YmM3h&r9&x(DeDH9!7NGiP8!Ex!;f(j2(_9oaq03E3cGV^3{Fy*F`DSG$w@V*b^?QV55AF1Y7?{RN9y=sW>jZgbtI3@+ z=OTZ$299-L4Y8w+&KJN5ZwuL!diLVQ-jU|3gV8iEBcN-$UTO4KP*{CF%n*wNYG6TKn7u$` zfQ+Y9MzeRhIbj(>fahJH@gYO0AC$JYzEaB>>O_1>)!;K9ug(!8e z03O50Wr?CNzu49Wf8xW#5y|+G692UA729@j)KLND1|#hNst372NeT4j(JapR+iE6S zQee{FFv!!wU5JyD=ZG35^dbX$jdYEjZHwdEFHMN+B)X5CojnpL+5C0B0;iTZ5+!v; z%Q$SmrGCQ3o$9H5@_qIlw5y76%IqIP$&o|ol_?QZl;!w<$=Sg=P`t|zrNhQ3un`>y z2TCvp5lc%;%xPeLBok$3(JvbNAA%hP(e&`40}U!jpx&*R>^b)OGI7DXH$tv2`9dS1|aH_s3?OZffnlRW9AAyZg``;pztx(y+BMVv{rqHLKTS&T~>s zgNWjaA~IA#mI$4ylajcfFX4jNBQQm>5WCLJxuTLgTDv%(g@)_oakWUr8WDbncJ6>A zk^if#^QXO=@|gZ}PC|Z%Wt+puy@Xg;Aq|*%W;&-Skl+)ahdDkNvY@>+pF`zTC7#Fm zkubEz!=1eD`S`@dr%z^5awk-(_qvllzw-fN>N+&y4|-qt?gm+tDX>&|64yLDEv|KCo_VmbUiC1K z8fL4IG0T0r-^SWN6M-3MKA}$VduJLMv|{x@hKXw(#17KfsM5yl;H9%H!Gb1fRC^-t z+%5yF0Civl6ShCb{8VLX;nhk{a30IS6l~0Mslf%`!FTuFMbimC^`?htUstR#G0Q2+ z*0c{QeMY808uD3%O{;U^umj;uA9*KDg^3Z5<;-ai@!hTM zZA#e_Xp&06>+SU5#O3AE$ts@#=~&kk(Xo3?dnU(l%biC0j0 zopJ)&18#rK{GuUuFcvr%Tq3lqb+fH+EO7S(RnMo-3f6aEZp#Gn!i7@F+S)Gy*Po9f{W)AkMNr>MknCs zkU8#LhLfqu<}O&NxAF7P1fM&7%gIlQPwRa8%arjjUphg^_W>iXO>f!3=|1DJRy_}o zH7)IjU`mauDtetdekmB(OV{JA7ktLT!q43@4cZt>zMiN3XZ3YMX>T^V<6kW=$6L-A z97U@khs|8z*r^nqCPE)U0qK{Hd`69rUUpJVV zT4Cg?8e=d&ZhE0z)BB^#GZJ<6auWa=dp4rkj3D5tW5!SIZjCnwcSfs%V>t5c%ehDF zHc@kM9{1Ma+X=TG%;}i8xOjP#k}4U@*+XufvVq&RYao|;kihQ@Z^_mYVd@GRDDRbP zvsC#`wYMX%5F6vhT%7FQC);k!$#XuW6S~|hh>orb4L#niudhy?YHPz zFWN330UE;$?LtI>Tqf_W9`zPs0`zdZM zN@iyV(j&WwA_)^Btg4GJ3QVJ#QCQ3B!mCen9t#L04=J?W;r;~QBhf5B-`U}@~k=cU`nHEFdxho4z*?S{!rALG!3+Mn_l zaU_*cls<(T6RQe8V;|^;n}NXHhMy69Pv@z2Tc|npjrTTSe&R*vef^5%5XRnKh(Y+^ zG%-8d`OO;?7P(YG{oW+dKijCY541mzyjOqyquBidrbop)aaZ$U=IP<8aoT~$m0-2i z`~#Kr@^a)ip&?hVq@)P$)5+R>;)Ic~Tb=IJ&FwXSyygp}V8&XeJj#7v!ykl9?S*

    lM`Evcs4G*ts_g!I+URmiWIZwX@6MRX5s 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

      dfT8a`A_8jnQOhD0XxvNRoTr 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

      *C*_U%*jl8uxD2r)i?z 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 literal 0 HcmV?d00001 diff --git a/docs/tradedocs/ts.png b/docs/tradedocs/ts.png new file mode 100644 index 0000000000000000000000000000000000000000..ccbdcd69f2595a7e273bd10dc533a3547466b38e GIT binary patch literal 72303 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

      IVUp*TjbaFsRhk9@>pptV$p=n`-|7G` zbC+4b(kNRW*yu#H>7trl61gBj2|rUn7TB^scJGrqjvXn!r-U?X(m;;)MeTj(S4RmJ zN~F!ThxTYRd#0-tymvx)xv-jlwx=iJY4|hfd6Yy)l%lI*{~e?F5-#rzJX!0E;=_S{ zzl~mI-78$IR`dUEvlUi=)}7e%qd>*VB1so%eQ@Ejh02^6Q|b~$01K8ngL(Gw_7*O=8u;43ba)jJm6OTsdA} zQnv_71^Q74H!_xb{E-@--|#Y656KRC=o7=}D@QyNL4PYMo({Nv~lq0eDnW#lF6ie8%CaY`oBd zzk34ohhP;Y{hyzKX&6k#J`Pffy$4j0j?1!DplLa^AFMiG6dswy^he$XgaD6ccetZS z=h~;Htn!C*o+F?QN;UffVBS2yviR}25->Vv%dwOw|Kms#adxoK6%qBzbyH*JXfr;1 zo=g&iNUw9J-Nkm*NIbNiSpjq-&{xn82!C?kBG=9^){JlL4QfZH4%EC=gvAZVoJ79~ z&5f9Zj=%n>mh!@79}AP7FE9%S__@9LTWKhR!2o)XOD0vX3o|7F?bOSXZ3!+r^NR0< zq$CP3@$~?zlj!Cptbsz06haC4!l{nL9&rY0p64;6$jILkAIfv*z<`nU;}z-%OoJ`C zGi(_IPd_iD4H*$(f%nzf?c4K?E1xuoeVAJj_|$WV)e~ocVM#m*JPjdc{0v0ufgpZ= zc>aGoB{NI}!ZSKNY}gtw5OD>(chLQtkx3~J%rSM2SrD_NB~dX3H?XA#;C1h>#tWa5 zqk42$29kvG)blk-qUAt%252m|`oAE-gI?V$-8!3TQlR0luC3hwPktxA5{xk7Z7N8^ zK%|Wc20+qyd;1Rn=Yn5ONc$N~LQUJv4gftMP8b?BsjGnql=jX<3OX+1CFx%S&&mB) zSI)9IMo0Vd3Q)35->?1$22>3&pnr?TT+fh*%;yJ+LLqC$-1IZuS?e$-dOW7xNWnMnP}J0WGj-!86zh-300BFzB!c0XLQiHq;S% zfb!4Rqu%^ECHNr#kpF@P_#Cxd&o6Y&?TW3bez$jkCb2P5?C-RmSJ~WVHac5(&9!tf z2!umWHsFz7ozmt3r240R`1|+mDu%}%V9v&{UrQ&x%Ki7Dj7-5Vo6t#Y0BzG8UPkj) z>2amSi1E?JYpvbGZ$ludfwn11?}fd>JJJF3meZm6drp( z>S!sWpY!u0=9{P(RkQvN>fSmmsxEvReGL#nq(cypP(V7QLkR&8>G^E(uXW z8WBXAkuE8zp>ycYpyfPF@%D&S(pLCmT<)(z<7vJ*A#-oTu}M9%AYwSFJ~j4fR^#=co0 z`bP@{4&V3!j$a~=nNweew80bzOtIkZi(U`ZaGO3;{W`XD^5{wIl`}GEvqtek0Jz9r{4Q3$Snb=B#J-0 zz>O7XMb>5R#>_NwQs+>Qy^e$ z%lS%lWgWH|vflT(RHHz@KGyA)HGtsuvrG}J(?4&$+PLpJZJkwcg>O3R1ra5sr9G*x z-YjEk&2+k?rfJl7mp1^IbhNN;6hQHUy#fX8E`Z6mcTH8P zurr)Wj)VT~EYlFFf<#KPfhM!95!OWYCAm5Xf^;9g5Fj0}?i9A*EF|zDG+ZYj04Ro7 zTC(f}3pEdO+5(0on4oHq3KBdeV}T5T9)S`95O~5)<}F5CqP^!MJ^*GS9j^>7Fha5r zus50lpT(6qIy|g)TD_Ht96P|xB53nFy>Z*>LwP1ZHS2puzuvxhtw5h9FcMff4Iff; zD)~_5??rwB>v@VteOHDd-}`HX5LcY!QEZyD6Pmw|zAC{oj#RuJKAQzT>-i-xo3pjtu|e zkhtR>lX#FFYdAQRlq?hM`d+{f8JL-GzEzi%#rnCJ@4rB`@@hqWMR&y*Fz`E4WZH0i z!2mMaak=|G1A~Fo)9YFE3|o&QCF&)%BxvL>$QUBO!G96=78*6eM_Jg}ZD?rSZ+H;@ z{vi*Ks=t5e`e)7z_FJv(?d{80?ZUmEdkcH3ds{artFw{r{x$dh(Kq}55@_@P4a&5g zk~(v;f+9xtwI)F4s+^Bwap8fdTfp5Wtd}TM)*3Dym0GNShrb8JKxC&tD;p>-s2iU$ z<*$Y>69N#O+2xlTk+UowXL8Rhf8#vicK`y`{aTk^Cn1Dpv62?7D$q!nsC4{ODgjML z`vAKuB?@%X3r%mrMlNTs)8)4MfJAdD28OS{^ck9^fI+r~9;jYflHHLt%!t`oW+lb1b%D$JVB#IKhDwF~G3DnS`{}rs~ znmAv0gY7z)=w5CpIoqm06%`1gcVG+Xy$Tk1nQ{AG|tY=`6I4<^52-d2ZYZE-J7#0`CWkQ+=aeR{AX4@ z5fWx5r828k(@sc=DCNVUoNNRU>`!}zisvppVNBt4jvG@oROc&e85%B7lQsIf; zB=%(=*b{1NsHMiuHvj_@pb(1I-ch3YX+Z`Q%9l0<)IXSGKWC_=f2*j-pZlC^IRujR zP?6Dn05a2{q^RN*o5I0epZN76ugZ0c++uyad=dZw7PNsw{Jqtpj7{{n4vrI|y`meh z$faAjs>@O%ZeX~l0T5$J0hs@hOlA3$4IJ6+0HF_A8Zx%yB0xHGUQ>aUmPRMmnyl%2 z3xd&=knStICG6nU!wqe9K%IljXFB;o3Yl06T|m{ht9iR5-CZdKu(^z_0jNttsY}>} zRR;5JY^kN0{1Cuu{q{d?JDD9 zVvooWe5Zlb`=C7*;=H?M{@Q7@tJKq&pGL8HsbFO>MZ#vQaVZ9$;sOhx6f6-= z;s#oPVx5|RQ6I^cfdFbAZ`Z?4`~M?0a03BTn`#5CbqXuL8ZBC6#OKe~_}+P?inzZy zx|053dF53hn4A?41E`<26!yeqdrsb$FBp)Upvw`v_K&3|GOpkz@oH?kUoAyYLVc$| zCmpD7oE=;Gn`HE498Pa7ZHmc7Gfj@5mQ$h4YEtCy>~zj^kM9C0EC*%Mt_$qwX?TEy zInM*hU1DC6)@LbzUGjGfdz$i29O3oNOB33@%2K7WD|l=KK5;US0}^V09N*rPOR2)X z&h^!d`Q##5{xeYVL2Gx)r>sK}sE>#5A4N|;?0&4ff6;<$$nnzG1MR&Pr4Oz^?^S5zA0^nP znH{oD+8FWMUSFUpO?p6ssuls-CV$#2sCaY2n{$iLcVZ^#C=PBHjNS$yvpULO7O5aS zar>CYk@1fz{{$KP?}w)~gJtU_fxZ*`GEM45ma_i+`@B##!0Gri{BfSZ$-Mf_!=}t_;3V$BG(i*sg;{k|NG=u|F=3(Il>&HE~ z-BD_PIkyHG{<95OS3Gtv%5dGMEAp7YoECA$nAg52*o9jyPn}-2)E#4C{ zoD*2=?*wFum;tkdsRtJ@tpIb2yzx)^k4(}6BeF*e;2Prvd7;Wtjc&x$kY&hzveH^Q98L=O`P1ihg&zqdABD-+=N&<`~4= zE5(&L6fXbs2$DnE2G4baQlnPiF7?YSj!~2P8Gf-Sh7V8N4R`-aREWiBqU}wh|BA_5 zBw+j{hXPsw#TSMm6ZSu2@;q*vjQ!B?0sT&(i;(bH5EkSpQ$|5KYIhp(V)^4{0pTvv zLh#riE*i3Vc(?8Q8vw|AEp-}kDh^$~LfW!ZZ~scjm-os?qbn_6)8woeEO=4AM(^&& zel33bxi2_?>1jBLrBN6ae#C9;Pz)<9ruXsYta80lMj!O0j3ns}(e<1Vn9UQZAI4iJ z?o&Z#wl)x#isVGsI#(!?wRUvIBwH)(yhlYXYq9Rjd_W~TRN1i1U_ zwad#`%?xIgZrso&BWq>TCY>>S^27shc|E-t(~s)BI)$7qDqjzH#u9}9heVnx@A&&s z?!nOaALuOdYRv5SW(Y#XsaMAfm)#(H)>E5-K?7oX_uE|3+TS!z&xcGc^tQ(cW8$vS zDRAg9GebY|+g_huR0=Iz9xcuXJPdnR+X{!pTRX6pI1(o2RqfMk6V#`l$(j3Do!w@E zCkuKV#A1iGJ_=N#XF&mB_5crY4R3c>>BWl|E?eij!}(1_4{jBG&wHBD+k`V;raJ*lT>J#yZcTna6*;i`4?y_Ta)D&c9u-)|usD)ZvdmF$_ z+IcM6uGGq4vB~(s&sTzQ=rIdP5=93n>IEREc^P&>ah&@vG^4p3sdJyD9ZuVpdY#bO zd+Z!*BuL* z9dcI|+K*_JFTuz@!LF_sIH6+KggxCHxge4F(?1^j?3*iM?fLcgeuN`?l5vbw&rsT) zr538n%7+$h_<*@MjKpTF=Nh zQs9qRg@x@qV=(}QeGf&w*CQVAsQ0m2H1Tomt7?Pf;q;#y#z`VRzxcB5ZMCCAj$sgs zbu}6&RNIC1HP9htgFx!t_pTBVeI6Zk1`V4x1^SW308YoLu3f0N@!&c644|#LY*_77 z@;$cL*Nm#@d`)AMQJU|b4s4SmS-hXF&Olxr=$p9~oBUP_ZkE$TJf;E?v z9x1%Vt6yPvm0BTzd-Uf|LT9?j0-MrQ?@$Bx(HuY{*xH=J7qpLkWC@|g03f%a0oXNa zZxkXZPl2NCA^DM4#VV9mReRnP?~x4|WO%3X^acOt2+KM|6RfY@aL;v%`fzux4SwGD znOIWN>-t$7hm4TW7#FPG;r=s4Mc45%j+veK?5TPmEh|)f8C_&_^c4%Df2}{>Fw_h^ zMQKFFk&bA^n0k4qhTbh`Ptu|ezXXYZUB6LT$q1&H*fEe*JA0{79U*?&nGwI<*1^H+ z*QWh$wBNp6ChU6bFa+RN&NDx{eI0i?ODxQ~?>3}VxpCdSK({?~euW>It(O0(J(*(F z94MI3G%E)m0D@kamH0V%AerIeCdaRAgKG&I;_PD&Jp0gF=qOo1ebHq_mTMBYIO08K z*nMx;%khTYU_qXqKNAxY((odw#v>C%d5wSCd3lKn3+J}S+~9$!lX+#@+Sr7KWR;e> z+ig2QPFS@`R{B!rVCJ9NkT);(Wt|8e)LRzU_9?H3lldW}E9q6wuf3DO4DDIa zP!BcGO6o3Lo~XPh@-e~vkIk_5D<{V>?FfY7YQJJd&|HbH1<-Em&rz0lIo)3slu~C= z^Xyo>!}}HIB<{{YHd(iXU6sw`*c|Qo`LAUHwOHUzvv!}No?{K{?J8A9?j($|x%no^ zws$-;nC1_0-kOqwQ+6jI=)Io}{IwxD_O_6}XdnH|1Dpw`mF?k=EU##3J8^IAr;5la zi~F!laMU-`WkTr5#C5lKegF>?)iv!CTU>1DaSXFv2Xu=j7QbDO9525Wolt&A9xHK8Q(7sf9<~gG?7#GWQ{|bQ zqzoN+^zzS5a>89tnM$LC-f1=bfQzde@}|yld3d6$sVV62dwIF2yTgqP6RCdPYO#|5 zF4wT6H0lQ+3|I_(Q~0z$J#iH?Je?@Jty^IsNXED1)PgptKs7h3+=lA>9I6^dTClf7 z;{CE`@s2=|<78Fo4)Md&)od(2_nu5D1Y>ia*KFQzC zs!_tJ)%6tq1__;_2l4X>gyT>cT95Hf@n<3V;2{wNwNRIE;|YlDJ> zL+R~LkIn@~tIM~A0o1C>db|pVg-U>&ThgwFo8Lw!a*~d*;KuImnz^Z}ALSA^x3A_n zIfxBWmeS#A zj(Q{2JRgC(mX`B2(+`2`<^H|C<0SjdvjYC)pQ!Hj%2dE7u@ARr6E5lwZZc)Xo2u_i z%zt(z27&0*qR5q=v+d@M{i&nQZ$|2xCPrF3$^P{!7q-AN&P;McJ?LsbtS45WD@7DL zSvg6QNBS~BV1UJGQqrW?^seQq6fY#!np>Yz^3RiI~^yazJ``j`&5_A{f|JqXt)u;ji$w1uX=g-4|j{JvY-$x(O zJR(_u7>t3*PBKED)BmW#DdP|;ebGD?%u8KHs;9lfB11G86$+g)-aaRaLiW5j>g)|2 zNZ(sN6!rK3!gok$P8m6gF-kEt#j>xl)OE`xPp-Ya`rSKRM32}a{Jj55@O$)9of9s5 z@`|X0xgdoZ>U*jev(&YO2lo)E=>Xph{F|mme1JczIvLxC>xn@31ZY@88}_t2i-N?@ zh#PM6S#3W}L(UjbQrCS_Ej8;Q6aiQ!VXtGDsFeVTGF!^VbbU;WGF!Zm_9wZn@!LV# zwEApgzm|H_ZC@_;eb%mk0bE+d8Fp#{m}?Q)(Pb9F9_vw7s-uzmS`;?x3UTmxl97KYtgLbFgEVr=v;MYwA?CsQ)@s#%ou5+J| z>rgJG?d00E>?8sEw0n0svb01fscQN74>O;YHja(m-Kkn|5tvK1Jv}o^h$r8%Wzqyt z&bqoOadeV#_R7@cwe-`Dk33PS$yhL==k(30>FxrZ@C5qa@Vq?#(^J?f<{moQf$%bO zA?iw5g`C!rk2Dw_1WDb}B7!k6FRkNnx}CC#P}d2KIrla!T`P6RgVz0-m?q^JN-~<6 z1*N4GR!Gs)UqkIYf<3pf#dwQ=-KQ}!8Xn3q{>(lmdBwYZxIFq4sav4s+(+dC!t>Go zfFVFLJ#i4eyVK3j34P9S7k>fh_Y zJA%Yfjq(;|W^ms1J+qOdv#O?d%+xJEB9-KZbh7}ml=S4-=UTZ@Iez7! z9>P(uwlh!c=r|x9_8{Y%uxmuI@OcHM`kTw`V}g2ye^C&a_yo>tX~YW(jR^`1-@9uT z;_a;r(qE7i{a}qb$)`GuO05GO4|Z&E2NU^7>Mf_O%`2U*_V&b1*D5UxH^6}P>GsAd zBK^s=lN8Zu)lRD*`q5vQ%<(zjEk~}RC7J>i+E|ZPC%?Y(N=mYzHJPp&3L1K&i2>Iu z0YIj2>ikdde+7d-b8o+2XlcQa3!g0sDZJkIIO`_yKx&IT-{Mk==k`6#B$!(+L-bAoWyyfXvf;C)8LYXky-3{jO*sp}+u>2I|+{-v3 zDjrJxnrKve?tshgcxftn^$2~Ge!wB^s;d7;6lTeY0vAMI?VIL6<76#uh9e%{;rH)< z*awb$1!V8<=Cgp!O<&2jt5Ftw6@n~A2qXtjPQW5 z?9oG_#hVGW55g{PleYy)5IFZP$c-1^l$ieYMSgzu|NO<-=fP5juM!dx)I<7x)$s~x z_2g<&+}+(9)f1Q$+mMemO;8}@GD8&cKT`d5BT)zCcVjB54OUjTgakHOt{K43oL%=xN+#ibOwLrLl3RsnN%(C7wL2qk|(kWf>Ty1bgk`w&bit`LqI^l_(<8`H5#?J0v8XDpqIx;k9aEu#TxoRy}#6wt1T*;;B@B6ZY?yR za~{@ZRpokE;lykNHY1SSb9c|-T*}w>+ME&=M_cm^^mp zZq3BcpYK(DgX=*yrm1=JH0f(hLTyFk`=ov6kPEB$eMzQ&RSQumfDCeeHXta-$jyWI zHO!^taNBM~xmhH)65+aO+wOvj>?!tP5 zE?xuX3r^^Hog?&+or|Bpw6xSWj9xEDRr@awbXRB}SKS0u3;?B7*=+qZm-l2cwJ~vdNlNQDpTrzv`sW#J~|Kgc&mu#oS zI(%YV)`2^?@Pyt^nioNSNvh67S}&0`r+8c?1yM8?G(lZ|#b=&|AmeCYM0Z^7o=c;B zxeBMQ@)q4}kKwhi+WqINDoNLe5rNWmb*e z9=AcKb`+smSy_26`D9p!dxzxUXvYVlL;VSWbkOI?cH1XgH@e`@>FCsg0t*%h!_;%t zUX0|Q==`Vao;Qb31rMf*i5>!l+F4)LV&&}EX-^)!8|UXRfa+6!ZnWcZv>kp=+F--$ zqz<4sHSC}8u5Q&Uh71to?9q@CXM$D`YnvbOCM*b45z7lnKN@^7=8yMZbI5+kyTUAh zqYc{{%t`j`=#;x~0Fq$;oBAao9D(Taa*?6vpmbjuC_`*)(pk*R7=gx`>$3-Q6~?Wx zAk^clfYi9FN9?2*Y<|$7n15;;OO8Ji`#e_1$t+9ZzMt=V6@A&rf^jA+7PI2+Nh^VlJcH(>u z5_W@F#K9yivgZgGd}9qIZ_zU0eM=yE7yZQ)7Zi%c#wY2)ZVz55{IejT{3jp?9Pz^* z3ls+g+&TOZ9sT542X(uYb068P&*{#D;*`&?`=q2(U*r?lN9F-1E_^ikzFMJ8_%o2B zbLE;3WZfY|pYCBflsrNT(8dRzHJK6^!cs?I*xAqTc%GnM=}*fQSup6;Qs6414@S=7 z*rjI>AWF}YQ`dv0*!4v`niLS}@3I7EN71~C3>$A73Y4F(>&tO(B1^fwA;?@QueA*ARU~V;uA-+Mzn_SfMoIB?Wf@@f(|CO zv9q~_S+zS)z3$!>D7xap!jux@c=e+zC@?|wTY(L{@Tk4#=?H*b2#^bX7akKa_;FGT zE%#G3p5nC9z=LxhsoG;CG{9OME5Oao|8%#1m&E%T-&NZ$8Evuz$l@YdKOjM`5rB z#NK(ixeZb?_E?gH4?k~CiVmW^m80S--i3T&)e(5BkEhPbU{dKPIZIJ>3U0)CZ4^1N z+F7EyFzIdqyuQ7^T%m5V=KHV9@mPZxU z{7H{27tT(y&rY+}R#sF-|I;mV=ttx=`oXpb2Wye)E+|wP)>)XGlfAu4j@tJ6_mXb} zH0VdSm6TBA>UNb*Cl0GrvOSDEMsl ze>SZRy_0#jrX20MoCAVe{%@}?2jh4O+#i8l7}*d3W9&;iubs_D!6Pjx9n%Sc)u{?K zRNVvF%h$EXK6v`wePE9(&}pfe7Wa3kanpp2;O}g8D;ND8C<32Zps-5yA8Hh4{$oiG za}bsxe}4t@KO`AH;O8aihez0Q1ODq0z_IgOI(AMN#c2%kbhz59iSYJWOQ z>$}I+#20AInE@xmi@t7A;JaMF|HC&`bZ~HZ{`~pNm%Z!~dq12Th8iAqz~RJtg1#@A zF0P3(F)_Jk7akt&Ux<9bdsBx%hfIe`=W|{j>+DB*tbogF^Z@4TK!5)XQ}8`i{|9eb zeAj(*{VYEuC$rT!Tu*-qZYTr!qz#MX2{Jw@$@4=mgPpXUuAQ^pI|oO{0QHD_#Ml@4 zi>Mue)Vrb>I2@k)uZzURG5&QC-+NdRvmjbse}eDd2uvIcd=PNqfWZgY7b^okAihY2 zzz0kh*%$cWr2u#c@IksAxQqWET)?Eg=humgk&vA5N1v^_B1wFyFBfZR(hy9e^MyoC z*qM=8ca#<@qyOT?mvF-BYal}#%?9sLE5IDU);9$2$Db9B|| z-4HP;ai;!bX3^hFGPx@I#aYb^4fYO8OgtipRR;q$4IKHiFA{b>2WzT^=zGB(*MOz8 z(Y*$TQx+XQ{W?WOnsWCcpIiES$)+(}MWkTtX&oU*4_{JW+;G?^63r|S8DH1C%9DXn zM;&z+NmFKc(l;ql-xC~REa!Rcb`#@hicp!}IUsu-;o}}vkiZ|VOm^5Z)V$^)A?j$M&rVc%%5q_ztuV{sO z`Fy~;JVru51`yU4nnSJ~>^p(7y$lBH9~q$(uM>xM3=aB>JG<>OwTzBNr8dS3I{J@( zO=DE-2i+j=GmoUBoH<75K4>vAXgY%@qo<|}ZzI1XJkC>0&a-kgbli$Z1$9G_tutMDsPmBX| zqh%&NJ*wm+i!a$Xii1G%3r1n1_6KV}fh5(_-X4GA<}+l40u?22_sFAFvt0`Q#I)zJnx(dUy9OGa$;F+!$K3Ipt zr^KCVM<+2taend5Zam5RwpEAoB81B!{FXcn5&e>U@lmH>JTcB%prA}>LV5^ z?BeKH{5_A$N+S|Oirvys~l(D58MaB6%D&Y1uO!#pUk&`g0F<`5KQ$ zRiJ}pqcF1}`m`VU%i7L4ztb!Bd|3M(m-I`rWXpB6)H<(eSP>_s=vd4P9RV16HmLVD z)l}p93=#>D>z-<;R+^?>LLMF>OUu14^5W5*vC#zKuo?aJ>3SkP_HJbKREa5(v2hc~ zC>_wdQ?>FFlazD>37VmwfR)o-TKNy8q?J$r)y=t+a_IQdwiOi>)zB~5;%XdXXI_CS z7cw+@6Rix3)7e>68Q8B_-j{0K@(VRzJY zj?SjIa|ayiNEHj_5*?~cSb3Em2IFj66(!9WI6q5m(GTKey1@f~Rm-scY-?UkkGK*-u@rS-5K`f%D(`0E<(J_p`glf0-%)cd+rGX| zN9(8!^b0J8F1=n%L0GDgGnPD%>h+kc>d~a5u-l#)5zuwmwL#_OT22}^dHiU@NDYvM z097gac&NSWFMFE#=?a2KIG|v5P@i_zdX!2U>FGTj6LhnS(=Na5IP?ufXQPbtG@JjP5p$NhF#3b+;wv{ zlq9w8#AXllwl7+!T`4@yZnPQN_El-ra1#6h8qq4S>+$yp*>(Go7^aKx6k+wVW9K7C zy>l*}&jbH&+Z;tw=TtuL5x%~4z6i&VBm}GnPeiN~^=X7F^2GZi-LQ-oJ-EmB87_9y2>oi(Yl>Rm&FRcIO-)hB!sQT~Z|n}-NdaDu z&z2Gk-b2J8;n{KOGWJ6C)aLE)nTr;{K*Hz9kc0gdn=#6_gcFMTCFSCh0XoY#U1CBW zY6lnjy*O(3+tdP z^xAE|0S*zF5@}WfcCz^7BI;tn&yN-mzSTQ2-Q->Hx-BLScKf{s+xzv6;-XtP=aWZv zFQnR`C|1LZBN~4}wwC!1z;OLJXr}1o%ym(7m4or4$VX9sdkXRu{aOkt(y|Uv#_g{* zX$Xmcb7u}692Ano>w6j+P>HrFrJ+0qPegmcysHHLp?atw?H-VH_yCH?q8Et}0Rwb^ z2?7%r$*4$uI_XMFO}+Vb76j-KeK}H6$b9QzJ@n8`s@Vcg66JtqEA z>?Y;$GUui{eMp65twx|aw&{xU^@x87H1O0K>esJQiPa=bw}CdYY}u8uq6W(4##;tp zLJ9ABfjHbeo!)Okf@VsSVspKfrDed<>_GybHB+@ZdZC@_=+K^>q2v)J1I#c*r8Jm; z-eZnt*``<65fT{|M$f&zzCP>o1bc#t2n!G$pHqN|t0V4%zk`$xd-*-ls)RTLj9Now znQhTXTE3GH8|{XooAwj658UJ1+WIzs<=3(&NNJyKS&{g{!OPc6SnG z_85gT1JiNP*^XQTV}@(er*)#ODfG**wHd(2c>={bbQ}fy=P+KmW@A z#($CiR}J~vlk z+Idxkl}WZxy)dG1i-8!>9yGHR*!ZnK^*GSkcPI7DIjSmwzDvht74a$svAp=@)2C0! zsk6m=?I6bILm58VD4=gZ&_-yJ#RkacLoUqkt zm43^~fxcRJ$G_H@T+B@kT-TqEpl1RCR%C50n{X`eiEcG15A476lDS~$&1(FDGQHZd z7xA1wnwq>e#t`5|=>7XeG{Foq3P*jzUQ5B^q`d#kI=6q{F0pw zh^=JXM_|BsxRpwpD4OB3z{Sn|*!n+TOHxd19yB;XlN<=Jw8E*u`BfElbt%coLksPG z35eV^^56&!NL4jIakje4#nnECcZrEF+lEInbg7@$o-~HZ z1Xtvn!+cH!7R#rxZ97;>OJGFk!+I%u57W4^1krcn9~Hik|L7b=+LGZ$Fm#P1XFAQc z&`TAa=c&LL+vUdLDL*%!Wh>p9Su{e$jpQ{R$@V`7yG*sJE+YWUeX_p~AYV@u5I;Ql zLysNelZYvUOG?@HtWW)W)W}q-86cXr(gd}vW;%Ry`E+K9T+V!-J9teXp>{ar;G^I9 zI2bDNaC39|o0^&~E-hgf-rwOqt4zD6>&YT4Pj;%4zd(pCs3o4GPz#L(=Qd(WFLj>< z%Y#JSeg~ZMlidiq-u)UMJ^o;XjR+OjWoUgDdhh^KQbS9NqDmeJes60Latx#*xOeBA zR!)C;MN)qW9?<{F%?0&t(kr_UM*@UU2V1nIp&@EM(r_*b8#qikW7V}QHH}?$_s(3D zWY-ojP9_7TMqOlyLbR7g{S<_q`#^7?@2#6X+Fiz&)V(CLTxBTRDQd6sC09GwFi|p z-^_pV?;(<7pS#gq8J^gR8c5ia)_cSw?|tz>D}clr-=|QMN4~_+JjBHMeU~w0x=!^70YxjBvOh%TTM3!rd~BH&yw7tjYA%D~;{)iFUykh~jb9;i7i zCntYZEk9eKTWxu&?Poqw;09i5;Y(QkoqCR+&UPASv;=;`&8%{vzm6Nvy)=)s-9$W{ zzptnHb={bHhDA)q@G)IO9|5L^Z*NUv3^Xk)EWqK24W}CRG8+|KwQ9~GiPhLuj|jNrkk5rKznfxcmD{Tg&7J@DNMX^Eh7=6 zeWI$$kRS{jY2w3{arz81(gBs8;N*n_SKClz(#!Gbu+2^F*IH3L%ZRh2r&KP zhL+P`IYU!ZH{YGk`Mg(o&|mfzsS2PZobvuH-QBmJJkhrgdHNI+Ip6?+PApGdg_(tQ zwKV5R9)b#;;QZ^5#a|JFJUEIf;CPk}!6O4&nhpB5`HZ*j$P_FEZ=e_MO zI}A1vS0{Tn&iJ4k+a5`}R(}fiC(&u=vV;9W|%`B1Bwh&%!Gp*&fIlv&{OwAxekn;krt*!u{-EvuJzaWpM+} z$GaYB1F{t5ERVlzCXpDTbmj&pYC$uu4ympIeEF5>K7U4 z1l_jH2^+4Ld{bxM*IZLG2qqy7_UZ*mvuj%X;%H=nZrH1+d}~IV_=~+bpLhmRFgp(s zfAB0SHHa|&-g$H)1(P*2QWmw>94XG?bR2H}w(thSjguhjQE#X6-YuSt`Dq&Ic^CKG z!DQG(*ZJ}`{>Nl9BntGRT&#~*f{VTvopJO;N&3>-dQOjkN2VUwCj9g@ECJs=?A z^XFt3>{_FJ?8-9#(BPm+qyH5+ssg%F5p=o_P7`)a>;NiPUt}U(@%fu}b#?CkVw@wp z0Na4*CxHf%M-T3Mb#ni(Bru$>F$c}zzTkLp&cr*bloToo-l8qUo^EAeh-HiwHP6Y! zgaj<8%u4g+mlYPzosgpzLlh7>Gmwr)2Hl+hK8on(h2frJyE16?^FdVw`hgJSS4VWY@QydAE+W*XZK`d!h-fbz!9jk>vYK^Lp_!5m4@+bPfyl)PxT-49^GM%&)`bOv^gYN(hd ziTM3&u-wuPjLf2qC3^{mVwG{+0X-qdj_zN9u{v=!w}Ltnl!tS-GDG8br|1LDCcbs9 zHaN=n_xOkrCvsXG3kSREb1j%jF3D@bl+*UR#qlLh2dpU36mP)lh!Z2 zmq7R|lLXWZJ|y5!0a+y@b%Z@U5mmQV7 z*Q!0{Va(Q=+gGyeNx2WEsT?G1AFB$PNW%TnF}LO(2_m^R)g&IGbFev2K!c85=Vk4n z8BgYJEZy|Q!+sS#FZA1NLI(?X`8@0G!Bae9b?UIH^8skvh<8Jim<3Mr9*LNm4>R;Wp|-LKK6NoTZbaq$Y-Ve8T4JOSooRK8i+uu=d~jt9Nv`RsNdNJ zKYf_f{whFMtoihOjIXdh-Zuonu;`IoAkYn|_hF3Xp))#QO!d5=H7F#HwX24e@R&uA zi`Su-x_XAG3CviSWP@6LPVIf3>trcV?RE?I*aS*=Jbpvde*soM>qH-PBg_-@yEqAfNf)9UJzBYwQQqd)qi>rFc!{QMaRfVhid(Jl8PeXfK| z7(_Vc>x*ZDK|a#>7JIgd<$cNr1CK7_U04osmWZnYdmnMZE$8;Vrt_dgaBeFIS_nD*MH0?0>(CGdOPl#W8 z}IgS)r*p&XeOmNf#L=bQr(WJ|VHcbt>pdN^NZE>Er#j?z%Y;tqrk%;rp4wBYkx^FP_M?@cdenm?h!PMS zTAQdm0PGdcxpePaGb05pgWpWwH9UOe%pt-2LAuC4>ZZgfo91;@kWD>$Xn`x7Tv^F{ zLVShv4VUB3@LA-IjIUQhK+o7^YxAuJP*@_x)UHF=POK!ylJ;gRLcw@JXCnA@hyTrM z07&lF5bKo?#%I7@;sc z5cP+Fqb>60DEqhkDwt?5L{l?f&M$5*E{U34_A06z0Hxr39ebNhMg#uEk?5+oC}3Lr z48Il4RZtAT*#%eBH=<~DZ`?+*3Xs(!LAX95>wRQ@3L0?&VjfO7!ekKZHb0^0HnqFP zxD|jDK$fVTMI2Iu0tb0Z#^K^I*mXl+l1&<$ntzS_IZuw*#y&kid9u)) zXmNg8EGv~PaIiV4zf0M39C}F}-O zr{1@7LhF7W+fEE0Vu>Fn4o{K8%}5PO!ST2ML{ z7_$CB{Rx($k@<7LN3)1zd76a0Cn|l^WR#0zl>p3p(l?R#2~((0|28 zjEE6nJ`z=`YOB*^;lD*Mr0OielhM4%9wks>CcY)ri(E0kVQYNZ`(9h9vuoz;jy1!N z7eyO;R?;~@B116b^YrU)cT*DYll(L*sQ7^-V^7*X7;%ig(j*{n5?u~jjYNk5udR?m zDiL%Oarvi?=?Y~^u{xG5xI`n&t`-L@PTjkYPPozCDKtt=?Nv^%{R9X9Wbuoh;#OtQ1yR;t7jm0VNB+t|>rCF}>$GX>PV=^4`$8B`@`r z?Yz4V>WT-K9hFeBx2MeAj;&kzs~2wrUY9q8)LEZ%bQ;K)3T8WA`f_`9QxqZ zC_|Q;0EV_;l04amWNuT=a1@}wRfute6C73TfSMDgfl{NQR19Fpc&rc4Zq=)&-+(8o zA4LlvzXhPGB!W1R`(Nx_=n}dHV3I)nfUCZNm4vjr>j?8UQm5R;y3DOpQCzyHQr0BX zN1^-XbIrSVttz)3fdc45$9gSgYUW#|1?Yn6=1&?yV_wSKlZf3pLVlW4wOx=DPaaKh zzXTMU&}Z=o0NQ*X5P&$^IpcaPEtU6kyOR~4tLFxdlQCEL59DI#y<-Wi{ojKCkOb`M zBXhviA>KOtvcuoJzZx(u6x@~4B`bFPl_O$nT3k0f;ss!Zaf&~F+?GdXjfJBf@ah<_ z3C;h|KDo2J24d!|GEVwiWqA)PheLlyyyw5)wL?AZP&@6|%1IX?VCQISmIZum@!Dd<#CR|_iW;Q3dQ&)IGkoP>uP z4D(^$(k{S_w@z~eupUJKS9&W9wx@7h)e6+V(ouYlG3yHk2pIVw&Ql1M@N36hKf_bj zN|M*t$Me!$Btd|31jRDVwJ94q`C?z`|?7sy@HYgbPJ z$m_+P=tr+dGt2y?cKdl+&dtFoQa{)P+bKljc+ypp-m^@`qi!3GA3ujQG`$X|>gyaMjE)WnNbl`6= z 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 literal 0 HcmV?d00001 diff --git a/docs/tradedocs/vopen2.png b/docs/tradedocs/vopen2.png new file mode 100644 index 0000000000000000000000000000000000000000..e36bb2bee092b11af82b93de8acc2b63b986fb64 GIT binary patch literal 217820 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�-6y+60{k_Ke`T*=THe=ExzD9cu`A-4Md4 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%0AyBAmgbiE)i>wG#d!jyeSj*h3?ap{r( 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 OYnq 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 literal 0 HcmV?d00001 diff --git a/mkdocs.yml b/mkdocs.yml index 7f8246a..b809b9e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -18,15 +18,6 @@ extra: nav: - Home: index.md - - Operations: - - Incident Recovery Plan: operations/irp.md - - Software Defects: operations/defects.md - - Pricing: operations/transaction-pricing.md - - Pricing Precedence: operations/pricing-spec-precedence.md - - Pricing Benchmark: operations/pricing-benchmark.md - - Document Retention Policy: operations/document-retention-policy.md - - Safety and Continiuty: operations/safety-and-continiuty.md - - Namespace and Inventory Management: operations/namespace.md - Concepts: - Introduction: concepts/util.md - Mechanics and Dogma: concepts/central-dogma.md @@ -35,6 +26,8 @@ nav: - Ecosystem: concepts/ecosystem.md - Protocol: concepts/as2protocol.md - Message Design: concepts/message-design.md + - TradeDocs: + - Overview: tradedocs/README.md - Rulebook: - General: rulebook/general.md - Governance: rulebook/governance.md @@ -69,6 +62,20 @@ nav: - Bill of Lading Rules: supply-chain/bill-of-lading-rules.md - EDI Transactions: supply-chain/856.md - Maritime: supply-chain/containers.md + - EDI Services & API: + - X12 Segment: x12/X12Segment.md + - X12 Envelope: x12/X12generic.md + - X12 Transaction: x12/X12Transaction.md + - Adv. Shipping Manfiest: x12/asn-865.md + - Operations: + - Incident Recovery Plan: operations/irp.md + - Software Defects: operations/defects.md + - Pricing: operations/transaction-pricing.md + - Pricing Precedence: operations/pricing-spec-precedence.md + - Pricing Benchmark: operations/pricing-benchmark.md + - Document Retention Policy: operations/document-retention-policy.md + - Safety and Continiuty: operations/safety-and-continiuty.md + - Namespace and Inventory Management: operations/namespace.md - Legacy Interfaces: - Notice: interfaces/README.md - Message Structures: service-bus/message-structure.md @@ -191,11 +198,6 @@ nav: - Software Defects: corporate/defects.md - Code of Conduct: corporate/code-of-conduct.md - PKI: corporate/pki.md - - EDI Services & API: - - X12 Segment: x12/X12Segment.md - - X12 Envelope: x12/X12generic.md - - X12 Transaction: x12/X12Transaction.md - - Adv. Shipping Manfiest: x12/asn-865.md docs_dir: docs diff --git a/node_modules/.bin/markdown-link-check b/node_modules/.bin/markdown-link-check deleted file mode 120000 index 019a7b3..0000000 --- a/node_modules/.bin/markdown-link-check +++ /dev/null @@ -1 +0,0 @@ -../markdown-link-check/markdown-link-check \ No newline at end of file diff --git a/node_modules/.bin/marked b/node_modules/.bin/marked deleted file mode 120000 index a8d872e..0000000 --- a/node_modules/.bin/marked +++ /dev/null @@ -1 +0,0 @@ -../marked/bin/marked \ No newline at end of file diff --git a/node_modules/.bin/sshpk-conv b/node_modules/.bin/sshpk-conv deleted file mode 120000 index a2a295c..0000000 --- a/node_modules/.bin/sshpk-conv +++ /dev/null @@ -1 +0,0 @@ -../sshpk/bin/sshpk-conv \ No newline at end of file diff --git a/node_modules/.bin/sshpk-sign b/node_modules/.bin/sshpk-sign deleted file mode 120000 index 766b9b3..0000000 --- a/node_modules/.bin/sshpk-sign +++ /dev/null @@ -1 +0,0 @@ -../sshpk/bin/sshpk-sign \ No newline at end of file diff --git a/node_modules/.bin/sshpk-verify b/node_modules/.bin/sshpk-verify deleted file mode 120000 index bfd7e3a..0000000 --- a/node_modules/.bin/sshpk-verify +++ /dev/null @@ -1 +0,0 @@ -../sshpk/bin/sshpk-verify \ No newline at end of file diff --git a/node_modules/.bin/uuid b/node_modules/.bin/uuid deleted file mode 120000 index b3e45bc..0000000 --- a/node_modules/.bin/uuid +++ /dev/null @@ -1 +0,0 @@ -../uuid/bin/uuid \ No newline at end of file diff --git a/node_modules/ajv/.tonic_example.js b/node_modules/ajv/.tonic_example.js deleted file mode 100644 index aa11812..0000000 --- a/node_modules/ajv/.tonic_example.js +++ /dev/null @@ -1,20 +0,0 @@ -var Ajv = require('ajv'); -var ajv = new Ajv({allErrors: true}); - -var schema = { - "properties": { - "foo": { "type": "string" }, - "bar": { "type": "number", "maximum": 3 } - } -}; - -var validate = ajv.compile(schema); - -test({"foo": "abc", "bar": 2}); -test({"foo": 2, "bar": 4}); - -function test(data) { - var valid = validate(data); - if (valid) console.log('Valid!'); - else console.log('Invalid: ' + ajv.errorsText(validate.errors)); -} \ No newline at end of file diff --git a/node_modules/ajv/LICENSE b/node_modules/ajv/LICENSE deleted file mode 100644 index 96ee719..0000000 --- a/node_modules/ajv/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017 Evgeny Poberezkin - -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. - diff --git a/node_modules/ajv/README.md b/node_modules/ajv/README.md deleted file mode 100644 index e13fdec..0000000 --- a/node_modules/ajv/README.md +++ /dev/null @@ -1,1452 +0,0 @@ -Ajv logo - -# Ajv: Another JSON Schema Validator - -The fastest JSON Schema validator for Node.js and browser. Supports draft-04/06/07. - -[![Build Status](https://travis-ci.org/epoberezkin/ajv.svg?branch=master)](https://travis-ci.org/epoberezkin/ajv) -[![npm](https://img.shields.io/npm/v/ajv.svg)](https://www.npmjs.com/package/ajv) -[![npm downloads](https://img.shields.io/npm/dm/ajv.svg)](https://www.npmjs.com/package/ajv) -[![Coverage Status](https://coveralls.io/repos/epoberezkin/ajv/badge.svg?branch=master&service=github)](https://coveralls.io/github/epoberezkin/ajv?branch=master) -[![Gitter](https://img.shields.io/gitter/room/ajv-validator/ajv.svg)](https://gitter.im/ajv-validator/ajv) -[![GitHub Sponsors](https://img.shields.io/badge/$-sponsors-brightgreen)](https://github.com/sponsors/epoberezkin) - -## Please [sponsor Ajv](https://github.com/sponsors/epoberezkin) - -Dear Ajv users! ❤️ - -I ask you to support the development of Ajv with donations. 🙏 - -Since 2015 Ajv has become widely used, thanks to your help and contributions: - -- **90** contributors 🏗 -- **5,000** dependent npm packages ⚙️ -- **7,000** github stars, from GitHub users [all over the world](https://www.google.com/maps/d/u/0/viewer?mid=1MGRV8ciFUGIbO1l0EKFWNJGYE7iSkDxP&ll=-3.81666561775622e-14%2C4.821737100000007&z=2) ⭐️ -- **5,000,000** dependent repositories on GitHub 🚀 -- **120,000,000** npm downloads per month! 💯 - -Your donations will fund futher development - small and large improvements, support of the next versions of JSON Schema specification, and, possibly, the code should be migrated to TypeScript to make it more maintainable. - -I will greatly appreciate anything you can help with to make it happen: - -- a **personal** donation - from $2 ☕️ -- your **company** donation - from $10 🍔 -- a **sponsorship** to get promoted on Ajv or related packages - from $50 💰 -- an **introduction** to a sponsor who would benefit from the promotion on Ajv page 🤝 - -| Please [make donations via my GitHub sponsors page](https://github.com/sponsors/epoberezkin)
      ‼️ **GitHub will DOUBLE them** ‼️ | -|---| - -#### Open Collective sponsors - -
      - - - - - - - - - - - - - -## Using version 6 - -[JSON Schema draft-07](http://json-schema.org/latest/json-schema-validation.html) is published. - -[Ajv version 6.0.0](https://github.com/epoberezkin/ajv/releases/tag/v6.0.0) that supports draft-07 is released. It may require either migrating your schemas or updating your code (to continue using draft-04 and v5 schemas, draft-06 schemas will be supported without changes). - -__Please note__: To use Ajv with draft-06 schemas you need to explicitly add the meta-schema to the validator instance: - -```javascript -ajv.addMetaSchema(require('ajv/lib/refs/json-schema-draft-06.json')); -``` - -To use Ajv with draft-04 schemas in addition to explicitly adding meta-schema you also need to use option schemaId: - -```javascript -var ajv = new Ajv({schemaId: 'id'}); -// If you want to use both draft-04 and draft-06/07 schemas: -// var ajv = new Ajv({schemaId: 'auto'}); -ajv.addMetaSchema(require('ajv/lib/refs/json-schema-draft-04.json')); -``` - - -## Contents - -- [Performance](#performance) -- [Features](#features) -- [Getting started](#getting-started) -- [Frequently Asked Questions](https://github.com/epoberezkin/ajv/blob/master/FAQ.md) -- [Using in browser](#using-in-browser) -- [Command line interface](#command-line-interface) -- Validation - - [Keywords](#validation-keywords) - - [Annotation keywords](#annotation-keywords) - - [Formats](#formats) - - [Combining schemas with $ref](#ref) - - [$data reference](#data-reference) - - NEW: [$merge and $patch keywords](#merge-and-patch-keywords) - - [Defining custom keywords](#defining-custom-keywords) - - [Asynchronous schema compilation](#asynchronous-schema-compilation) - - [Asynchronous validation](#asynchronous-validation) -- [Security considerations](#security-considerations) - - [Security contact](#security-contact) - - [Untrusted schemas](#untrusted-schemas) - - [Circular references in objects](#circular-references-in-javascript-objects) - - [Trusted schemas](#security-risks-of-trusted-schemas) - - [ReDoS attack](#redos-attack) -- Modifying data during validation - - [Filtering data](#filtering-data) - - [Assigning defaults](#assigning-defaults) - - [Coercing data types](#coercing-data-types) -- API - - [Methods](#api) - - [Options](#options) - - [Validation errors](#validation-errors) -- [Plugins](#plugins) -- [Related packages](#related-packages) -- [Some packages using Ajv](#some-packages-using-ajv) -- [Tests, Contributing, History, Support, License](#tests) - - -## Performance - -Ajv generates code using [doT templates](https://github.com/olado/doT) to turn JSON Schemas into super-fast validation functions that are efficient for v8 optimization. - -Currently Ajv is the fastest and the most standard compliant validator according to these benchmarks: - -- [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark) - 50% faster than the second place -- [jsck benchmark](https://github.com/pandastrike/jsck#benchmarks) - 20-190% faster -- [z-schema benchmark](https://rawgit.com/zaggino/z-schema/master/benchmark/results.html) -- [themis benchmark](https://cdn.rawgit.com/playlyfe/themis/master/benchmark/results.html) - - -Performance of different validators by [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark): - -[![performance](https://chart.googleapis.com/chart?chxt=x,y&cht=bhs&chco=76A4FB&chls=2.0&chbh=32,4,1&chs=600x416&chxl=-1:|djv|ajv|json-schema-validator-generator|jsen|is-my-json-valid|themis|z-schema|jsck|skeemas|json-schema-library|tv4&chd=t:100,98,72.1,66.8,50.1,15.1,6.1,3.8,1.2,0.7,0.2)](https://github.com/ebdrup/json-schema-benchmark/blob/master/README.md#performance) - - -## Features - -- Ajv implements full JSON Schema [draft-06/07](http://json-schema.org/) and draft-04 standards: - - all validation keywords (see [JSON Schema validation keywords](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md)) - - full support of remote refs (remote schemas have to be added with `addSchema` or compiled to be available) - - support of circular references between schemas - - correct string lengths for strings with unicode pairs (can be turned off) - - [formats](#formats) defined by JSON Schema draft-07 standard and custom formats (can be turned off) - - [validates schemas against meta-schema](#api-validateschema) -- supports [browsers](#using-in-browser) and Node.js 0.10-8.x -- [asynchronous loading](#asynchronous-schema-compilation) of referenced schemas during compilation -- "All errors" validation mode with [option allErrors](#options) -- [error messages with parameters](#validation-errors) describing error reasons to allow creating custom error messages -- i18n error messages support with [ajv-i18n](https://github.com/epoberezkin/ajv-i18n) package -- [filtering data](#filtering-data) from additional properties -- [assigning defaults](#assigning-defaults) to missing properties and items -- [coercing data](#coercing-data-types) to the types specified in `type` keywords -- [custom keywords](#defining-custom-keywords) -- draft-06/07 keywords `const`, `contains`, `propertyNames` and `if/then/else` -- draft-06 boolean schemas (`true`/`false` as a schema to always pass/fail). -- keywords `switch`, `patternRequired`, `formatMaximum` / `formatMinimum` and `formatExclusiveMaximum` / `formatExclusiveMinimum` from [JSON Schema extension proposals](https://github.com/json-schema/json-schema/wiki/v5-Proposals) with [ajv-keywords](https://github.com/epoberezkin/ajv-keywords) package -- [$data reference](#data-reference) to use values from the validated data as values for the schema keywords -- [asynchronous validation](#asynchronous-validation) of custom formats and keywords - -Currently Ajv is the only validator that passes all the tests from [JSON Schema Test Suite](https://github.com/json-schema/JSON-Schema-Test-Suite) (according to [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark), apart from the test that requires that `1.0` is not an integer that is impossible to satisfy in JavaScript). - - -## Install - -``` -npm install ajv -``` - - -## Getting started - -Try it in the Node.js REPL: https://tonicdev.com/npm/ajv - - -The fastest validation call: - -```javascript -// Node.js require: -var Ajv = require('ajv'); -// or ESM/TypeScript import -import Ajv from 'ajv'; - -var ajv = new Ajv(); // options can be passed, e.g. {allErrors: true} -var validate = ajv.compile(schema); -var valid = validate(data); -if (!valid) console.log(validate.errors); -``` - -or with less code - -```javascript -// ... -var valid = ajv.validate(schema, data); -if (!valid) console.log(ajv.errors); -// ... -``` - -or - -```javascript -// ... -var valid = ajv.addSchema(schema, 'mySchema') - .validate('mySchema', data); -if (!valid) console.log(ajv.errorsText()); -// ... -``` - -See [API](#api) and [Options](#options) for more details. - -Ajv compiles schemas to functions and caches them in all cases (using schema serialized with [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) or a custom function as a key), so that the next time the same schema is used (not necessarily the same object instance) it won't be compiled again. - -The best performance is achieved when using compiled functions returned by `compile` or `getSchema` methods (there is no additional function call). - -__Please note__: every time a validation function or `ajv.validate` are called `errors` property is overwritten. You need to copy `errors` array reference to another variable if you want to use it later (e.g., in the callback). See [Validation errors](#validation-errors) - -__Note for TypeScript users__: `ajv` provides its own TypeScript declarations -out of the box, so you don't need to install the deprecated `@types/ajv` -module. - - -## Using in browser - -You can require Ajv directly from the code you browserify - in this case Ajv will be a part of your bundle. - -If you need to use Ajv in several bundles you can create a separate UMD bundle using `npm run bundle` script (thanks to [siddo420](https://github.com/siddo420)). - -Then you need to load Ajv in the browser: -```html - -``` - -This bundle can be used with different module systems; it creates global `Ajv` if no module system is found. - -The browser bundle is available on [cdnjs](https://cdnjs.com/libraries/ajv). - -Ajv is tested with these browsers: - -[![Sauce Test Status](https://saucelabs.com/browser-matrix/epoberezkin.svg)](https://saucelabs.com/u/epoberezkin) - -__Please note__: some frameworks, e.g. Dojo, may redefine global require in such way that is not compatible with CommonJS module format. In such case Ajv bundle has to be loaded before the framework and then you can use global Ajv (see issue [#234](https://github.com/epoberezkin/ajv/issues/234)). - - -## Command line interface - -CLI is available as a separate npm package [ajv-cli](https://github.com/jessedc/ajv-cli). It supports: - -- compiling JSON Schemas to test their validity -- BETA: generating standalone module exporting a validation function to be used without Ajv (using [ajv-pack](https://github.com/epoberezkin/ajv-pack)) -- migrate schemas to draft-07 (using [json-schema-migrate](https://github.com/epoberezkin/json-schema-migrate)) -- validating data file(s) against JSON Schema -- testing expected validity of data against JSON Schema -- referenced schemas -- custom meta-schemas -- files in JSON and JavaScript format -- all Ajv options -- reporting changes in data after validation in [JSON-patch](https://tools.ietf.org/html/rfc6902) format - - -## Validation keywords - -Ajv supports all validation keywords from draft-07 of JSON Schema standard: - -- [type](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#type) -- [for numbers](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#keywords-for-numbers) - maximum, minimum, exclusiveMaximum, exclusiveMinimum, multipleOf -- [for strings](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#keywords-for-strings) - maxLength, minLength, pattern, format -- [for arrays](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#keywords-for-arrays) - maxItems, minItems, uniqueItems, items, additionalItems, [contains](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#contains) -- [for objects](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#keywords-for-objects) - maxProperties, minProperties, required, properties, patternProperties, additionalProperties, dependencies, [propertyNames](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#propertynames) -- [for all types](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#keywords-for-all-types) - enum, [const](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#const) -- [compound keywords](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#compound-keywords) - not, oneOf, anyOf, allOf, [if/then/else](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#ifthenelse) - -With [ajv-keywords](https://github.com/epoberezkin/ajv-keywords) package Ajv also supports validation keywords from [JSON Schema extension proposals](https://github.com/json-schema/json-schema/wiki/v5-Proposals) for JSON Schema standard: - -- [patternRequired](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#patternrequired-proposed) - like `required` but with patterns that some property should match. -- [formatMaximum, formatMinimum, formatExclusiveMaximum, formatExclusiveMinimum](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#formatmaximum--formatminimum-and-exclusiveformatmaximum--exclusiveformatminimum-proposed) - setting limits for date, time, etc. - -See [JSON Schema validation keywords](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md) for more details. - - -## Annotation keywords - -JSON Schema specification defines several annotation keywords that describe schema itself but do not perform any validation. - -- `title` and `description`: information about the data represented by that schema -- `$comment` (NEW in draft-07): information for developers. With option `$comment` Ajv logs or passes the comment string to the user-supplied function. See [Options](#options). -- `default`: a default value of the data instance, see [Assigning defaults](#assigning-defaults). -- `examples` (NEW in draft-06): an array of data instances. Ajv does not check the validity of these instances against the schema. -- `readOnly` and `writeOnly` (NEW in draft-07): marks data-instance as read-only or write-only in relation to the source of the data (database, api, etc.). -- `contentEncoding`: [RFC 2045](https://tools.ietf.org/html/rfc2045#section-6.1 ), e.g., "base64". -- `contentMediaType`: [RFC 2046](https://tools.ietf.org/html/rfc2046), e.g., "image/png". - -__Please note__: Ajv does not implement validation of the keywords `examples`, `contentEncoding` and `contentMediaType` but it reserves them. If you want to create a plugin that implements some of them, it should remove these keywords from the instance. - - -## Formats - -Ajv implements formats defined by JSON Schema specification and several other formats. It is recommended NOT to use "format" keyword implementations with untrusted data, as they use potentially unsafe regular expressions - see [ReDoS attack](#redos-attack). - -__Please note__: if you need to use "format" keyword to validate untrusted data, you MUST assess their suitability and safety for your validation scenarios. - -The following formats are implemented for string validation with "format" keyword: - -- _date_: full-date according to [RFC3339](http://tools.ietf.org/html/rfc3339#section-5.6). -- _time_: time with optional time-zone. -- _date-time_: date-time from the same source (time-zone is mandatory). `date`, `time` and `date-time` validate ranges in `full` mode and only regexp in `fast` mode (see [options](#options)). -- _uri_: full URI. -- _uri-reference_: URI reference, including full and relative URIs. -- _uri-template_: URI template according to [RFC6570](https://tools.ietf.org/html/rfc6570) -- _url_ (deprecated): [URL record](https://url.spec.whatwg.org/#concept-url). -- _email_: email address. -- _hostname_: host name according to [RFC1034](http://tools.ietf.org/html/rfc1034#section-3.5). -- _ipv4_: IP address v4. -- _ipv6_: IP address v6. -- _regex_: tests whether a string is a valid regular expression by passing it to RegExp constructor. -- _uuid_: Universally Unique IDentifier according to [RFC4122](http://tools.ietf.org/html/rfc4122). -- _json-pointer_: JSON-pointer according to [RFC6901](https://tools.ietf.org/html/rfc6901). -- _relative-json-pointer_: relative JSON-pointer according to [this draft](http://tools.ietf.org/html/draft-luff-relative-json-pointer-00). - -__Please note__: JSON Schema draft-07 also defines formats `iri`, `iri-reference`, `idn-hostname` and `idn-email` for URLs, hostnames and emails with international characters. Ajv does not implement these formats. If you create Ajv plugin that implements them please make a PR to mention this plugin here. - -There are two modes of format validation: `fast` and `full`. This mode affects formats `date`, `time`, `date-time`, `uri`, `uri-reference`, and `email`. See [Options](#options) for details. - -You can add additional formats and replace any of the formats above using [addFormat](#api-addformat) method. - -The option `unknownFormats` allows changing the default behaviour when an unknown format is encountered. In this case Ajv can either fail schema compilation (default) or ignore it (default in versions before 5.0.0). You also can whitelist specific format(s) to be ignored. See [Options](#options) for details. - -You can find regular expressions used for format validation and the sources that were used in [formats.js](https://github.com/epoberezkin/ajv/blob/master/lib/compile/formats.js). - - -## Combining schemas with $ref - -You can structure your validation logic across multiple schema files and have schemas reference each other using `$ref` keyword. - -Example: - -```javascript -var schema = { - "$id": "http://example.com/schemas/schema.json", - "type": "object", - "properties": { - "foo": { "$ref": "defs.json#/definitions/int" }, - "bar": { "$ref": "defs.json#/definitions/str" } - } -}; - -var defsSchema = { - "$id": "http://example.com/schemas/defs.json", - "definitions": { - "int": { "type": "integer" }, - "str": { "type": "string" } - } -}; -``` - -Now to compile your schema you can either pass all schemas to Ajv instance: - -```javascript -var ajv = new Ajv({schemas: [schema, defsSchema]}); -var validate = ajv.getSchema('http://example.com/schemas/schema.json'); -``` - -or use `addSchema` method: - -```javascript -var ajv = new Ajv; -var validate = ajv.addSchema(defsSchema) - .compile(schema); -``` - -See [Options](#options) and [addSchema](#api) method. - -__Please note__: -- `$ref` is resolved as the uri-reference using schema $id as the base URI (see the example). -- References can be recursive (and mutually recursive) to implement the schemas for different data structures (such as linked lists, trees, graphs, etc.). -- You don't have to host your schema files at the URIs that you use as schema $id. These URIs are only used to identify the schemas, and according to JSON Schema specification validators should not expect to be able to download the schemas from these URIs. -- The actual location of the schema file in the file system is not used. -- You can pass the identifier of the schema as the second parameter of `addSchema` method or as a property name in `schemas` option. This identifier can be used instead of (or in addition to) schema $id. -- You cannot have the same $id (or the schema identifier) used for more than one schema - the exception will be thrown. -- You can implement dynamic resolution of the referenced schemas using `compileAsync` method. In this way you can store schemas in any system (files, web, database, etc.) and reference them without explicitly adding to Ajv instance. See [Asynchronous schema compilation](#asynchronous-schema-compilation). - - -## $data reference - -With `$data` option you can use values from the validated data as the values for the schema keywords. See [proposal](https://github.com/json-schema-org/json-schema-spec/issues/51) for more information about how it works. - -`$data` reference is supported in the keywords: const, enum, format, maximum/minimum, exclusiveMaximum / exclusiveMinimum, maxLength / minLength, maxItems / minItems, maxProperties / minProperties, formatMaximum / formatMinimum, formatExclusiveMaximum / formatExclusiveMinimum, multipleOf, pattern, required, uniqueItems. - -The value of "$data" should be a [JSON-pointer](https://tools.ietf.org/html/rfc6901) to the data (the root is always the top level data object, even if the $data reference is inside a referenced subschema) or a [relative JSON-pointer](http://tools.ietf.org/html/draft-luff-relative-json-pointer-00) (it is relative to the current point in data; if the $data reference is inside a referenced subschema it cannot point to the data outside of the root level for this subschema). - -Examples. - -This schema requires that the value in property `smaller` is less or equal than the value in the property larger: - -```javascript -var ajv = new Ajv({$data: true}); - -var schema = { - "properties": { - "smaller": { - "type": "number", - "maximum": { "$data": "1/larger" } - }, - "larger": { "type": "number" } - } -}; - -var validData = { - smaller: 5, - larger: 7 -}; - -ajv.validate(schema, validData); // true -``` - -This schema requires that the properties have the same format as their field names: - -```javascript -var schema = { - "additionalProperties": { - "type": "string", - "format": { "$data": "0#" } - } -}; - -var validData = { - 'date-time': '1963-06-19T08:30:06.283185Z', - email: 'joe.bloggs@example.com' -} -``` - -`$data` reference is resolved safely - it won't throw even if some property is undefined. If `$data` resolves to `undefined` the validation succeeds (with the exclusion of `const` keyword). If `$data` resolves to incorrect type (e.g. not "number" for maximum keyword) the validation fails. - - -## $merge and $patch keywords - -With the package [ajv-merge-patch](https://github.com/epoberezkin/ajv-merge-patch) you can use the keywords `$merge` and `$patch` that allow extending JSON Schemas with patches using formats [JSON Merge Patch (RFC 7396)](https://tools.ietf.org/html/rfc7396) and [JSON Patch (RFC 6902)](https://tools.ietf.org/html/rfc6902). - -To add keywords `$merge` and `$patch` to Ajv instance use this code: - -```javascript -require('ajv-merge-patch')(ajv); -``` - -Examples. - -Using `$merge`: - -```json -{ - "$merge": { - "source": { - "type": "object", - "properties": { "p": { "type": "string" } }, - "additionalProperties": false - }, - "with": { - "properties": { "q": { "type": "number" } } - } - } -} -``` - -Using `$patch`: - -```json -{ - "$patch": { - "source": { - "type": "object", - "properties": { "p": { "type": "string" } }, - "additionalProperties": false - }, - "with": [ - { "op": "add", "path": "/properties/q", "value": { "type": "number" } } - ] - } -} -``` - -The schemas above are equivalent to this schema: - -```json -{ - "type": "object", - "properties": { - "p": { "type": "string" }, - "q": { "type": "number" } - }, - "additionalProperties": false -} -``` - -The properties `source` and `with` in the keywords `$merge` and `$patch` can use absolute or relative `$ref` to point to other schemas previously added to the Ajv instance or to the fragments of the current schema. - -See the package [ajv-merge-patch](https://github.com/epoberezkin/ajv-merge-patch) for more information. - - -## Defining custom keywords - -The advantages of using custom keywords are: - -- allow creating validation scenarios that cannot be expressed using JSON Schema -- simplify your schemas -- help bringing a bigger part of the validation logic to your schemas -- make your schemas more expressive, less verbose and closer to your application domain -- implement custom data processors that modify your data (`modifying` option MUST be used in keyword definition) and/or create side effects while the data is being validated - -If a keyword is used only for side-effects and its validation result is pre-defined, use option `valid: true/false` in keyword definition to simplify both generated code (no error handling in case of `valid: true`) and your keyword functions (no need to return any validation result). - -The concerns you have to be aware of when extending JSON Schema standard with custom keywords are the portability and understanding of your schemas. You will have to support these custom keywords on other platforms and to properly document these keywords so that everybody can understand them in your schemas. - -You can define custom keywords with [addKeyword](#api-addkeyword) method. Keywords are defined on the `ajv` instance level - new instances will not have previously defined keywords. - -Ajv allows defining keywords with: -- validation function -- compilation function -- macro function -- inline compilation function that should return code (as string) that will be inlined in the currently compiled schema. - -Example. `range` and `exclusiveRange` keywords using compiled schema: - -```javascript -ajv.addKeyword('range', { - type: 'number', - compile: function (sch, parentSchema) { - var min = sch[0]; - var max = sch[1]; - - return parentSchema.exclusiveRange === true - ? function (data) { return data > min && data < max; } - : function (data) { return data >= min && data <= max; } - } -}); - -var schema = { "range": [2, 4], "exclusiveRange": true }; -var validate = ajv.compile(schema); -console.log(validate(2.01)); // true -console.log(validate(3.99)); // true -console.log(validate(2)); // false -console.log(validate(4)); // false -``` - -Several custom keywords (typeof, instanceof, range and propertyNames) are defined in [ajv-keywords](https://github.com/epoberezkin/ajv-keywords) package - they can be used for your schemas and as a starting point for your own custom keywords. - -See [Defining custom keywords](https://github.com/epoberezkin/ajv/blob/master/CUSTOM.md) for more details. - - -## Asynchronous schema compilation - -During asynchronous compilation remote references are loaded using supplied function. See `compileAsync` [method](#api-compileAsync) and `loadSchema` [option](#options). - -Example: - -```javascript -var ajv = new Ajv({ loadSchema: loadSchema }); - -ajv.compileAsync(schema).then(function (validate) { - var valid = validate(data); - // ... -}); - -function loadSchema(uri) { - return request.json(uri).then(function (res) { - if (res.statusCode >= 400) - throw new Error('Loading error: ' + res.statusCode); - return res.body; - }); -} -``` - -__Please note__: [Option](#options) `missingRefs` should NOT be set to `"ignore"` or `"fail"` for asynchronous compilation to work. - - -## Asynchronous validation - -Example in Node.js REPL: https://tonicdev.com/esp/ajv-asynchronous-validation - -You can define custom formats and keywords that perform validation asynchronously by accessing database or some other service. You should add `async: true` in the keyword or format definition (see [addFormat](#api-addformat), [addKeyword](#api-addkeyword) and [Defining custom keywords](#defining-custom-keywords)). - -If your schema uses asynchronous formats/keywords or refers to some schema that contains them it should have `"$async": true` keyword so that Ajv can compile it correctly. If asynchronous format/keyword or reference to asynchronous schema is used in the schema without `$async` keyword Ajv will throw an exception during schema compilation. - -__Please note__: all asynchronous subschemas that are referenced from the current or other schemas should have `"$async": true` keyword as well, otherwise the schema compilation will fail. - -Validation function for an asynchronous custom format/keyword should return a promise that resolves with `true` or `false` (or rejects with `new Ajv.ValidationError(errors)` if you want to return custom errors from the keyword function). - -Ajv compiles asynchronous schemas to [es7 async functions](http://tc39.github.io/ecmascript-asyncawait/) that can optionally be transpiled with [nodent](https://github.com/MatAtBread/nodent). Async functions are supported in Node.js 7+ and all modern browsers. You can also supply any other transpiler as a function via `processCode` option. See [Options](#options). - -The compiled validation function has `$async: true` property (if the schema is asynchronous), so you can differentiate these functions if you are using both synchronous and asynchronous schemas. - -Validation result will be a promise that resolves with validated data or rejects with an exception `Ajv.ValidationError` that contains the array of validation errors in `errors` property. - - -Example: - -```javascript -var ajv = new Ajv; -// require('ajv-async')(ajv); - -ajv.addKeyword('idExists', { - async: true, - type: 'number', - validate: checkIdExists -}); - - -function checkIdExists(schema, data) { - return knex(schema.table) - .select('id') - .where('id', data) - .then(function (rows) { - return !!rows.length; // true if record is found - }); -} - -var schema = { - "$async": true, - "properties": { - "userId": { - "type": "integer", - "idExists": { "table": "users" } - }, - "postId": { - "type": "integer", - "idExists": { "table": "posts" } - } - } -}; - -var validate = ajv.compile(schema); - -validate({ userId: 1, postId: 19 }) -.then(function (data) { - console.log('Data is valid', data); // { userId: 1, postId: 19 } -}) -.catch(function (err) { - if (!(err instanceof Ajv.ValidationError)) throw err; - // data is invalid - console.log('Validation errors:', err.errors); -}); -``` - -### Using transpilers with asynchronous validation functions. - -[ajv-async](https://github.com/epoberezkin/ajv-async) uses [nodent](https://github.com/MatAtBread/nodent) to transpile async functions. To use another transpiler you should separately install it (or load its bundle in the browser). - - -#### Using nodent - -```javascript -var ajv = new Ajv; -require('ajv-async')(ajv); -// in the browser if you want to load ajv-async bundle separately you can: -// window.ajvAsync(ajv); -var validate = ajv.compile(schema); // transpiled es7 async function -validate(data).then(successFunc).catch(errorFunc); -``` - - -#### Using other transpilers - -```javascript -var ajv = new Ajv({ processCode: transpileFunc }); -var validate = ajv.compile(schema); // transpiled es7 async function -validate(data).then(successFunc).catch(errorFunc); -``` - -See [Options](#options). - - -## Security considerations - -JSON Schema, if properly used, can replace data sanitisation. It doesn't replace other API security considerations. It also introduces additional security aspects to consider. - - -##### Security contact - -To report a security vulnerability, please use the -[Tidelift security contact](https://tidelift.com/security). -Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerabilities via GitHub issues. - - -##### Untrusted schemas - -Ajv treats JSON schemas as trusted as your application code. This security model is based on the most common use case, when the schemas are static and bundled together with the application. - -If your schemas are received from untrusted sources (or generated from untrusted data) there are several scenarios you need to prevent: -- compiling schemas can cause stack overflow (if they are too deep) -- compiling schemas can be slow (e.g. [#557](https://github.com/epoberezkin/ajv/issues/557)) -- validating certain data can be slow - -It is difficult to predict all the scenarios, but at the very least it may help to limit the size of untrusted schemas (e.g. limit JSON string length) and also the maximum schema object depth (that can be high for relatively small JSON strings). You also may want to mitigate slow regular expressions in `pattern` and `patternProperties` keywords. - -Regardless the measures you take, using untrusted schemas increases security risks. - - -##### Circular references in JavaScript objects - -Ajv does not support schemas and validated data that have circular references in objects. See [issue #802](https://github.com/epoberezkin/ajv/issues/802). - -An attempt to compile such schemas or validate such data would cause stack overflow (or will not complete in case of asynchronous validation). Depending on the parser you use, untrusted data can lead to circular references. - - -##### Security risks of trusted schemas - -Some keywords in JSON Schemas can lead to very slow validation for certain data. These keywords include (but may be not limited to): - -- `pattern` and `format` for large strings - in some cases using `maxLength` can help mitigate it, but certain regular expressions can lead to exponential validation time even with relatively short strings (see [ReDoS attack](#redos-attack)). -- `patternProperties` for large property names - use `propertyNames` to mitigate, but some regular expressions can have exponential evaluation time as well. -- `uniqueItems` for large non-scalar arrays - use `maxItems` to mitigate - -__Please note__: The suggestions above to prevent slow validation would only work if you do NOT use `allErrors: true` in production code (using it would continue validation after validation errors). - -You can validate your JSON schemas against [this meta-schema](https://github.com/epoberezkin/ajv/blob/master/lib/refs/json-schema-secure.json) to check that these recommendations are followed: - -```javascript -const isSchemaSecure = ajv.compile(require('ajv/lib/refs/json-schema-secure.json')); - -const schema1 = {format: 'email'}; -isSchemaSecure(schema1); // false - -const schema2 = {format: 'email', maxLength: MAX_LENGTH}; -isSchemaSecure(schema2); // true -``` - -__Please note__: following all these recommendation is not a guarantee that validation of untrusted data is safe - it can still lead to some undesirable results. - - -## ReDoS attack - -Certain regular expressions can lead to the exponential evaluation time even with relatively short strings. - -Please assess the regular expressions you use in the schemas on their vulnerability to this attack - see [safe-regex](https://github.com/substack/safe-regex), for example. - -__Please note__: some formats that Ajv implements use [regular expressions](https://github.com/epoberezkin/ajv/blob/master/lib/compile/formats.js) that can be vulnerable to ReDoS attack, so if you use Ajv to validate data from untrusted sources __it is strongly recommended__ to consider the following: - -- making assessment of "format" implementations in Ajv. -- using `format: 'fast'` option that simplifies some of the regular expressions (although it does not guarantee that they are safe). -- replacing format implementations provided by Ajv with your own implementations of "format" keyword that either uses different regular expressions or another approach to format validation. Please see [addFormat](#api-addformat) method. -- disabling format validation by ignoring "format" keyword with option `format: false` - -Whatever mitigation you choose, please assume all formats provided by Ajv as potentially unsafe and make your own assessment of their suitability for your validation scenarios. - - -## Filtering data - -With [option `removeAdditional`](#options) (added by [andyscott](https://github.com/andyscott)) you can filter data during the validation. - -This option modifies original data. - -Example: - -```javascript -var ajv = new Ajv({ removeAdditional: true }); -var schema = { - "additionalProperties": false, - "properties": { - "foo": { "type": "number" }, - "bar": { - "additionalProperties": { "type": "number" }, - "properties": { - "baz": { "type": "string" } - } - } - } -} - -var data = { - "foo": 0, - "additional1": 1, // will be removed; `additionalProperties` == false - "bar": { - "baz": "abc", - "additional2": 2 // will NOT be removed; `additionalProperties` != false - }, -} - -var validate = ajv.compile(schema); - -console.log(validate(data)); // true -console.log(data); // { "foo": 0, "bar": { "baz": "abc", "additional2": 2 } -``` - -If `removeAdditional` option in the example above were `"all"` then both `additional1` and `additional2` properties would have been removed. - -If the option were `"failing"` then property `additional1` would have been removed regardless of its value and property `additional2` would have been removed only if its value were failing the schema in the inner `additionalProperties` (so in the example above it would have stayed because it passes the schema, but any non-number would have been removed). - -__Please note__: If you use `removeAdditional` option with `additionalProperties` keyword inside `anyOf`/`oneOf` keywords your validation can fail with this schema, for example: - -```json -{ - "type": "object", - "oneOf": [ - { - "properties": { - "foo": { "type": "string" } - }, - "required": [ "foo" ], - "additionalProperties": false - }, - { - "properties": { - "bar": { "type": "integer" } - }, - "required": [ "bar" ], - "additionalProperties": false - } - ] -} -``` - -The intention of the schema above is to allow objects with either the string property "foo" or the integer property "bar", but not with both and not with any other properties. - -With the option `removeAdditional: true` the validation will pass for the object `{ "foo": "abc"}` but will fail for the object `{"bar": 1}`. It happens because while the first subschema in `oneOf` is validated, the property `bar` is removed because it is an additional property according to the standard (because it is not included in `properties` keyword in the same schema). - -While this behaviour is unexpected (issues [#129](https://github.com/epoberezkin/ajv/issues/129), [#134](https://github.com/epoberezkin/ajv/issues/134)), it is correct. To have the expected behaviour (both objects are allowed and additional properties are removed) the schema has to be refactored in this way: - -```json -{ - "type": "object", - "properties": { - "foo": { "type": "string" }, - "bar": { "type": "integer" } - }, - "additionalProperties": false, - "oneOf": [ - { "required": [ "foo" ] }, - { "required": [ "bar" ] } - ] -} -``` - -The schema above is also more efficient - it will compile into a faster function. - - -## Assigning defaults - -With [option `useDefaults`](#options) Ajv will assign values from `default` keyword in the schemas of `properties` and `items` (when it is the array of schemas) to the missing properties and items. - -With the option value `"empty"` properties and items equal to `null` or `""` (empty string) will be considered missing and assigned defaults. - -This option modifies original data. - -__Please note__: the default value is inserted in the generated validation code as a literal, so the value inserted in the data will be the deep clone of the default in the schema. - - -Example 1 (`default` in `properties`): - -```javascript -var ajv = new Ajv({ useDefaults: true }); -var schema = { - "type": "object", - "properties": { - "foo": { "type": "number" }, - "bar": { "type": "string", "default": "baz" } - }, - "required": [ "foo", "bar" ] -}; - -var data = { "foo": 1 }; - -var validate = ajv.compile(schema); - -console.log(validate(data)); // true -console.log(data); // { "foo": 1, "bar": "baz" } -``` - -Example 2 (`default` in `items`): - -```javascript -var schema = { - "type": "array", - "items": [ - { "type": "number" }, - { "type": "string", "default": "foo" } - ] -} - -var data = [ 1 ]; - -var validate = ajv.compile(schema); - -console.log(validate(data)); // true -console.log(data); // [ 1, "foo" ] -``` - -`default` keywords in other cases are ignored: - -- not in `properties` or `items` subschemas -- in schemas inside `anyOf`, `oneOf` and `not` (see [#42](https://github.com/epoberezkin/ajv/issues/42)) -- in `if` subschema of `switch` keyword -- in schemas generated by custom macro keywords - -The [`strictDefaults` option](#options) customizes Ajv's behavior for the defaults that Ajv ignores (`true` raises an error, and `"log"` outputs a warning). - - -## Coercing data types - -When you are validating user inputs all your data properties are usually strings. The option `coerceTypes` allows you to have your data types coerced to the types specified in your schema `type` keywords, both to pass the validation and to use the correctly typed data afterwards. - -This option modifies original data. - -__Please note__: if you pass a scalar value to the validating function its type will be coerced and it will pass the validation, but the value of the variable you pass won't be updated because scalars are passed by value. - - -Example 1: - -```javascript -var ajv = new Ajv({ coerceTypes: true }); -var schema = { - "type": "object", - "properties": { - "foo": { "type": "number" }, - "bar": { "type": "boolean" } - }, - "required": [ "foo", "bar" ] -}; - -var data = { "foo": "1", "bar": "false" }; - -var validate = ajv.compile(schema); - -console.log(validate(data)); // true -console.log(data); // { "foo": 1, "bar": false } -``` - -Example 2 (array coercions): - -```javascript -var ajv = new Ajv({ coerceTypes: 'array' }); -var schema = { - "properties": { - "foo": { "type": "array", "items": { "type": "number" } }, - "bar": { "type": "boolean" } - } -}; - -var data = { "foo": "1", "bar": ["false"] }; - -var validate = ajv.compile(schema); - -console.log(validate(data)); // true -console.log(data); // { "foo": [1], "bar": false } -``` - -The coercion rules, as you can see from the example, are different from JavaScript both to validate user input as expected and to have the coercion reversible (to correctly validate cases where different types are defined in subschemas of "anyOf" and other compound keywords). - -See [Coercion rules](https://github.com/epoberezkin/ajv/blob/master/COERCION.md) for details. - - -## API - -##### new Ajv(Object options) -> Object - -Create Ajv instance. - - -##### .compile(Object schema) -> Function<Object data> - -Generate validating function and cache the compiled schema for future use. - -Validating function returns a boolean value. This function has properties `errors` and `schema`. Errors encountered during the last validation are assigned to `errors` property (it is assigned `null` if there was no errors). `schema` property contains the reference to the original schema. - -The schema passed to this method will be validated against meta-schema unless `validateSchema` option is false. If schema is invalid, an error will be thrown. See [options](#options). - - -##### .compileAsync(Object schema [, Boolean meta] [, Function callback]) -> Promise - -Asynchronous version of `compile` method that loads missing remote schemas using asynchronous function in `options.loadSchema`. This function returns a Promise that resolves to a validation function. An optional callback passed to `compileAsync` will be called with 2 parameters: error (or null) and validating function. The returned promise will reject (and the callback will be called with an error) when: - -- missing schema can't be loaded (`loadSchema` returns a Promise that rejects). -- a schema containing a missing reference is loaded, but the reference cannot be resolved. -- schema (or some loaded/referenced schema) is invalid. - -The function compiles schema and loads the first missing schema (or meta-schema) until all missing schemas are loaded. - -You can asynchronously compile meta-schema by passing `true` as the second parameter. - -See example in [Asynchronous compilation](#asynchronous-schema-compilation). - - -##### .validate(Object schema|String key|String ref, data) -> Boolean - -Validate data using passed schema (it will be compiled and cached). - -Instead of the schema you can use the key that was previously passed to `addSchema`, the schema id if it was present in the schema or any previously resolved reference. - -Validation errors will be available in the `errors` property of Ajv instance (`null` if there were no errors). - -__Please note__: every time this method is called the errors are overwritten so you need to copy them to another variable if you want to use them later. - -If the schema is asynchronous (has `$async` keyword on the top level) this method returns a Promise. See [Asynchronous validation](#asynchronous-validation). - - -##### .addSchema(Array<Object>|Object schema [, String key]) -> Ajv - -Add schema(s) to validator instance. This method does not compile schemas (but it still validates them). Because of that dependencies can be added in any order and circular dependencies are supported. It also prevents unnecessary compilation of schemas that are containers for other schemas but not used as a whole. - -Array of schemas can be passed (schemas should have ids), the second parameter will be ignored. - -Key can be passed that can be used to reference the schema and will be used as the schema id if there is no id inside the schema. If the key is not passed, the schema id will be used as the key. - - -Once the schema is added, it (and all the references inside it) can be referenced in other schemas and used to validate data. - -Although `addSchema` does not compile schemas, explicit compilation is not required - the schema will be compiled when it is used first time. - -By default the schema is validated against meta-schema before it is added, and if the schema does not pass validation the exception is thrown. This behaviour is controlled by `validateSchema` option. - -__Please note__: Ajv uses the [method chaining syntax](https://en.wikipedia.org/wiki/Method_chaining) for all methods with the prefix `add*` and `remove*`. -This allows you to do nice things like the following. - -```javascript -var validate = new Ajv().addSchema(schema).addFormat(name, regex).getSchema(uri); -``` - -##### .addMetaSchema(Array<Object>|Object schema [, String key]) -> Ajv - -Adds meta schema(s) that can be used to validate other schemas. That function should be used instead of `addSchema` because there may be instance options that would compile a meta schema incorrectly (at the moment it is `removeAdditional` option). - -There is no need to explicitly add draft-07 meta schema (http://json-schema.org/draft-07/schema) - it is added by default, unless option `meta` is set to `false`. You only need to use it if you have a changed meta-schema that you want to use to validate your schemas. See `validateSchema`. - - -##### .validateSchema(Object schema) -> Boolean - -Validates schema. This method should be used to validate schemas rather than `validate` due to the inconsistency of `uri` format in JSON Schema standard. - -By default this method is called automatically when the schema is added, so you rarely need to use it directly. - -If schema doesn't have `$schema` property, it is validated against draft 6 meta-schema (option `meta` should not be false). - -If schema has `$schema` property, then the schema with this id (that should be previously added) is used to validate passed schema. - -Errors will be available at `ajv.errors`. - - -##### .getSchema(String key) -> Function<Object data> - -Retrieve compiled schema previously added with `addSchema` by the key passed to `addSchema` or by its full reference (id). The returned validating function has `schema` property with the reference to the original schema. - - -##### .removeSchema([Object schema|String key|String ref|RegExp pattern]) -> Ajv - -Remove added/cached schema. Even if schema is referenced by other schemas it can be safely removed as dependent schemas have local references. - -Schema can be removed using: -- key passed to `addSchema` -- it's full reference (id) -- RegExp that should match schema id or key (meta-schemas won't be removed) -- actual schema object that will be stable-stringified to remove schema from cache - -If no parameter is passed all schemas but meta-schemas will be removed and the cache will be cleared. - - -##### .addFormat(String name, String|RegExp|Function|Object format) -> Ajv - -Add custom format to validate strings or numbers. It can also be used to replace pre-defined formats for Ajv instance. - -Strings are converted to RegExp. - -Function should return validation result as `true` or `false`. - -If object is passed it should have properties `validate`, `compare` and `async`: - -- _validate_: a string, RegExp or a function as described above. -- _compare_: an optional comparison function that accepts two strings and compares them according to the format meaning. This function is used with keywords `formatMaximum`/`formatMinimum` (defined in [ajv-keywords](https://github.com/epoberezkin/ajv-keywords) package). It should return `1` if the first value is bigger than the second value, `-1` if it is smaller and `0` if it is equal. -- _async_: an optional `true` value if `validate` is an asynchronous function; in this case it should return a promise that resolves with a value `true` or `false`. -- _type_: an optional type of data that the format applies to. It can be `"string"` (default) or `"number"` (see https://github.com/epoberezkin/ajv/issues/291#issuecomment-259923858). If the type of data is different, the validation will pass. - -Custom formats can be also added via `formats` option. - - -##### .addKeyword(String keyword, Object definition) -> Ajv - -Add custom validation keyword to Ajv instance. - -Keyword should be different from all standard JSON Schema keywords and different from previously defined keywords. There is no way to redefine keywords or to remove keyword definition from the instance. - -Keyword must start with a letter, `_` or `$`, and may continue with letters, numbers, `_`, `$`, or `-`. -It is recommended to use an application-specific prefix for keywords to avoid current and future name collisions. - -Example Keywords: -- `"xyz-example"`: valid, and uses prefix for the xyz project to avoid name collisions. -- `"example"`: valid, but not recommended as it could collide with future versions of JSON Schema etc. -- `"3-example"`: invalid as numbers are not allowed to be the first character in a keyword - -Keyword definition is an object with the following properties: - -- _type_: optional string or array of strings with data type(s) that the keyword applies to. If not present, the keyword will apply to all types. -- _validate_: validating function -- _compile_: compiling function -- _macro_: macro function -- _inline_: compiling function that returns code (as string) -- _schema_: an optional `false` value used with "validate" keyword to not pass schema -- _metaSchema_: an optional meta-schema for keyword schema -- _dependencies_: an optional list of properties that must be present in the parent schema - it will be checked during schema compilation -- _modifying_: `true` MUST be passed if keyword modifies data -- _statements_: `true` can be passed in case inline keyword generates statements (as opposed to expression) -- _valid_: pass `true`/`false` to pre-define validation result, the result returned from validation function will be ignored. This option cannot be used with macro keywords. -- _$data_: an optional `true` value to support [$data reference](#data-reference) as the value of custom keyword. The reference will be resolved at validation time. If the keyword has meta-schema it would be extended to allow $data and it will be used to validate the resolved value. Supporting $data reference requires that keyword has validating function (as the only option or in addition to compile, macro or inline function). -- _async_: an optional `true` value if the validation function is asynchronous (whether it is compiled or passed in _validate_ property); in this case it should return a promise that resolves with a value `true` or `false`. This option is ignored in case of "macro" and "inline" keywords. -- _errors_: an optional boolean or string `"full"` indicating whether keyword returns errors. If this property is not set Ajv will determine if the errors were set in case of failed validation. - -_compile_, _macro_ and _inline_ are mutually exclusive, only one should be used at a time. _validate_ can be used separately or in addition to them to support $data reference. - -__Please note__: If the keyword is validating data type that is different from the type(s) in its definition, the validation function will not be called (and expanded macro will not be used), so there is no need to check for data type inside validation function or inside schema returned by macro function (unless you want to enforce a specific type and for some reason do not want to use a separate `type` keyword for that). In the same way as standard keywords work, if the keyword does not apply to the data type being validated, the validation of this keyword will succeed. - -See [Defining custom keywords](#defining-custom-keywords) for more details. - - -##### .getKeyword(String keyword) -> Object|Boolean - -Returns custom keyword definition, `true` for pre-defined keywords and `false` if the keyword is unknown. - - -##### .removeKeyword(String keyword) -> Ajv - -Removes custom or pre-defined keyword so you can redefine them. - -While this method can be used to extend pre-defined keywords, it can also be used to completely change their meaning - it may lead to unexpected results. - -__Please note__: schemas compiled before the keyword is removed will continue to work without changes. To recompile schemas use `removeSchema` method and compile them again. - - -##### .errorsText([Array<Object> errors [, Object options]]) -> String - -Returns the text with all errors in a String. - -Options can have properties `separator` (string used to separate errors, ", " by default) and `dataVar` (the variable name that dataPaths are prefixed with, "data" by default). - - -## Options - -Defaults: - -```javascript -{ - // validation and reporting options: - $data: false, - allErrors: false, - verbose: false, - $comment: false, // NEW in Ajv version 6.0 - jsonPointers: false, - uniqueItems: true, - unicode: true, - nullable: false, - format: 'fast', - formats: {}, - unknownFormats: true, - schemas: {}, - logger: undefined, - // referenced schema options: - schemaId: '$id', - missingRefs: true, - extendRefs: 'ignore', // recommended 'fail' - loadSchema: undefined, // function(uri: string): Promise {} - // options to modify validated data: - removeAdditional: false, - useDefaults: false, - coerceTypes: false, - // strict mode options - strictDefaults: false, - strictKeywords: false, - // asynchronous validation options: - transpile: undefined, // requires ajv-async package - // advanced options: - meta: true, - validateSchema: true, - addUsedSchema: true, - inlineRefs: true, - passContext: false, - loopRequired: Infinity, - ownProperties: false, - multipleOfPrecision: false, - errorDataPath: 'object', // deprecated - messages: true, - sourceCode: false, - processCode: undefined, // function (str: string): string {} - cache: new Cache, - serialize: undefined -} -``` - -##### Validation and reporting options - -- _$data_: support [$data references](#data-reference). Draft 6 meta-schema that is added by default will be extended to allow them. If you want to use another meta-schema you need to use $dataMetaSchema method to add support for $data reference. See [API](#api). -- _allErrors_: check all rules collecting all errors. Default is to return after the first error. -- _verbose_: include the reference to the part of the schema (`schema` and `parentSchema`) and validated data in errors (false by default). -- _$comment_ (NEW in Ajv version 6.0): log or pass the value of `$comment` keyword to a function. Option values: - - `false` (default): ignore $comment keyword. - - `true`: log the keyword value to console. - - function: pass the keyword value, its schema path and root schema to the specified function -- _jsonPointers_: set `dataPath` property of errors using [JSON Pointers](https://tools.ietf.org/html/rfc6901) instead of JavaScript property access notation. -- _uniqueItems_: validate `uniqueItems` keyword (true by default). -- _unicode_: calculate correct length of strings with unicode pairs (true by default). Pass `false` to use `.length` of strings that is faster, but gives "incorrect" lengths of strings with unicode pairs - each unicode pair is counted as two characters. -- _nullable_: support keyword "nullable" from [Open API 3 specification](https://swagger.io/docs/specification/data-models/data-types/). -- _format_: formats validation mode. Option values: - - `"fast"` (default) - simplified and fast validation (see [Formats](#formats) for details of which formats are available and affected by this option). - - `"full"` - more restrictive and slow validation. E.g., 25:00:00 and 2015/14/33 will be invalid time and date in 'full' mode but it will be valid in 'fast' mode. - - `false` - ignore all format keywords. -- _formats_: an object with custom formats. Keys and values will be passed to `addFormat` method. -- _keywords_: an object with custom keywords. Keys and values will be passed to `addKeyword` method. -- _unknownFormats_: handling of unknown formats. Option values: - - `true` (default) - if an unknown format is encountered the exception is thrown during schema compilation. If `format` keyword value is [$data reference](#data-reference) and it is unknown the validation will fail. - - `[String]` - an array of unknown format names that will be ignored. This option can be used to allow usage of third party schemas with format(s) for which you don't have definitions, but still fail if another unknown format is used. If `format` keyword value is [$data reference](#data-reference) and it is not in this array the validation will fail. - - `"ignore"` - to log warning during schema compilation and always pass validation (the default behaviour in versions before 5.0.0). This option is not recommended, as it allows to mistype format name and it won't be validated without any error message. This behaviour is required by JSON Schema specification. -- _schemas_: an array or object of schemas that will be added to the instance. In case you pass the array the schemas must have IDs in them. When the object is passed the method `addSchema(value, key)` will be called for each schema in this object. -- _logger_: sets the logging method. Default is the global `console` object that should have methods `log`, `warn` and `error`. See [Error logging](#error-logging). Option values: - - custom logger - it should have methods `log`, `warn` and `error`. If any of these methods is missing an exception will be thrown. - - `false` - logging is disabled. - - -##### Referenced schema options - -- _schemaId_: this option defines which keywords are used as schema URI. Option value: - - `"$id"` (default) - only use `$id` keyword as schema URI (as specified in JSON Schema draft-06/07), ignore `id` keyword (if it is present a warning will be logged). - - `"id"` - only use `id` keyword as schema URI (as specified in JSON Schema draft-04), ignore `$id` keyword (if it is present a warning will be logged). - - `"auto"` - use both `$id` and `id` keywords as schema URI. If both are present (in the same schema object) and different the exception will be thrown during schema compilation. -- _missingRefs_: handling of missing referenced schemas. Option values: - - `true` (default) - if the reference cannot be resolved during compilation the exception is thrown. The thrown error has properties `missingRef` (with hash fragment) and `missingSchema` (without it). Both properties are resolved relative to the current base id (usually schema id, unless it was substituted). - - `"ignore"` - to log error during compilation and always pass validation. - - `"fail"` - to log error and successfully compile schema but fail validation if this rule is checked. -- _extendRefs_: validation of other keywords when `$ref` is present in the schema. Option values: - - `"ignore"` (default) - when `$ref` is used other keywords are ignored (as per [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03#section-3) standard). A warning will be logged during the schema compilation. - - `"fail"` (recommended) - if other validation keywords are used together with `$ref` the exception will be thrown when the schema is compiled. This option is recommended to make sure schema has no keywords that are ignored, which can be confusing. - - `true` - validate all keywords in the schemas with `$ref` (the default behaviour in versions before 5.0.0). -- _loadSchema_: asynchronous function that will be used to load remote schemas when `compileAsync` [method](#api-compileAsync) is used and some reference is missing (option `missingRefs` should NOT be 'fail' or 'ignore'). This function should accept remote schema uri as a parameter and return a Promise that resolves to a schema. See example in [Asynchronous compilation](#asynchronous-schema-compilation). - - -##### Options to modify validated data - -- _removeAdditional_: remove additional properties - see example in [Filtering data](#filtering-data). This option is not used if schema is added with `addMetaSchema` method. Option values: - - `false` (default) - not to remove additional properties - - `"all"` - all additional properties are removed, regardless of `additionalProperties` keyword in schema (and no validation is made for them). - - `true` - only additional properties with `additionalProperties` keyword equal to `false` are removed. - - `"failing"` - additional properties that fail schema validation will be removed (where `additionalProperties` keyword is `false` or schema). -- _useDefaults_: replace missing or undefined properties and items with the values from corresponding `default` keywords. Default behaviour is to ignore `default` keywords. This option is not used if schema is added with `addMetaSchema` method. See examples in [Assigning defaults](#assigning-defaults). Option values: - - `false` (default) - do not use defaults - - `true` - insert defaults by value (object literal is used). - - `"empty"` - in addition to missing or undefined, use defaults for properties and items that are equal to `null` or `""` (an empty string). - - `"shared"` (deprecated) - insert defaults by reference. If the default is an object, it will be shared by all instances of validated data. If you modify the inserted default in the validated data, it will be modified in the schema as well. -- _coerceTypes_: change data type of data to match `type` keyword. See the example in [Coercing data types](#coercing-data-types) and [coercion rules](https://github.com/epoberezkin/ajv/blob/master/COERCION.md). Option values: - - `false` (default) - no type coercion. - - `true` - coerce scalar data types. - - `"array"` - in addition to coercions between scalar types, coerce scalar data to an array with one element and vice versa (as required by the schema). - - -##### Strict mode options - -- _strictDefaults_: report ignored `default` keywords in schemas. Option values: - - `false` (default) - ignored defaults are not reported - - `true` - if an ignored default is present, throw an error - - `"log"` - if an ignored default is present, log warning -- _strictKeywords_: report unknown keywords in schemas. Option values: - - `false` (default) - unknown keywords are not reported - - `true` - if an unknown keyword is present, throw an error - - `"log"` - if an unknown keyword is present, log warning - - -##### Asynchronous validation options - -- _transpile_: Requires [ajv-async](https://github.com/epoberezkin/ajv-async) package. It determines whether Ajv transpiles compiled asynchronous validation function. Option values: - - `undefined` (default) - transpile with [nodent](https://github.com/MatAtBread/nodent) if async functions are not supported. - - `true` - always transpile with nodent. - - `false` - do not transpile; if async functions are not supported an exception will be thrown. - - -##### Advanced options - -- _meta_: add [meta-schema](http://json-schema.org/documentation.html) so it can be used by other schemas (true by default). If an object is passed, it will be used as the default meta-schema for schemas that have no `$schema` keyword. This default meta-schema MUST have `$schema` keyword. -- _validateSchema_: validate added/compiled schemas against meta-schema (true by default). `$schema` property in the schema can be http://json-schema.org/draft-07/schema or absent (draft-07 meta-schema will be used) or can be a reference to the schema previously added with `addMetaSchema` method. Option values: - - `true` (default) - if the validation fails, throw the exception. - - `"log"` - if the validation fails, log error. - - `false` - skip schema validation. -- _addUsedSchema_: by default methods `compile` and `validate` add schemas to the instance if they have `$id` (or `id`) property that doesn't start with "#". If `$id` is present and it is not unique the exception will be thrown. Set this option to `false` to skip adding schemas to the instance and the `$id` uniqueness check when these methods are used. This option does not affect `addSchema` method. -- _inlineRefs_: Affects compilation of referenced schemas. Option values: - - `true` (default) - the referenced schemas that don't have refs in them are inlined, regardless of their size - that substantially improves performance at the cost of the bigger size of compiled schema functions. - - `false` - to not inline referenced schemas (they will be compiled as separate functions). - - integer number - to limit the maximum number of keywords of the schema that will be inlined. -- _passContext_: pass validation context to custom keyword functions. If this option is `true` and you pass some context to the compiled validation function with `validate.call(context, data)`, the `context` will be available as `this` in your custom keywords. By default `this` is Ajv instance. -- _loopRequired_: by default `required` keyword is compiled into a single expression (or a sequence of statements in `allErrors` mode). In case of a very large number of properties in this keyword it may result in a very big validation function. Pass integer to set the number of properties above which `required` keyword will be validated in a loop - smaller validation function size but also worse performance. -- _ownProperties_: by default Ajv iterates over all enumerable object properties; when this option is `true` only own enumerable object properties (i.e. found directly on the object rather than on its prototype) are iterated. Contributed by @mbroadst. -- _multipleOfPrecision_: by default `multipleOf` keyword is validated by comparing the result of division with parseInt() of that result. It works for dividers that are bigger than 1. For small dividers such as 0.01 the result of the division is usually not integer (even when it should be integer, see issue [#84](https://github.com/epoberezkin/ajv/issues/84)). If you need to use fractional dividers set this option to some positive integer N to have `multipleOf` validated using this formula: `Math.abs(Math.round(division) - division) < 1e-N` (it is slower but allows for float arithmetics deviations). -- _errorDataPath_ (deprecated): set `dataPath` to point to 'object' (default) or to 'property' when validating keywords `required`, `additionalProperties` and `dependencies`. -- _messages_: Include human-readable messages in errors. `true` by default. `false` can be passed when custom messages are used (e.g. with [ajv-i18n](https://github.com/epoberezkin/ajv-i18n)). -- _sourceCode_: add `sourceCode` property to validating function (for debugging; this code can be different from the result of toString call). -- _processCode_: an optional function to process generated code before it is passed to Function constructor. It can be used to either beautify (the validating function is generated without line-breaks) or to transpile code. Starting from version 5.0.0 this option replaced options: - - `beautify` that formatted the generated function using [js-beautify](https://github.com/beautify-web/js-beautify). If you want to beautify the generated code pass `require('js-beautify').js_beautify`. - - `transpile` that transpiled asynchronous validation function. You can still use `transpile` option with [ajv-async](https://github.com/epoberezkin/ajv-async) package. See [Asynchronous validation](#asynchronous-validation) for more information. -- _cache_: an optional instance of cache to store compiled schemas using stable-stringified schema as a key. For example, set-associative cache [sacjs](https://github.com/epoberezkin/sacjs) can be used. If not passed then a simple hash is used which is good enough for the common use case (a limited number of statically defined schemas). Cache should have methods `put(key, value)`, `get(key)`, `del(key)` and `clear()`. -- _serialize_: an optional function to serialize schema to cache key. Pass `false` to use schema itself as a key (e.g., if WeakMap used as a cache). By default [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used. - - -## Validation errors - -In case of validation failure, Ajv assigns the array of errors to `errors` property of validation function (or to `errors` property of Ajv instance when `validate` or `validateSchema` methods were called). In case of [asynchronous validation](#asynchronous-validation), the returned promise is rejected with exception `Ajv.ValidationError` that has `errors` property. - - -### Error objects - -Each error is an object with the following properties: - -- _keyword_: validation keyword. -- _dataPath_: the path to the part of the data that was validated. By default `dataPath` uses JavaScript property access notation (e.g., `".prop[1].subProp"`). When the option `jsonPointers` is true (see [Options](#options)) `dataPath` will be set using JSON pointer standard (e.g., `"/prop/1/subProp"`). -- _schemaPath_: the path (JSON-pointer as a URI fragment) to the schema of the keyword that failed validation. -- _params_: the object with the additional information about error that can be used to create custom error messages (e.g., using [ajv-i18n](https://github.com/epoberezkin/ajv-i18n) package). See below for parameters set by all keywords. -- _message_: the standard error message (can be excluded with option `messages` set to false). -- _schema_: the schema of the keyword (added with `verbose` option). -- _parentSchema_: the schema containing the keyword (added with `verbose` option) -- _data_: the data validated by the keyword (added with `verbose` option). - -__Please note__: `propertyNames` keyword schema validation errors have an additional property `propertyName`, `dataPath` points to the object. After schema validation for each property name, if it is invalid an additional error is added with the property `keyword` equal to `"propertyNames"`. - - -### Error parameters - -Properties of `params` object in errors depend on the keyword that failed validation. - -- `maxItems`, `minItems`, `maxLength`, `minLength`, `maxProperties`, `minProperties` - property `limit` (number, the schema of the keyword). -- `additionalItems` - property `limit` (the maximum number of allowed items in case when `items` keyword is an array of schemas and `additionalItems` is false). -- `additionalProperties` - property `additionalProperty` (the property not used in `properties` and `patternProperties` keywords). -- `dependencies` - properties: - - `property` (dependent property), - - `missingProperty` (required missing dependency - only the first one is reported currently) - - `deps` (required dependencies, comma separated list as a string), - - `depsCount` (the number of required dependencies). -- `format` - property `format` (the schema of the keyword). -- `maximum`, `minimum` - properties: - - `limit` (number, the schema of the keyword), - - `exclusive` (boolean, the schema of `exclusiveMaximum` or `exclusiveMinimum`), - - `comparison` (string, comparison operation to compare the data to the limit, with the data on the left and the limit on the right; can be "<", "<=", ">", ">=") -- `multipleOf` - property `multipleOf` (the schema of the keyword) -- `pattern` - property `pattern` (the schema of the keyword) -- `required` - property `missingProperty` (required property that is missing). -- `propertyNames` - property `propertyName` (an invalid property name). -- `patternRequired` (in ajv-keywords) - property `missingPattern` (required pattern that did not match any property). -- `type` - property `type` (required type(s), a string, can be a comma-separated list) -- `uniqueItems` - properties `i` and `j` (indices of duplicate items). -- `const` - property `allowedValue` pointing to the value (the schema of the keyword). -- `enum` - property `allowedValues` pointing to the array of values (the schema of the keyword). -- `$ref` - property `ref` with the referenced schema URI. -- `oneOf` - property `passingSchemas` (array of indices of passing schemas, null if no schema passes). -- custom keywords (in case keyword definition doesn't create errors) - property `keyword` (the keyword name). - - -### Error logging - -Using the `logger` option when initiallizing Ajv will allow you to define custom logging. Here you can build upon the exisiting logging. The use of other logging packages is supported as long as the package or its associated wrapper exposes the required methods. If any of the required methods are missing an exception will be thrown. -- **Required Methods**: `log`, `warn`, `error` - -```javascript -var otherLogger = new OtherLogger(); -var ajv = new Ajv({ - logger: { - log: console.log.bind(console), - warn: function warn() { - otherLogger.logWarn.apply(otherLogger, arguments); - }, - error: function error() { - otherLogger.logError.apply(otherLogger, arguments); - console.error.apply(console, arguments); - } - } -}); -``` - - -## Plugins - -Ajv can be extended with plugins that add custom keywords, formats or functions to process generated code. When such plugin is published as npm package it is recommended that it follows these conventions: - -- it exports a function -- this function accepts ajv instance as the first parameter and returns the same instance to allow chaining -- this function can accept an optional configuration as the second parameter - -If you have published a useful plugin please submit a PR to add it to the next section. - - -## Related packages - -- [ajv-async](https://github.com/epoberezkin/ajv-async) - plugin to configure async validation mode -- [ajv-bsontype](https://github.com/BoLaMN/ajv-bsontype) - plugin to validate mongodb's bsonType formats -- [ajv-cli](https://github.com/jessedc/ajv-cli) - command line interface -- [ajv-errors](https://github.com/epoberezkin/ajv-errors) - plugin for custom error messages -- [ajv-i18n](https://github.com/epoberezkin/ajv-i18n) - internationalised error messages -- [ajv-istanbul](https://github.com/epoberezkin/ajv-istanbul) - plugin to instrument generated validation code to measure test coverage of your schemas -- [ajv-keywords](https://github.com/epoberezkin/ajv-keywords) - plugin with custom validation keywords (select, typeof, etc.) -- [ajv-merge-patch](https://github.com/epoberezkin/ajv-merge-patch) - plugin with keywords $merge and $patch -- [ajv-pack](https://github.com/epoberezkin/ajv-pack) - produces a compact module exporting validation functions -- [ajv-formats-draft2019](https://github.com/luzlab/ajv-formats-draft2019) - format validators for draft2019 that aren't already included in ajv (ie. `idn-hostname`, `idn-email`, `iri`, `iri-reference` and `duration`). - -## Some packages using Ajv - -- [webpack](https://github.com/webpack/webpack) - a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser -- [jsonscript-js](https://github.com/JSONScript/jsonscript-js) - the interpreter for [JSONScript](http://www.jsonscript.org) - scripted processing of existing endpoints and services -- [osprey-method-handler](https://github.com/mulesoft-labs/osprey-method-handler) - Express middleware for validating requests and responses based on a RAML method object, used in [osprey](https://github.com/mulesoft/osprey) - validating API proxy generated from a RAML definition -- [har-validator](https://github.com/ahmadnassri/har-validator) - HTTP Archive (HAR) validator -- [jsoneditor](https://github.com/josdejong/jsoneditor) - a web-based tool to view, edit, format, and validate JSON http://jsoneditoronline.org -- [JSON Schema Lint](https://github.com/nickcmaynard/jsonschemalint) - a web tool to validate JSON/YAML document against a single JSON Schema http://jsonschemalint.com -- [objection](https://github.com/vincit/objection.js) - SQL-friendly ORM for Node.js -- [table](https://github.com/gajus/table) - formats data into a string table -- [ripple-lib](https://github.com/ripple/ripple-lib) - a JavaScript API for interacting with [Ripple](https://ripple.com) in Node.js and the browser -- [restbase](https://github.com/wikimedia/restbase) - distributed storage with REST API & dispatcher for backend services built to provide a low-latency & high-throughput API for Wikipedia / Wikimedia content -- [hippie-swagger](https://github.com/CacheControl/hippie-swagger) - [Hippie](https://github.com/vesln/hippie) wrapper that provides end to end API testing with swagger validation -- [react-form-controlled](https://github.com/seeden/react-form-controlled) - React controlled form components with validation -- [rabbitmq-schema](https://github.com/tjmehta/rabbitmq-schema) - a schema definition module for RabbitMQ graphs and messages -- [@query/schema](https://www.npmjs.com/package/@query/schema) - stream filtering with a URI-safe query syntax parsing to JSON Schema -- [chai-ajv-json-schema](https://github.com/peon374/chai-ajv-json-schema) - chai plugin to us JSON Schema with expect in mocha tests -- [grunt-jsonschema-ajv](https://github.com/SignpostMarv/grunt-jsonschema-ajv) - Grunt plugin for validating files against JSON Schema -- [extract-text-webpack-plugin](https://github.com/webpack-contrib/extract-text-webpack-plugin) - extract text from bundle into a file -- [electron-builder](https://github.com/electron-userland/electron-builder) - a solution to package and build a ready for distribution Electron app -- [addons-linter](https://github.com/mozilla/addons-linter) - Mozilla Add-ons Linter -- [gh-pages-generator](https://github.com/epoberezkin/gh-pages-generator) - multi-page site generator converting markdown files to GitHub pages -- [ESLint](https://github.com/eslint/eslint) - the pluggable linting utility for JavaScript and JSX - - -## Tests - -``` -npm install -git submodule update --init -npm test -``` - -## Contributing - -All validation functions are generated using doT templates in [dot](https://github.com/epoberezkin/ajv/tree/master/lib/dot) folder. Templates are precompiled so doT is not a run-time dependency. - -`npm run build` - compiles templates to [dotjs](https://github.com/epoberezkin/ajv/tree/master/lib/dotjs) folder. - -`npm run watch` - automatically compiles templates when files in dot folder change - -Please see [Contributing guidelines](https://github.com/epoberezkin/ajv/blob/master/CONTRIBUTING.md) - - -## Changes history - -See https://github.com/epoberezkin/ajv/releases - -__Please note__: [Changes in version 6.0.0](https://github.com/epoberezkin/ajv/releases/tag/v6.0.0). - -[Version 5.0.0](https://github.com/epoberezkin/ajv/releases/tag/5.0.0). - -[Version 4.0.0](https://github.com/epoberezkin/ajv/releases/tag/4.0.0). - -[Version 3.0.0](https://github.com/epoberezkin/ajv/releases/tag/3.0.0). - -[Version 2.0.0](https://github.com/epoberezkin/ajv/releases/tag/2.0.0). - - -## Open-source software support - -Ajv is a part of [Tidelift subscription](https://tidelift.com/subscription/pkg/npm-ajv?utm_source=npm-ajv&utm_medium=referral&utm_campaign=readme) - it provides a centralised support to open-source software users, in addition to the support provided by software maintainers. - - -## License - -[MIT](https://github.com/epoberezkin/ajv/blob/master/LICENSE) diff --git a/node_modules/ajv/dist/ajv.bundle.js b/node_modules/ajv/dist/ajv.bundle.js deleted file mode 100644 index dd95630..0000000 --- a/node_modules/ajv/dist/ajv.bundle.js +++ /dev/null @@ -1,7165 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Ajv = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i; -// For the source: https://gist.github.com/dperini/729294 -// For test cases: https://mathiasbynens.be/demo/url-regex -// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983. -// var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu; -var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i; -var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i; -var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$/; -var JSON_POINTER_URI_FRAGMENT = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i; -var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/; - - -module.exports = formats; - -function formats(mode) { - mode = mode == 'full' ? 'full' : 'fast'; - return util.copy(formats[mode]); -} - - -formats.fast = { - // date: http://tools.ietf.org/html/rfc3339#section-5.6 - date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/, - // date-time: http://tools.ietf.org/html/rfc3339#section-5.6 - time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, - 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, - // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js - uri: /^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i, - 'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, - 'uri-template': URITEMPLATE, - url: URL, - // email (sources from jsen validator): - // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363 - // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation') - email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i, - hostname: HOSTNAME, - // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html - ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, - // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses - ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, - regex: regex, - // uuid: http://tools.ietf.org/html/rfc4122 - uuid: UUID, - // JSON-pointer: https://tools.ietf.org/html/rfc6901 - // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A - 'json-pointer': JSON_POINTER, - 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT, - // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00 - 'relative-json-pointer': RELATIVE_JSON_POINTER -}; - - -formats.full = { - date: date, - time: time, - 'date-time': date_time, - uri: uri, - 'uri-reference': URIREF, - 'uri-template': URITEMPLATE, - url: URL, - email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, - hostname: HOSTNAME, - ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, - ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, - regex: regex, - uuid: UUID, - 'json-pointer': JSON_POINTER, - 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT, - 'relative-json-pointer': RELATIVE_JSON_POINTER -}; - - -function isLeapYear(year) { - // https://tools.ietf.org/html/rfc3339#appendix-C - return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); -} - - -function date(str) { - // full-date from http://tools.ietf.org/html/rfc3339#section-5.6 - var matches = str.match(DATE); - if (!matches) return false; - - var year = +matches[1]; - var month = +matches[2]; - var day = +matches[3]; - - return month >= 1 && month <= 12 && day >= 1 && - day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]); -} - - -function time(str, full) { - var matches = str.match(TIME); - if (!matches) return false; - - var hour = matches[1]; - var minute = matches[2]; - var second = matches[3]; - var timeZone = matches[5]; - return ((hour <= 23 && minute <= 59 && second <= 59) || - (hour == 23 && minute == 59 && second == 60)) && - (!full || timeZone); -} - - -var DATE_TIME_SEPARATOR = /t|\s/i; -function date_time(str) { - // http://tools.ietf.org/html/rfc3339#section-5.6 - var dateTime = str.split(DATE_TIME_SEPARATOR); - return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true); -} - - -var NOT_URI_FRAGMENT = /\/|:/; -function uri(str) { - // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "." - return NOT_URI_FRAGMENT.test(str) && URI.test(str); -} - - -var Z_ANCHOR = /[^\\]\\Z/; -function regex(str) { - if (Z_ANCHOR.test(str)) return false; - try { - new RegExp(str); - return true; - } catch(e) { - return false; - } -} - -},{"./util":10}],5:[function(require,module,exports){ -'use strict'; - -var resolve = require('./resolve') - , util = require('./util') - , errorClasses = require('./error_classes') - , stableStringify = require('fast-json-stable-stringify'); - -var validateGenerator = require('../dotjs/validate'); - -/** - * Functions below are used inside compiled validations function - */ - -var ucs2length = util.ucs2length; -var equal = require('fast-deep-equal'); - -// this error is thrown by async schemas to return validation errors via exception -var ValidationError = errorClasses.Validation; - -module.exports = compile; - - -/** - * Compiles schema to validation function - * @this Ajv - * @param {Object} schema schema object - * @param {Object} root object with information about the root schema for this schema - * @param {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution - * @param {String} baseId base ID for IDs in the schema - * @return {Function} validation function - */ -function compile(schema, root, localRefs, baseId) { - /* jshint validthis: true, evil: true */ - /* eslint no-shadow: 0 */ - var self = this - , opts = this._opts - , refVal = [ undefined ] - , refs = {} - , patterns = [] - , patternsHash = {} - , defaults = [] - , defaultsHash = {} - , customRules = []; - - root = root || { schema: schema, refVal: refVal, refs: refs }; - - var c = checkCompiling.call(this, schema, root, baseId); - var compilation = this._compilations[c.index]; - if (c.compiling) return (compilation.callValidate = callValidate); - - var formats = this._formats; - var RULES = this.RULES; - - try { - var v = localCompile(schema, root, localRefs, baseId); - compilation.validate = v; - var cv = compilation.callValidate; - if (cv) { - cv.schema = v.schema; - cv.errors = null; - cv.refs = v.refs; - cv.refVal = v.refVal; - cv.root = v.root; - cv.$async = v.$async; - if (opts.sourceCode) cv.source = v.source; - } - return v; - } finally { - endCompiling.call(this, schema, root, baseId); - } - - /* @this {*} - custom context, see passContext option */ - function callValidate() { - /* jshint validthis: true */ - var validate = compilation.validate; - var result = validate.apply(this, arguments); - callValidate.errors = validate.errors; - return result; - } - - function localCompile(_schema, _root, localRefs, baseId) { - var isRoot = !_root || (_root && _root.schema == _schema); - if (_root.schema != root.schema) - return compile.call(self, _schema, _root, localRefs, baseId); - - var $async = _schema.$async === true; - - var sourceCode = validateGenerator({ - isTop: true, - schema: _schema, - isRoot: isRoot, - baseId: baseId, - root: _root, - schemaPath: '', - errSchemaPath: '#', - errorPath: '""', - MissingRefError: errorClasses.MissingRef, - RULES: RULES, - validate: validateGenerator, - util: util, - resolve: resolve, - resolveRef: resolveRef, - usePattern: usePattern, - useDefault: useDefault, - useCustomRule: useCustomRule, - opts: opts, - formats: formats, - logger: self.logger, - self: self - }); - - sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode) - + vars(defaults, defaultCode) + vars(customRules, customRuleCode) - + sourceCode; - - if (opts.processCode) sourceCode = opts.processCode(sourceCode); - // console.log('\n\n\n *** \n', JSON.stringify(sourceCode)); - var validate; - try { - var makeValidate = new Function( - 'self', - 'RULES', - 'formats', - 'root', - 'refVal', - 'defaults', - 'customRules', - 'equal', - 'ucs2length', - 'ValidationError', - sourceCode - ); - - validate = makeValidate( - self, - RULES, - formats, - root, - refVal, - defaults, - customRules, - equal, - ucs2length, - ValidationError - ); - - refVal[0] = validate; - } catch(e) { - self.logger.error('Error compiling schema, function code:', sourceCode); - throw e; - } - - validate.schema = _schema; - validate.errors = null; - validate.refs = refs; - validate.refVal = refVal; - validate.root = isRoot ? validate : _root; - if ($async) validate.$async = true; - if (opts.sourceCode === true) { - validate.source = { - code: sourceCode, - patterns: patterns, - defaults: defaults - }; - } - - return validate; - } - - function resolveRef(baseId, ref, isRoot) { - ref = resolve.url(baseId, ref); - var refIndex = refs[ref]; - var _refVal, refCode; - if (refIndex !== undefined) { - _refVal = refVal[refIndex]; - refCode = 'refVal[' + refIndex + ']'; - return resolvedRef(_refVal, refCode); - } - if (!isRoot && root.refs) { - var rootRefId = root.refs[ref]; - if (rootRefId !== undefined) { - _refVal = root.refVal[rootRefId]; - refCode = addLocalRef(ref, _refVal); - return resolvedRef(_refVal, refCode); - } - } - - refCode = addLocalRef(ref); - var v = resolve.call(self, localCompile, root, ref); - if (v === undefined) { - var localSchema = localRefs && localRefs[ref]; - if (localSchema) { - v = resolve.inlineRef(localSchema, opts.inlineRefs) - ? localSchema - : compile.call(self, localSchema, root, localRefs, baseId); - } - } - - if (v === undefined) { - removeLocalRef(ref); - } else { - replaceLocalRef(ref, v); - return resolvedRef(v, refCode); - } - } - - function addLocalRef(ref, v) { - var refId = refVal.length; - refVal[refId] = v; - refs[ref] = refId; - return 'refVal' + refId; - } - - function removeLocalRef(ref) { - delete refs[ref]; - } - - function replaceLocalRef(ref, v) { - var refId = refs[ref]; - refVal[refId] = v; - } - - function resolvedRef(refVal, code) { - return typeof refVal == 'object' || typeof refVal == 'boolean' - ? { code: code, schema: refVal, inline: true } - : { code: code, $async: refVal && !!refVal.$async }; - } - - function usePattern(regexStr) { - var index = patternsHash[regexStr]; - if (index === undefined) { - index = patternsHash[regexStr] = patterns.length; - patterns[index] = regexStr; - } - return 'pattern' + index; - } - - function useDefault(value) { - switch (typeof value) { - case 'boolean': - case 'number': - return '' + value; - case 'string': - return util.toQuotedString(value); - case 'object': - if (value === null) return 'null'; - var valueStr = stableStringify(value); - var index = defaultsHash[valueStr]; - if (index === undefined) { - index = defaultsHash[valueStr] = defaults.length; - defaults[index] = value; - } - return 'default' + index; - } - } - - function useCustomRule(rule, schema, parentSchema, it) { - if (self._opts.validateSchema !== false) { - var deps = rule.definition.dependencies; - if (deps && !deps.every(function(keyword) { - return Object.prototype.hasOwnProperty.call(parentSchema, keyword); - })) - throw new Error('parent schema must have all required keywords: ' + deps.join(',')); - - var validateSchema = rule.definition.validateSchema; - if (validateSchema) { - var valid = validateSchema(schema); - if (!valid) { - var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors); - if (self._opts.validateSchema == 'log') self.logger.error(message); - else throw new Error(message); - } - } - } - - var compile = rule.definition.compile - , inline = rule.definition.inline - , macro = rule.definition.macro; - - var validate; - if (compile) { - validate = compile.call(self, schema, parentSchema, it); - } else if (macro) { - validate = macro.call(self, schema, parentSchema, it); - if (opts.validateSchema !== false) self.validateSchema(validate, true); - } else if (inline) { - validate = inline.call(self, it, rule.keyword, schema, parentSchema); - } else { - validate = rule.definition.validate; - if (!validate) return; - } - - if (validate === undefined) - throw new Error('custom keyword "' + rule.keyword + '"failed to compile'); - - var index = customRules.length; - customRules[index] = validate; - - return { - code: 'customRule' + index, - validate: validate - }; - } -} - - -/** - * Checks if the schema is currently compiled - * @this Ajv - * @param {Object} schema schema to compile - * @param {Object} root root object - * @param {String} baseId base schema ID - * @return {Object} object with properties "index" (compilation index) and "compiling" (boolean) - */ -function checkCompiling(schema, root, baseId) { - /* jshint validthis: true */ - var index = compIndex.call(this, schema, root, baseId); - if (index >= 0) return { index: index, compiling: true }; - index = this._compilations.length; - this._compilations[index] = { - schema: schema, - root: root, - baseId: baseId - }; - return { index: index, compiling: false }; -} - - -/** - * Removes the schema from the currently compiled list - * @this Ajv - * @param {Object} schema schema to compile - * @param {Object} root root object - * @param {String} baseId base schema ID - */ -function endCompiling(schema, root, baseId) { - /* jshint validthis: true */ - var i = compIndex.call(this, schema, root, baseId); - if (i >= 0) this._compilations.splice(i, 1); -} - - -/** - * Index of schema compilation in the currently compiled list - * @this Ajv - * @param {Object} schema schema to compile - * @param {Object} root root object - * @param {String} baseId base schema ID - * @return {Integer} compilation index - */ -function compIndex(schema, root, baseId) { - /* jshint validthis: true */ - for (var i=0; i= 0xD800 && value <= 0xDBFF && pos < len) { - // high surrogate, and there is a next character - value = str.charCodeAt(pos); - if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate - } - } - return length; -}; - -},{}],10:[function(require,module,exports){ -'use strict'; - - -module.exports = { - copy: copy, - checkDataType: checkDataType, - checkDataTypes: checkDataTypes, - coerceToTypes: coerceToTypes, - toHash: toHash, - getProperty: getProperty, - escapeQuotes: escapeQuotes, - equal: require('fast-deep-equal'), - ucs2length: require('./ucs2length'), - varOccurences: varOccurences, - varReplace: varReplace, - cleanUpCode: cleanUpCode, - finalCleanUpCode: finalCleanUpCode, - schemaHasRules: schemaHasRules, - schemaHasRulesExcept: schemaHasRulesExcept, - schemaUnknownRules: schemaUnknownRules, - toQuotedString: toQuotedString, - getPathExpr: getPathExpr, - getPath: getPath, - getData: getData, - unescapeFragment: unescapeFragment, - unescapeJsonPointer: unescapeJsonPointer, - escapeFragment: escapeFragment, - escapeJsonPointer: escapeJsonPointer -}; - - -function copy(o, to) { - to = to || {}; - for (var key in o) to[key] = o[key]; - return to; -} - - -function checkDataType(dataType, data, negate) { - var EQUAL = negate ? ' !== ' : ' === ' - , AND = negate ? ' || ' : ' && ' - , OK = negate ? '!' : '' - , NOT = negate ? '' : '!'; - switch (dataType) { - case 'null': return data + EQUAL + 'null'; - case 'array': return OK + 'Array.isArray(' + data + ')'; - case 'object': return '(' + OK + data + AND + - 'typeof ' + data + EQUAL + '"object"' + AND + - NOT + 'Array.isArray(' + data + '))'; - case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND + - NOT + '(' + data + ' % 1)' + - AND + data + EQUAL + data + ')'; - default: return 'typeof ' + data + EQUAL + '"' + dataType + '"'; - } -} - - -function checkDataTypes(dataTypes, data) { - switch (dataTypes.length) { - case 1: return checkDataType(dataTypes[0], data, true); - default: - var code = ''; - var types = toHash(dataTypes); - if (types.array && types.object) { - code = types.null ? '(': '(!' + data + ' || '; - code += 'typeof ' + data + ' !== "object")'; - delete types.null; - delete types.array; - delete types.object; - } - if (types.number) delete types.integer; - for (var t in types) - code += (code ? ' && ' : '' ) + checkDataType(t, data, true); - - return code; - } -} - - -var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]); -function coerceToTypes(optionCoerceTypes, dataTypes) { - if (Array.isArray(dataTypes)) { - var types = []; - for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); - return paths[lvl - up]; - } - - if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); - data = 'data' + ((lvl - up) || ''); - if (!jsonPointer) return data; - } - - var expr = data; - var segments = jsonPointer.split('/'); - for (var i=0; i', - $notOp = $isMax ? '>' : '<', - $errorKeyword = undefined; - if ($isDataExcl) { - var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), - $exclusive = 'exclusive' + $lvl, - $exclType = 'exclType' + $lvl, - $exclIsNumber = 'exclIsNumber' + $lvl, - $opExpr = 'op' + $lvl, - $opStr = '\' + ' + $opExpr + ' + \''; - out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; - $schemaValueExcl = 'schemaExcl' + $lvl; - out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \'boolean\' && ' + ($exclType) + ' != \'undefined\' && ' + ($exclType) + ' != \'number\') { '; - var $errorKeyword = $exclusiveKeyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($exclType) + ' == \'number\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\'; '; - if ($schema === undefined) { - $errorKeyword = $exclusiveKeyword; - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; - $schemaValue = $schemaValueExcl; - $isData = $isDataExcl; - } - } else { - var $exclIsNumber = typeof $schemaExcl == 'number', - $opStr = $op; - if ($exclIsNumber && $isData) { - var $opExpr = '\'' + $opStr + '\''; - out += ' if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { '; - } else { - if ($exclIsNumber && $schema === undefined) { - $exclusive = true; - $errorKeyword = $exclusiveKeyword; - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; - $schemaValue = $schemaExcl; - $notOp += '='; - } else { - if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema); - if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) { - $exclusive = true; - $errorKeyword = $exclusiveKeyword; - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; - $notOp += '='; - } else { - $exclusive = false; - $opStr += '='; - } - } - var $opExpr = '\'' + $opStr + '\''; - out += ' if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { '; - } - } - $errorKeyword = $errorKeyword || $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be ' + ($opStr) + ' '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schemaValue) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - -},{}],14:[function(require,module,exports){ -'use strict'; -module.exports = function generate__limitItems(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $op = $keyword == 'maxItems' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxItems') { - out += 'more'; - } else { - out += 'fewer'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' items\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - -},{}],15:[function(require,module,exports){ -'use strict'; -module.exports = function generate__limitLength(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $op = $keyword == 'maxLength' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - if (it.opts.unicode === false) { - out += ' ' + ($data) + '.length '; - } else { - out += ' ucs2length(' + ($data) + ') '; - } - out += ' ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be '; - if ($keyword == 'maxLength') { - out += 'longer'; - } else { - out += 'shorter'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' characters\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - -},{}],16:[function(require,module,exports){ -'use strict'; -module.exports = function generate__limitProperties(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $op = $keyword == 'maxProperties' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxProperties') { - out += 'more'; - } else { - out += 'fewer'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' properties\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - -},{}],17:[function(require,module,exports){ -'use strict'; -module.exports = function generate_allOf(it, $keyword, $ruleType) { - var out = ' '; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $currentBaseId = $it.baseId, - $allSchemasEmpty = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { - $allSchemasEmpty = false; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if ($breakOnError) { - if ($allSchemasEmpty) { - out += ' if (true) { '; - } else { - out += ' ' + ($closingBraces.slice(0, -1)) + ' '; - } - } - out = it.util.cleanUpCode(out); - return out; -} - -},{}],18:[function(require,module,exports){ -'use strict'; -module.exports = function generate_anyOf(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $noEmptySchema = $schema.every(function($sch) { - return (it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all)); - }); - if ($noEmptySchema) { - var $currentBaseId = $it.baseId; - out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { '; - $closingBraces += '}'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should match some schema in anyOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; return false; '; - } - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - out = it.util.cleanUpCode(out); - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; -} - -},{}],19:[function(require,module,exports){ -'use strict'; -module.exports = function generate_comment(it, $keyword, $ruleType) { - var out = ' '; - var $schema = it.schema[$keyword]; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $comment = it.util.toQuotedString($schema); - if (it.opts.$comment === true) { - out += ' console.log(' + ($comment) + ');'; - } else if (typeof it.opts.$comment == 'function') { - out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);'; - } - return out; -} - -},{}],20:[function(require,module,exports){ -'use strict'; -module.exports = function generate_const(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (!$isData) { - out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; - } - out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('const') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be equal to constant\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' }'; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - -},{}],21:[function(require,module,exports){ -'use strict'; -module.exports = function generate_contains(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $idx = 'i' + $lvl, - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $currentBaseId = it.baseId, - $nonEmptySchema = (it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all)); - out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; - if ($nonEmptySchema) { - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' if (' + ($nextValid) + ') break; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {'; - } else { - out += ' if (' + ($data) + '.length == 0) {'; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('contains') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should contain a valid item\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - if ($nonEmptySchema) { - out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - } - if (it.opts.allErrors) { - out += ' } '; - } - out = it.util.cleanUpCode(out); - return out; -} - -},{}],22:[function(require,module,exports){ -'use strict'; -module.exports = function generate_custom(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $rule = this, - $definition = 'definition' + $lvl, - $rDef = $rule.definition, - $closingBraces = ''; - var $compile, $inline, $macro, $ruleValidate, $validateCode; - if ($isData && $rDef.$data) { - $validateCode = 'keywordValidate' + $lvl; - var $validateSchema = $rDef.validateSchema; - out += ' var ' + ($definition) + ' = RULES.custom[\'' + ($keyword) + '\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;'; - } else { - $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it); - if (!$ruleValidate) return; - $schemaValue = 'validate.schema' + $schemaPath; - $validateCode = $ruleValidate.code; - $compile = $rDef.compile; - $inline = $rDef.inline; - $macro = $rDef.macro; - } - var $ruleErrs = $validateCode + '.errors', - $i = 'i' + $lvl, - $ruleErr = 'ruleErr' + $lvl, - $asyncKeyword = $rDef.async; - if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema'); - if (!($inline || $macro)) { - out += '' + ($ruleErrs) + ' = null;'; - } - out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; - if ($isData && $rDef.$data) { - $closingBraces += '}'; - out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { '; - if ($validateSchema) { - $closingBraces += '}'; - out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { '; - } - } - if ($inline) { - if ($rDef.statements) { - out += ' ' + ($ruleValidate.validate) + ' '; - } else { - out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; '; - } - } else if ($macro) { - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - $it.schema = $ruleValidate.validate; - $it.schemaPath = ''; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var $code = it.validate($it).replace(/validate\.schema/g, $validateCode); - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($code); - } else { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - out += ' ' + ($validateCode) + '.call( '; - if (it.opts.passContext) { - out += 'this'; - } else { - out += 'self'; - } - if ($compile || $rDef.schema === false) { - out += ' , ' + ($data) + ' '; - } else { - out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' '; - } - out += ' , (dataPath || \'\')'; - if (it.errorPath != '""') { - out += ' + ' + (it.errorPath); - } - var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', - $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; - out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData ) '; - var def_callRuleValidate = out; - out = $$outStack.pop(); - if ($rDef.errors === false) { - out += ' ' + ($valid) + ' = '; - if ($asyncKeyword) { - out += 'await '; - } - out += '' + (def_callRuleValidate) + '; '; - } else { - if ($asyncKeyword) { - $ruleErrs = 'customErrors' + $lvl; - out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } '; - } else { - out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; '; - } - } - } - if ($rDef.modifying) { - out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];'; - } - out += '' + ($closingBraces); - if ($rDef.valid) { - if ($breakOnError) { - out += ' if (true) { '; - } - } else { - out += ' if ( '; - if ($rDef.valid === undefined) { - out += ' !'; - if ($macro) { - out += '' + ($nextValid); - } else { - out += '' + ($valid); - } - } else { - out += ' ' + (!$rDef.valid) + ' '; - } - out += ') { '; - $errorKeyword = $rule.keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \'' + ($rule.keyword) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - var def_customError = out; - out = $$outStack.pop(); - if ($inline) { - if ($rDef.errors) { - if ($rDef.errors != 'full') { - out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + ' 0 : it.util.schemaHasRules($sch, it.RULES.all))) { - out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') '; - } - out += ') { '; - $it.schema = $sch; - $it.schemaPath = $schemaPath + it.util.getProperty($property); - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property); - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; -} - -},{}],24:[function(require,module,exports){ -'use strict'; -module.exports = function generate_enum(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $i = 'i' + $lvl, - $vSchema = 'schema' + $lvl; - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';'; - } - out += 'var ' + ($valid) + ';'; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }'; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('enum') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be equal to one of the allowed values\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' }'; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - -},{}],25:[function(require,module,exports){ -'use strict'; -module.exports = function generate_format(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - if (it.opts.format === false) { - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $unknownFormats = it.opts.unknownFormats, - $allowUnknown = Array.isArray($unknownFormats); - if ($isData) { - var $format = 'format' + $lvl, - $isObject = 'isObject' + $lvl, - $formatType = 'formatType' + $lvl; - out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \'object\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \'string\'; if (' + ($isObject) + ') { '; - if (it.async) { - out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; '; - } - out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; - } - out += ' ('; - if ($unknownFormats != 'ignore') { - out += ' (' + ($schemaValue) + ' && !' + ($format) + ' '; - if ($allowUnknown) { - out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 '; - } - out += ') || '; - } - out += ' (' + ($format) + ' && ' + ($formatType) + ' == \'' + ($ruleType) + '\' && !(typeof ' + ($format) + ' == \'function\' ? '; - if (it.async) { - out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) '; - } else { - out += ' ' + ($format) + '(' + ($data) + ') '; - } - out += ' : ' + ($format) + '.test(' + ($data) + '))))) {'; - } else { - var $format = it.formats[$schema]; - if (!$format) { - if ($unknownFormats == 'ignore') { - it.logger.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"'); - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) { - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } else { - throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"'); - } - } - var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate; - var $formatType = $isObject && $format.type || 'string'; - if ($isObject) { - var $async = $format.async === true; - $format = $format.validate; - } - if ($formatType != $ruleType) { - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } - if ($async) { - if (!it.async) throw new Error('async format in sync schema'); - var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate'; - out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { '; - } else { - out += ' if (! '; - var $formatRef = 'formats' + it.util.getProperty($schema); - if ($isObject) $formatRef += '.validate'; - if (typeof $format == 'function') { - out += ' ' + ($formatRef) + '(' + ($data) + ') '; - } else { - out += ' ' + ($formatRef) + '.test(' + ($data) + ') '; - } - out += ') { '; - } - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('format') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match format "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - -},{}],26:[function(require,module,exports){ -'use strict'; -module.exports = function generate_if(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - $it.level++; - var $nextValid = 'valid' + $it.level; - var $thenSch = it.schema['then'], - $elseSch = it.schema['else'], - $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? typeof $thenSch == 'object' && Object.keys($thenSch).length > 0 : it.util.schemaHasRules($thenSch, it.RULES.all)), - $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? typeof $elseSch == 'object' && Object.keys($elseSch).length > 0 : it.util.schemaHasRules($elseSch, it.RULES.all)), - $currentBaseId = $it.baseId; - if ($thenPresent || $elsePresent) { - var $ifClause; - $it.createErrors = false; - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - $it.createErrors = true; - out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - if ($thenPresent) { - out += ' if (' + ($nextValid) + ') { '; - $it.schema = it.schema['then']; - $it.schemaPath = it.schemaPath + '.then'; - $it.errSchemaPath = it.errSchemaPath + '/then'; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' ' + ($valid) + ' = ' + ($nextValid) + '; '; - if ($thenPresent && $elsePresent) { - $ifClause = 'ifClause' + $lvl; - out += ' var ' + ($ifClause) + ' = \'then\'; '; - } else { - $ifClause = '\'then\''; - } - out += ' } '; - if ($elsePresent) { - out += ' else { '; - } - } else { - out += ' if (!' + ($nextValid) + ') { '; - } - if ($elsePresent) { - $it.schema = it.schema['else']; - $it.schemaPath = it.schemaPath + '.else'; - $it.errSchemaPath = it.errSchemaPath + '/else'; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' ' + ($valid) + ' = ' + ($nextValid) + '; '; - if ($thenPresent && $elsePresent) { - $ifClause = 'ifClause' + $lvl; - out += ' var ' + ($ifClause) + ' = \'else\'; '; - } else { - $ifClause = '\'else\''; - } - out += ' } '; - } - out += ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('if') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match "\' + ' + ($ifClause) + ' + \'" schema\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; return false; '; - } - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - out = it.util.cleanUpCode(out); - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; -} - -},{}],27:[function(require,module,exports){ -'use strict'; - -//all requires must be explicit because browserify won't work with dynamic requires -module.exports = { - '$ref': require('./ref'), - allOf: require('./allOf'), - anyOf: require('./anyOf'), - '$comment': require('./comment'), - const: require('./const'), - contains: require('./contains'), - dependencies: require('./dependencies'), - 'enum': require('./enum'), - format: require('./format'), - 'if': require('./if'), - items: require('./items'), - maximum: require('./_limit'), - minimum: require('./_limit'), - maxItems: require('./_limitItems'), - minItems: require('./_limitItems'), - maxLength: require('./_limitLength'), - minLength: require('./_limitLength'), - maxProperties: require('./_limitProperties'), - minProperties: require('./_limitProperties'), - multipleOf: require('./multipleOf'), - not: require('./not'), - oneOf: require('./oneOf'), - pattern: require('./pattern'), - properties: require('./properties'), - propertyNames: require('./propertyNames'), - required: require('./required'), - uniqueItems: require('./uniqueItems'), - validate: require('./validate') -}; - -},{"./_limit":13,"./_limitItems":14,"./_limitLength":15,"./_limitProperties":16,"./allOf":17,"./anyOf":18,"./comment":19,"./const":20,"./contains":21,"./dependencies":23,"./enum":24,"./format":25,"./if":26,"./items":28,"./multipleOf":29,"./not":30,"./oneOf":31,"./pattern":32,"./properties":33,"./propertyNames":34,"./ref":35,"./required":36,"./uniqueItems":37,"./validate":38}],28:[function(require,module,exports){ -'use strict'; -module.exports = function generate_items(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $idx = 'i' + $lvl, - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $currentBaseId = it.baseId; - out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; - if (Array.isArray($schema)) { - var $additionalItems = it.schema.additionalItems; - if ($additionalItems === false) { - out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; '; - var $currErrSchemaPath = $errSchemaPath; - $errSchemaPath = it.errSchemaPath + '/additionalItems'; - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('additionalItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have more than ' + ($schema.length) + ' items\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - } - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { - out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { '; - var $passData = $data + '[' + $i + ']'; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); - $it.dataPathArr[$dataNxt] = $i; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0 : it.util.schemaHasRules($additionalItems, it.RULES.all))) { - $it.schema = $additionalItems; - $it.schemaPath = it.schemaPath + '.additionalItems'; - $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; - out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' } } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } else if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' }'; - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; -} - -},{}],29:[function(require,module,exports){ -'use strict'; -module.exports = function generate_multipleOf(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - out += 'var division' + ($lvl) + ';if ('; - if ($isData) { - out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; - } - out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', '; - if (it.opts.multipleOfPrecision) { - out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' '; - } else { - out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') '; - } - out += ' ) '; - if ($isData) { - out += ' ) '; - } - out += ' ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be multiple of '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schemaValue) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - -},{}],30:[function(require,module,exports){ -'use strict'; -module.exports = function generate_not(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - $it.level++; - var $nextValid = 'valid' + $it.level; - if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.createErrors = false; - var $allErrorsOption; - if ($it.opts.allErrors) { - $allErrorsOption = $it.opts.allErrors; - $it.opts.allErrors = false; - } - out += ' ' + (it.validate($it)) + ' '; - $it.createErrors = true; - if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' if (' + ($nextValid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - } else { - out += ' var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if ($breakOnError) { - out += ' if (false) { '; - } - } - return out; -} - -},{}],31:[function(require,module,exports){ -'use strict'; -module.exports = function generate_oneOf(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $currentBaseId = $it.baseId, - $prevValid = 'prevValid' + $lvl, - $passingSchemas = 'passingSchemas' + $lvl; - out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - } else { - out += ' var ' + ($nextValid) + ' = true; '; - } - if ($i) { - out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { '; - $closingBraces += '}'; - } - out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match exactly one schema in oneOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; return false; '; - } - } - out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }'; - if (it.opts.allErrors) { - out += ' } '; - } - return out; -} - -},{}],32:[function(require,module,exports){ -'use strict'; -module.exports = function generate_pattern(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema); - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; - } - out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match pattern "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - -},{}],33:[function(require,module,exports){ -'use strict'; -module.exports = function generate_properties(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $key = 'key' + $lvl, - $idx = 'idx' + $lvl, - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $dataProperties = 'dataProperties' + $lvl; - var $schemaKeys = Object.keys($schema || {}), - $pProperties = it.schema.patternProperties || {}, - $pPropertyKeys = Object.keys($pProperties), - $aProperties = it.schema.additionalProperties, - $someProperties = $schemaKeys.length || $pPropertyKeys.length, - $noAdditional = $aProperties === false, - $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length, - $removeAdditional = it.opts.removeAdditional, - $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional, - $ownProperties = it.opts.ownProperties, - $currentBaseId = it.baseId; - var $required = it.schema.required; - if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required); - out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;'; - if ($ownProperties) { - out += ' var ' + ($dataProperties) + ' = undefined;'; - } - if ($checkAdditional) { - if ($ownProperties) { - out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; - } else { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - } - if ($someProperties) { - out += ' var isAdditional' + ($lvl) + ' = !(false '; - if ($schemaKeys.length) { - if ($schemaKeys.length > 8) { - out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') '; - } else { - var arr1 = $schemaKeys; - if (arr1) { - var $propertyKey, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $propertyKey = arr1[i1 += 1]; - out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' '; - } - } - } - } - if ($pPropertyKeys.length) { - var arr2 = $pPropertyKeys; - if (arr2) { - var $pProperty, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - $pProperty = arr2[$i += 1]; - out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') '; - } - } - } - out += ' ); if (isAdditional' + ($lvl) + ') { '; - } - if ($removeAdditional == 'all') { - out += ' delete ' + ($data) + '[' + ($key) + ']; '; - } else { - var $currentErrorPath = it.errorPath; - var $additionalProperty = '\' + ' + $key + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - } - if ($noAdditional) { - if ($removeAdditional) { - out += ' delete ' + ($data) + '[' + ($key) + ']; '; - } else { - out += ' ' + ($nextValid) + ' = false; '; - var $currErrSchemaPath = $errSchemaPath; - $errSchemaPath = it.errSchemaPath + '/additionalProperties'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \'' + ($additionalProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is an invalid additional property'; - } else { - out += 'should NOT have additional properties'; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - out += ' break; '; - } - } - } else if ($additionalIsSchema) { - if ($removeAdditional == 'failing') { - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - } else { - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - } - } - it.errorPath = $currentErrorPath; - } - if ($someProperties) { - out += ' } '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - var $useDefaults = it.opts.useDefaults && !it.compositeRule; - if ($schemaKeys.length) { - var arr3 = $schemaKeys; - if (arr3) { - var $propertyKey, i3 = -1, - l3 = arr3.length - 1; - while (i3 < l3) { - $propertyKey = arr3[i3 += 1]; - var $sch = $schema[$propertyKey]; - if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { - var $prop = it.util.getProperty($propertyKey), - $passData = $data + $prop, - $hasDefault = $useDefaults && $sch.default !== undefined; - $it.schema = $sch; - $it.schemaPath = $schemaPath + $prop; - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); - $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); - $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - $code = it.util.varReplace($code, $nextData, $passData); - var $useData = $passData; - } else { - var $useData = $nextData; - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; '; - } - if ($hasDefault) { - out += ' ' + ($code) + ' '; - } else { - if ($requiredHash && $requiredHash[$propertyKey]) { - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { ' + ($nextValid) + ' = false; '; - var $currentErrorPath = it.errorPath, - $currErrSchemaPath = $errSchemaPath, - $missingProperty = it.util.escapeQuotes($propertyKey); - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - $errSchemaPath = it.errSchemaPath + '/required'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - it.errorPath = $currentErrorPath; - out += ' } else { '; - } else { - if ($breakOnError) { - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { ' + ($nextValid) + ' = true; } else { '; - } else { - out += ' if (' + ($useData) + ' !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ' ) { '; - } - } - out += ' ' + ($code) + ' } '; - } - } - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if ($pPropertyKeys.length) { - var arr4 = $pPropertyKeys; - if (arr4) { - var $pProperty, i4 = -1, - l4 = arr4.length - 1; - while (i4 < l4) { - $pProperty = arr4[i4 += 1]; - var $sch = $pProperties[$pProperty]; - if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { - $it.schema = $sch; - $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); - $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); - if ($ownProperties) { - out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; - } else { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - } - out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else ' + ($nextValid) + ' = true; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; -} - -},{}],34:[function(require,module,exports){ -'use strict'; -module.exports = function generate_propertyNames(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - out += 'var ' + ($errs) + ' = errors;'; - if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - var $key = 'key' + $lvl, - $idx = 'idx' + $lvl, - $i = 'i' + $lvl, - $invalidName = '\' + ' + $key + ' + \'', - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $dataProperties = 'dataProperties' + $lvl, - $ownProperties = it.opts.ownProperties, - $currentBaseId = it.baseId; - if ($ownProperties) { - out += ' var ' + ($dataProperties) + ' = undefined; '; - } - if ($ownProperties) { - out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; - } else { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - } - out += ' var startErrs' + ($lvl) + ' = errors; '; - var $passData = $key; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + ' 0 : it.util.schemaHasRules($propertySch, it.RULES.all)))) { - $required[$required.length] = $property; - } - } - } - } else { - var $required = $schema; - } - } - if ($isData || $required.length) { - var $currentErrorPath = it.errorPath, - $loopRequired = $isData || $required.length >= it.opts.loopRequired, - $ownProperties = it.opts.ownProperties; - if ($breakOnError) { - out += ' var missing' + ($lvl) + '; '; - if ($loopRequired) { - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - out += ' var ' + ($valid) + ' = true; '; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; - } - out += '; if (!' + ($valid) + ') break; } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } else { - out += ' if ( '; - var arr2 = $required; - if (arr2) { - var $propertyKey, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - $propertyKey = arr2[$i += 1]; - if ($i) { - out += ' || '; - } - var $prop = it.util.getProperty($propertyKey), - $useData = $data + $prop; - out += ' ( ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) '; - } - } - out += ') { '; - var $propertyPath = 'missing' + $lvl, - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } - } else { - if ($loopRequired) { - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - if ($isData) { - out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { '; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; - } - out += ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } '; - if ($isData) { - out += ' } '; - } - } else { - var arr3 = $required; - if (arr3) { - var $propertyKey, i3 = -1, - l3 = arr3.length - 1; - while (i3 < l3) { - $propertyKey = arr3[i3 += 1]; - var $prop = it.util.getProperty($propertyKey), - $missingProperty = it.util.escapeQuotes($propertyKey), - $useData = $data + $prop; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; - } - } - } - } - it.errorPath = $currentErrorPath; - } else if ($breakOnError) { - out += ' if (true) {'; - } - return out; -} - -},{}],37:[function(require,module,exports){ -'use strict'; -module.exports = function generate_uniqueItems(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (($schema || $isData) && it.opts.uniqueItems !== false) { - if ($isData) { - out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { '; - } - out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { '; - var $itemType = it.schema.items && it.schema.items.type, - $typeIsArray = Array.isArray($itemType); - if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) { - out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } '; - } else { - out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; '; - var $method = 'checkDataType' + ($typeIsArray ? 's' : ''); - out += ' if (' + (it.util[$method]($itemType, 'item', true)) + ') continue; '; - if ($typeIsArray) { - out += ' if (typeof item == \'string\') item = \'"\' + item; '; - } - out += ' if (typeof itemIndices[item] == \'number\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } '; - } - out += ' } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; -} - -},{}],38:[function(require,module,exports){ -'use strict'; -module.exports = function generate_validate(it, $keyword, $ruleType) { - var out = ''; - var $async = it.schema.$async === true, - $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'), - $id = it.self._getId(it.schema); - if (it.opts.strictKeywords) { - var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords); - if ($unknownKwd) { - var $keywordsMsg = 'unknown keyword: ' + $unknownKwd; - if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg); - else throw new Error($keywordsMsg); - } - } - if (it.isTop) { - out += ' var validate = '; - if ($async) { - it.async = true; - out += 'async '; - } - out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \'use strict\'; '; - if ($id && (it.opts.sourceCode || it.opts.processCode)) { - out += ' ' + ('/\*# sourceURL=' + $id + ' */') + ' '; - } - } - if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) { - var $keyword = 'false schema'; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - if (it.schema === false) { - if (it.isTop) { - $breakOnError = true; - } else { - out += ' var ' + ($valid) + ' = false; '; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'false schema') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'boolean schema is false\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } else { - if (it.isTop) { - if ($async) { - out += ' return data; '; - } else { - out += ' validate.errors = null; return true; '; - } - } else { - out += ' var ' + ($valid) + ' = true; '; - } - } - if (it.isTop) { - out += ' }; return validate; '; - } - return out; - } - if (it.isTop) { - var $top = it.isTop, - $lvl = it.level = 0, - $dataLvl = it.dataLevel = 0, - $data = 'data'; - it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema)); - it.baseId = it.baseId || it.rootId; - delete it.isTop; - it.dataPathArr = [undefined]; - if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) { - var $defaultMsg = 'default is ignored in the schema root'; - if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); - else throw new Error($defaultMsg); - } - out += ' var vErrors = null; '; - out += ' var errors = 0; '; - out += ' if (rootData === undefined) rootData = data; '; - } else { - var $lvl = it.level, - $dataLvl = it.dataLevel, - $data = 'data' + ($dataLvl || ''); - if ($id) it.baseId = it.resolve.url(it.baseId, $id); - if ($async && !it.async) throw new Error('async schema in sync schema'); - out += ' var errs_' + ($lvl) + ' = errors;'; - } - var $valid = 'valid' + $lvl, - $breakOnError = !it.opts.allErrors, - $closingBraces1 = '', - $closingBraces2 = ''; - var $errorKeyword; - var $typeSchema = it.schema.type, - $typeIsArray = Array.isArray($typeSchema); - if ($typeSchema && it.opts.nullable && it.schema.nullable === true) { - if ($typeIsArray) { - if ($typeSchema.indexOf('null') == -1) $typeSchema = $typeSchema.concat('null'); - } else if ($typeSchema != 'null') { - $typeSchema = [$typeSchema, 'null']; - $typeIsArray = true; - } - } - if ($typeIsArray && $typeSchema.length == 1) { - $typeSchema = $typeSchema[0]; - $typeIsArray = false; - } - if (it.schema.$ref && $refKeywords) { - if (it.opts.extendRefs == 'fail') { - throw new Error('$ref: validation keywords used in schema at path "' + it.errSchemaPath + '" (see option extendRefs)'); - } else if (it.opts.extendRefs !== true) { - $refKeywords = false; - it.logger.warn('$ref: keywords ignored in schema at path "' + it.errSchemaPath + '"'); - } - } - if (it.schema.$comment && it.opts.$comment) { - out += ' ' + (it.RULES.all.$comment.code(it, '$comment')); - } - if ($typeSchema) { - if (it.opts.coerceTypes) { - var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema); - } - var $rulesGroup = it.RULES.types[$typeSchema]; - if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) { - var $schemaPath = it.schemaPath + '.type', - $errSchemaPath = it.errSchemaPath + '/type'; - var $schemaPath = it.schemaPath + '.type', - $errSchemaPath = it.errSchemaPath + '/type', - $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType'; - out += ' if (' + (it.util[$method]($typeSchema, $data, true)) + ') { '; - if ($coerceToTypes) { - var $dataType = 'dataType' + $lvl, - $coerced = 'coerced' + $lvl; - out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; '; - if (it.opts.coerceTypes == 'array') { - out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ')) ' + ($dataType) + ' = \'array\'; '; - } - out += ' var ' + ($coerced) + ' = undefined; '; - var $bracesCoercion = ''; - var arr1 = $coerceToTypes; - if (arr1) { - var $type, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $type = arr1[$i += 1]; - if ($i) { - out += ' if (' + ($coerced) + ' === undefined) { '; - $bracesCoercion += '}'; - } - if (it.opts.coerceTypes == 'array' && $type != 'array') { - out += ' if (' + ($dataType) + ' == \'array\' && ' + ($data) + '.length == 1) { ' + ($coerced) + ' = ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; } '; - } - if ($type == 'string') { - out += ' if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; '; - } else if ($type == 'number' || $type == 'integer') { - out += ' if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' '; - if ($type == 'integer') { - out += ' && !(' + ($data) + ' % 1)'; - } - out += ')) ' + ($coerced) + ' = +' + ($data) + '; '; - } else if ($type == 'boolean') { - out += ' if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; '; - } else if ($type == 'null') { - out += ' if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; '; - } else if (it.opts.coerceTypes == 'array' && $type == 'array') { - out += ' if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; '; - } - } - } - out += ' ' + ($bracesCoercion) + ' if (' + ($coerced) + ' === undefined) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be '; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', - $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; - out += ' ' + ($data) + ' = ' + ($coerced) + '; '; - if (!$dataLvl) { - out += 'if (' + ($parentData) + ' !== undefined)'; - } - out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } '; - } else { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be '; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } - out += ' } '; - } - } - if (it.schema.$ref && !$refKeywords) { - out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' '; - if ($breakOnError) { - out += ' } if (errors === '; - if ($top) { - out += '0'; - } else { - out += 'errs_' + ($lvl); - } - out += ') { '; - $closingBraces2 += '}'; - } - } else { - var arr2 = it.RULES; - if (arr2) { - var $rulesGroup, i2 = -1, - l2 = arr2.length - 1; - while (i2 < l2) { - $rulesGroup = arr2[i2 += 1]; - if ($shouldUseGroup($rulesGroup)) { - if ($rulesGroup.type) { - out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { '; - } - if (it.opts.useDefaults) { - if ($rulesGroup.type == 'object' && it.schema.properties) { - var $schema = it.schema.properties, - $schemaKeys = Object.keys($schema); - var arr3 = $schemaKeys; - if (arr3) { - var $propertyKey, i3 = -1, - l3 = arr3.length - 1; - while (i3 < l3) { - $propertyKey = arr3[i3 += 1]; - var $sch = $schema[$propertyKey]; - if ($sch.default !== undefined) { - var $passData = $data + it.util.getProperty($propertyKey); - if (it.compositeRule) { - if (it.opts.strictDefaults) { - var $defaultMsg = 'default is ignored for: ' + $passData; - if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); - else throw new Error($defaultMsg); - } - } else { - out += ' if (' + ($passData) + ' === undefined '; - if (it.opts.useDefaults == 'empty') { - out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \'\' '; - } - out += ' ) ' + ($passData) + ' = '; - if (it.opts.useDefaults == 'shared') { - out += ' ' + (it.useDefault($sch.default)) + ' '; - } else { - out += ' ' + (JSON.stringify($sch.default)) + ' '; - } - out += '; '; - } - } - } - } - } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) { - var arr4 = it.schema.items; - if (arr4) { - var $sch, $i = -1, - l4 = arr4.length - 1; - while ($i < l4) { - $sch = arr4[$i += 1]; - if ($sch.default !== undefined) { - var $passData = $data + '[' + $i + ']'; - if (it.compositeRule) { - if (it.opts.strictDefaults) { - var $defaultMsg = 'default is ignored for: ' + $passData; - if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); - else throw new Error($defaultMsg); - } - } else { - out += ' if (' + ($passData) + ' === undefined '; - if (it.opts.useDefaults == 'empty') { - out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \'\' '; - } - out += ' ) ' + ($passData) + ' = '; - if (it.opts.useDefaults == 'shared') { - out += ' ' + (it.useDefault($sch.default)) + ' '; - } else { - out += ' ' + (JSON.stringify($sch.default)) + ' '; - } - out += '; '; - } - } - } - } - } - } - var arr5 = $rulesGroup.rules; - if (arr5) { - var $rule, i5 = -1, - l5 = arr5.length - 1; - while (i5 < l5) { - $rule = arr5[i5 += 1]; - if ($shouldUseRule($rule)) { - var $code = $rule.code(it, $rule.keyword, $rulesGroup.type); - if ($code) { - out += ' ' + ($code) + ' '; - if ($breakOnError) { - $closingBraces1 += '}'; - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces1) + ' '; - $closingBraces1 = ''; - } - if ($rulesGroup.type) { - out += ' } '; - if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) { - out += ' else { '; - var $schemaPath = it.schemaPath + '.type', - $errSchemaPath = it.errSchemaPath + '/type'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be '; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - } - } - if ($breakOnError) { - out += ' if (errors === '; - if ($top) { - out += '0'; - } else { - out += 'errs_' + ($lvl); - } - out += ') { '; - $closingBraces2 += '}'; - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces2) + ' '; - } - if ($top) { - if ($async) { - out += ' if (errors === 0) return data; '; - out += ' else throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; '; - out += ' return errors === 0; '; - } - out += ' }; return validate;'; - } else { - out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';'; - } - out = it.util.cleanUpCode(out); - if ($top) { - out = it.util.finalCleanUpCode(out, $async); - } - - function $shouldUseGroup($rulesGroup) { - var rules = $rulesGroup.rules; - for (var i = 0; i < rules.length; i++) - if ($shouldUseRule(rules[i])) return true; - } - - function $shouldUseRule($rule) { - return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule)); - } - - function $ruleImplementsSomeKeyword($rule) { - var impl = $rule.implements; - for (var i = 0; i < impl.length; i++) - if (it.schema[impl[i]] !== undefined) return true; - } - return out; -} - -},{}],39:[function(require,module,exports){ -'use strict'; - -var IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i; -var customRuleCode = require('./dotjs/custom'); -var definitionSchema = require('./definition_schema'); - -module.exports = { - add: addKeyword, - get: getKeyword, - remove: removeKeyword, - validate: validateKeyword -}; - - -/** - * Define custom keyword - * @this Ajv - * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords). - * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`. - * @return {Ajv} this for method chaining - */ -function addKeyword(keyword, definition) { - /* jshint validthis: true */ - /* eslint no-shadow: 0 */ - var RULES = this.RULES; - if (RULES.keywords[keyword]) - throw new Error('Keyword ' + keyword + ' is already defined'); - - if (!IDENTIFIER.test(keyword)) - throw new Error('Keyword ' + keyword + ' is not a valid identifier'); - - if (definition) { - this.validateKeyword(definition, true); - - var dataType = definition.type; - if (Array.isArray(dataType)) { - for (var i=0; i 1) { - sets[0] = sets[0].slice(0, -1); - var xl = sets.length - 1; - for (var x = 1; x < xl; ++x) { - sets[x] = sets[x].slice(1, -1); - } - sets[xl] = sets[xl].slice(1); - return sets.join(''); - } else { - return sets[0]; - } -} -function subexp(str) { - return "(?:" + str + ")"; -} -function typeOf(o) { - return o === undefined ? "undefined" : o === null ? "null" : Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase(); -} -function toUpperCase(str) { - return str.toUpperCase(); -} -function toArray(obj) { - return obj !== undefined && obj !== null ? obj instanceof Array ? obj : typeof obj.length !== "number" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj) : []; -} -function assign(target, source) { - var obj = target; - if (source) { - for (var key in source) { - obj[key] = source[key]; - } - } - return obj; -} - -function buildExps(isIRI) { - var ALPHA$$ = "[A-Za-z]", - CR$ = "[\\x0D]", - DIGIT$$ = "[0-9]", - DQUOTE$$ = "[\\x22]", - HEXDIG$$ = merge(DIGIT$$, "[A-Fa-f]"), - //case-insensitive - LF$$ = "[\\x0A]", - SP$$ = "[\\x20]", - PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)), - //expanded - GEN_DELIMS$$ = "[\\:\\/\\?\\#\\[\\]\\@]", - SUB_DELIMS$$ = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]", - RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$), - UCSCHAR$$ = isIRI ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]", - //subset, excludes bidi control characters - IPRIVATE$$ = isIRI ? "[\\uE000-\\uF8FF]" : "[]", - //subset - UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, "[\\-\\.\\_\\~]", UCSCHAR$$), - SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, "[\\+\\-\\.]") + "*"), - USERINFO$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]")) + "*"), - DEC_OCTET$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("[1-9]" + DIGIT$$) + "|" + DIGIT$$), - DEC_OCTET_RELAXED$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("0?[1-9]" + DIGIT$$) + "|0?0?" + DIGIT$$), - //relaxed parsing rules - IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$), - H16$ = subexp(HEXDIG$$ + "{1,4}"), - LS32$ = subexp(subexp(H16$ + "\\:" + H16$) + "|" + IPV4ADDRESS$), - IPV6ADDRESS1$ = subexp(subexp(H16$ + "\\:") + "{6}" + LS32$), - // 6( h16 ":" ) ls32 - IPV6ADDRESS2$ = subexp("\\:\\:" + subexp(H16$ + "\\:") + "{5}" + LS32$), - // "::" 5( h16 ":" ) ls32 - IPV6ADDRESS3$ = subexp(subexp(H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{4}" + LS32$), - //[ h16 ] "::" 4( h16 ":" ) ls32 - IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,1}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{3}" + LS32$), - //[ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 - IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,2}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{2}" + LS32$), - //[ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 - IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,3}" + H16$) + "?\\:\\:" + H16$ + "\\:" + LS32$), - //[ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 - IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,4}" + H16$) + "?\\:\\:" + LS32$), - //[ *4( h16 ":" ) h16 ] "::" ls32 - IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,5}" + H16$) + "?\\:\\:" + H16$), - //[ *5( h16 ":" ) h16 ] "::" h16 - IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,6}" + H16$) + "?\\:\\:"), - //[ *6( h16 ":" ) h16 ] "::" - IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join("|")), - ZONEID$ = subexp(subexp(UNRESERVED$$ + "|" + PCT_ENCODED$) + "+"), - //RFC 6874 - IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + "\\%25" + ZONEID$), - //RFC 6874 - IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + ZONEID$), - //RFC 6874, with relaxed parsing rules - IPVFUTURE$ = subexp("[vV]" + HEXDIG$$ + "+\\." + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]") + "+"), - IP_LITERAL$ = subexp("\\[" + subexp(IPV6ADDRZ_RELAXED$ + "|" + IPV6ADDRESS$ + "|" + IPVFUTURE$) + "\\]"), - //RFC 6874 - REG_NAME$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$)) + "*"), - HOST$ = subexp(IP_LITERAL$ + "|" + IPV4ADDRESS$ + "(?!" + REG_NAME$ + ")" + "|" + REG_NAME$), - PORT$ = subexp(DIGIT$$ + "*"), - AUTHORITY$ = subexp(subexp(USERINFO$ + "@") + "?" + HOST$ + subexp("\\:" + PORT$) + "?"), - PCHAR$ = subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@]")), - SEGMENT$ = subexp(PCHAR$ + "*"), - SEGMENT_NZ$ = subexp(PCHAR$ + "+"), - SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\@]")) + "+"), - PATH_ABEMPTY$ = subexp(subexp("\\/" + SEGMENT$) + "*"), - PATH_ABSOLUTE$ = subexp("\\/" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + "?"), - //simplified - PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), - //simplified - PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), - //simplified - PATH_EMPTY$ = "(?!" + PCHAR$ + ")", - PATH$ = subexp(PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), - QUERY$ = subexp(subexp(PCHAR$ + "|" + merge("[\\/\\?]", IPRIVATE$$)) + "*"), - FRAGMENT$ = subexp(subexp(PCHAR$ + "|[\\/\\?]") + "*"), - HIER_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), - URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), - RELATIVE_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$), - RELATIVE$ = subexp(RELATIVE_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), - URI_REFERENCE$ = subexp(URI$ + "|" + RELATIVE$), - ABSOLUTE_URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?"), - GENERIC_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", - RELATIVE_REF$ = "^(){0}" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", - ABSOLUTE_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?$", - SAMEDOC_REF$ = "^" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", - AUTHORITY_REF$ = "^" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?$"; - return { - NOT_SCHEME: new RegExp(merge("[^]", ALPHA$$, DIGIT$$, "[\\+\\-\\.]"), "g"), - NOT_USERINFO: new RegExp(merge("[^\\%\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_HOST: new RegExp(merge("[^\\%\\[\\]\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_PATH: new RegExp(merge("[^\\%\\/\\:\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_PATH_NOSCHEME: new RegExp(merge("[^\\%\\/\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_QUERY: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]", IPRIVATE$$), "g"), - NOT_FRAGMENT: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]"), "g"), - ESCAPE: new RegExp(merge("[^]", UNRESERVED$$, SUB_DELIMS$$), "g"), - UNRESERVED: new RegExp(UNRESERVED$$, "g"), - OTHER_CHARS: new RegExp(merge("[^\\%]", UNRESERVED$$, RESERVED$$), "g"), - PCT_ENCODED: new RegExp(PCT_ENCODED$, "g"), - IPV4ADDRESS: new RegExp("^(" + IPV4ADDRESS$ + ")$"), - IPV6ADDRESS: new RegExp("^\\[?(" + IPV6ADDRESS$ + ")" + subexp(subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + "(" + ZONEID$ + ")") + "?\\]?$") //RFC 6874, with relaxed parsing rules - }; -} -var URI_PROTOCOL = buildExps(false); - -var IRI_PROTOCOL = buildExps(true); - -var slicedToArray = function () { - function sliceIterator(arr, i) { - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"]) _i["return"](); - } finally { - if (_d) throw _e; - } - } - - return _arr; - } - - return function (arr, i) { - if (Array.isArray(arr)) { - return arr; - } else if (Symbol.iterator in Object(arr)) { - return sliceIterator(arr, i); - } else { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); - } - }; -}(); - - - - - - - - - - - - - -var toConsumableArray = function (arr) { - if (Array.isArray(arr)) { - for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; - - return arr2; - } else { - return Array.from(arr); - } -}; - -/** Highest positive signed 32-bit float value */ - -var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 - -/** Bootstring parameters */ -var base = 36; -var tMin = 1; -var tMax = 26; -var skew = 38; -var damp = 700; -var initialBias = 72; -var initialN = 128; // 0x80 -var delimiter = '-'; // '\x2D' - -/** Regular expressions */ -var regexPunycode = /^xn--/; -var regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars -var regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators - -/** Error messages */ -var errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' -}; - -/** Convenience shortcuts */ -var baseMinusTMin = base - tMin; -var floor = Math.floor; -var stringFromCharCode = String.fromCharCode; - -/*--------------------------------------------------------------------------*/ - -/** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ -function error$1(type) { - throw new RangeError(errors[type]); -} - -/** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ -function map(array, fn) { - var result = []; - var length = array.length; - while (length--) { - result[length] = fn(array[length]); - } - return result; -} - -/** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ -function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; -} - -/** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ -function ucs2decode(string) { - var output = []; - var counter = 0; - var length = string.length; - while (counter < length) { - var value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // It's a high surrogate, and there is a next character. - var extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { - // Low surrogate. - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // It's an unmatched surrogate; only append this code unit, in case the - // next code unit is the high surrogate of a surrogate pair. - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; -} - -/** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ -var ucs2encode = function ucs2encode(array) { - return String.fromCodePoint.apply(String, toConsumableArray(array)); -}; - -/** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ -var basicToDigit = function basicToDigit(codePoint) { - if (codePoint - 0x30 < 0x0A) { - return codePoint - 0x16; - } - if (codePoint - 0x41 < 0x1A) { - return codePoint - 0x41; - } - if (codePoint - 0x61 < 0x1A) { - return codePoint - 0x61; - } - return base; -}; - -/** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ -var digitToBasic = function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); -}; - -/** - * Bias adaptation function as per section 3.4 of RFC 3492. - * https://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ -var adapt = function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); -}; - -/** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ -var decode = function decode(input) { - // Don't use UCS-2. - var output = []; - var inputLength = input.length; - var i = 0; - var n = initialN; - var bias = initialBias; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - var basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (var j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error$1('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (var index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{ - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - var oldi = i; - for (var w = 1, k = base;; /* no condition */k += base) { - - if (index >= inputLength) { - error$1('invalid-input'); - } - - var digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error$1('overflow'); - } - - i += digit * w; - var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; - - if (digit < t) { - break; - } - - var baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error$1('overflow'); - } - - w *= baseMinusT; - } - - var out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error$1('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output. - output.splice(i++, 0, n); - } - - return String.fromCodePoint.apply(String, output); -}; - -/** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ -var encode = function encode(input) { - var output = []; - - // Convert the input in UCS-2 to an array of Unicode code points. - input = ucs2decode(input); - - // Cache the length. - var inputLength = input.length; - - // Initialize the state. - var n = initialN; - var delta = 0; - var bias = initialBias; - - // Handle the basic code points. - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = input[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var _currentValue2 = _step.value; - - if (_currentValue2 < 0x80) { - output.push(stringFromCharCode(_currentValue2)); - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - var basicLength = output.length; - var handledCPCount = basicLength; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string with a delimiter unless it's empty. - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - var m = maxInt; - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = input[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var currentValue = _step2.value; - - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow. - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - var handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error$1('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - var _iteratorNormalCompletion3 = true; - var _didIteratorError3 = false; - var _iteratorError3 = undefined; - - try { - for (var _iterator3 = input[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var _currentValue = _step3.value; - - if (_currentValue < n && ++delta > maxInt) { - error$1('overflow'); - } - if (_currentValue == n) { - // Represent delta as a generalized variable-length integer. - var q = delta; - for (var k = base;; /* no condition */k += base) { - var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; - if (q < t) { - break; - } - var qMinusT = q - t; - var baseMinusT = base - t; - output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - } catch (err) { - _didIteratorError3 = true; - _iteratorError3 = err; - } finally { - try { - if (!_iteratorNormalCompletion3 && _iterator3.return) { - _iterator3.return(); - } - } finally { - if (_didIteratorError3) { - throw _iteratorError3; - } - } - } - - ++delta; - ++n; - } - return output.join(''); -}; - -/** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ -var toUnicode = function toUnicode(input) { - return mapDomain(input, function (string) { - return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string; - }); -}; - -/** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ -var toASCII = function toASCII(input) { - return mapDomain(input, function (string) { - return regexNonASCII.test(string) ? 'xn--' + encode(string) : string; - }); -}; - -/*--------------------------------------------------------------------------*/ - -/** Define the public API */ -var punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '2.1.0', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode -}; - -/** - * URI.js - * - * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript. - * @author Gary Court - * @see http://github.com/garycourt/uri-js - */ -/** - * Copyright 2011 Gary Court. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of Gary Court. - */ -var SCHEMES = {}; -function pctEncChar(chr) { - var c = chr.charCodeAt(0); - var e = void 0; - if (c < 16) e = "%0" + c.toString(16).toUpperCase();else if (c < 128) e = "%" + c.toString(16).toUpperCase();else if (c < 2048) e = "%" + (c >> 6 | 192).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase();else e = "%" + (c >> 12 | 224).toString(16).toUpperCase() + "%" + (c >> 6 & 63 | 128).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase(); - return e; -} -function pctDecChars(str) { - var newStr = ""; - var i = 0; - var il = str.length; - while (i < il) { - var c = parseInt(str.substr(i + 1, 2), 16); - if (c < 128) { - newStr += String.fromCharCode(c); - i += 3; - } else if (c >= 194 && c < 224) { - if (il - i >= 6) { - var c2 = parseInt(str.substr(i + 4, 2), 16); - newStr += String.fromCharCode((c & 31) << 6 | c2 & 63); - } else { - newStr += str.substr(i, 6); - } - i += 6; - } else if (c >= 224) { - if (il - i >= 9) { - var _c = parseInt(str.substr(i + 4, 2), 16); - var c3 = parseInt(str.substr(i + 7, 2), 16); - newStr += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63); - } else { - newStr += str.substr(i, 9); - } - i += 9; - } else { - newStr += str.substr(i, 3); - i += 3; - } - } - return newStr; -} -function _normalizeComponentEncoding(components, protocol) { - function decodeUnreserved(str) { - var decStr = pctDecChars(str); - return !decStr.match(protocol.UNRESERVED) ? str : decStr; - } - if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, ""); - if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - return components; -} - -function _stripLeadingZeros(str) { - return str.replace(/^0*(.*)/, "$1") || "0"; -} -function _normalizeIPv4(host, protocol) { - var matches = host.match(protocol.IPV4ADDRESS) || []; - - var _matches = slicedToArray(matches, 2), - address = _matches[1]; - - if (address) { - return address.split(".").map(_stripLeadingZeros).join("."); - } else { - return host; - } -} -function _normalizeIPv6(host, protocol) { - var matches = host.match(protocol.IPV6ADDRESS) || []; - - var _matches2 = slicedToArray(matches, 3), - address = _matches2[1], - zone = _matches2[2]; - - if (address) { - var _address$toLowerCase$ = address.toLowerCase().split('::').reverse(), - _address$toLowerCase$2 = slicedToArray(_address$toLowerCase$, 2), - last = _address$toLowerCase$2[0], - first = _address$toLowerCase$2[1]; - - var firstFields = first ? first.split(":").map(_stripLeadingZeros) : []; - var lastFields = last.split(":").map(_stripLeadingZeros); - var isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]); - var fieldCount = isLastFieldIPv4Address ? 7 : 8; - var lastFieldsStart = lastFields.length - fieldCount; - var fields = Array(fieldCount); - for (var x = 0; x < fieldCount; ++x) { - fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || ''; - } - if (isLastFieldIPv4Address) { - fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol); - } - var allZeroFields = fields.reduce(function (acc, field, index) { - if (!field || field === "0") { - var lastLongest = acc[acc.length - 1]; - if (lastLongest && lastLongest.index + lastLongest.length === index) { - lastLongest.length++; - } else { - acc.push({ index: index, length: 1 }); - } - } - return acc; - }, []); - var longestZeroFields = allZeroFields.sort(function (a, b) { - return b.length - a.length; - })[0]; - var newHost = void 0; - if (longestZeroFields && longestZeroFields.length > 1) { - var newFirst = fields.slice(0, longestZeroFields.index); - var newLast = fields.slice(longestZeroFields.index + longestZeroFields.length); - newHost = newFirst.join(":") + "::" + newLast.join(":"); - } else { - newHost = fields.join(":"); - } - if (zone) { - newHost += "%" + zone; - } - return newHost; - } else { - return host; - } -} -var URI_PARSE = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i; -var NO_MATCH_IS_UNDEFINED = "".match(/(){0}/)[1] === undefined; -function parse(uriString) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var components = {}; - var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL; - if (options.reference === "suffix") uriString = (options.scheme ? options.scheme + ":" : "") + "//" + uriString; - var matches = uriString.match(URI_PARSE); - if (matches) { - if (NO_MATCH_IS_UNDEFINED) { - //store each component - components.scheme = matches[1]; - components.userinfo = matches[3]; - components.host = matches[4]; - components.port = parseInt(matches[5], 10); - components.path = matches[6] || ""; - components.query = matches[7]; - components.fragment = matches[8]; - //fix port number - if (isNaN(components.port)) { - components.port = matches[5]; - } - } else { - //IE FIX for improper RegExp matching - //store each component - components.scheme = matches[1] || undefined; - components.userinfo = uriString.indexOf("@") !== -1 ? matches[3] : undefined; - components.host = uriString.indexOf("//") !== -1 ? matches[4] : undefined; - components.port = parseInt(matches[5], 10); - components.path = matches[6] || ""; - components.query = uriString.indexOf("?") !== -1 ? matches[7] : undefined; - components.fragment = uriString.indexOf("#") !== -1 ? matches[8] : undefined; - //fix port number - if (isNaN(components.port)) { - components.port = uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? matches[4] : undefined; - } - } - if (components.host) { - //normalize IP hosts - components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol); - } - //determine reference type - if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) { - components.reference = "same-document"; - } else if (components.scheme === undefined) { - components.reference = "relative"; - } else if (components.fragment === undefined) { - components.reference = "absolute"; - } else { - components.reference = "uri"; - } - //check for reference errors - if (options.reference && options.reference !== "suffix" && options.reference !== components.reference) { - components.error = components.error || "URI is not a " + options.reference + " reference."; - } - //find scheme handler - var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; - //check if scheme can't handle IRIs - if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) { - //if host component is a domain name - if (components.host && (options.domainHost || schemeHandler && schemeHandler.domainHost)) { - //convert Unicode IDN -> ASCII IDN - try { - components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()); - } catch (e) { - components.error = components.error || "Host's domain name can not be converted to ASCII via punycode: " + e; - } - } - //convert IRI -> URI - _normalizeComponentEncoding(components, URI_PROTOCOL); - } else { - //normalize encodings - _normalizeComponentEncoding(components, protocol); - } - //perform scheme specific parsing - if (schemeHandler && schemeHandler.parse) { - schemeHandler.parse(components, options); - } - } else { - components.error = components.error || "URI can not be parsed."; - } - return components; -} - -function _recomposeAuthority(components, options) { - var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL; - var uriTokens = []; - if (components.userinfo !== undefined) { - uriTokens.push(components.userinfo); - uriTokens.push("@"); - } - if (components.host !== undefined) { - //normalize IP hosts, add brackets and escape zone separator for IPv6 - uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, function (_, $1, $2) { - return "[" + $1 + ($2 ? "%25" + $2 : "") + "]"; - })); - } - if (typeof components.port === "number") { - uriTokens.push(":"); - uriTokens.push(components.port.toString(10)); - } - return uriTokens.length ? uriTokens.join("") : undefined; -} - -var RDS1 = /^\.\.?\//; -var RDS2 = /^\/\.(\/|$)/; -var RDS3 = /^\/\.\.(\/|$)/; -var RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/; -function removeDotSegments(input) { - var output = []; - while (input.length) { - if (input.match(RDS1)) { - input = input.replace(RDS1, ""); - } else if (input.match(RDS2)) { - input = input.replace(RDS2, "/"); - } else if (input.match(RDS3)) { - input = input.replace(RDS3, "/"); - output.pop(); - } else if (input === "." || input === "..") { - input = ""; - } else { - var im = input.match(RDS5); - if (im) { - var s = im[0]; - input = input.slice(s.length); - output.push(s); - } else { - throw new Error("Unexpected dot segment condition"); - } - } - } - return output.join(""); -} - -function serialize(components) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var protocol = options.iri ? IRI_PROTOCOL : URI_PROTOCOL; - var uriTokens = []; - //find scheme handler - var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; - //perform scheme specific serialization - if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options); - if (components.host) { - //if host component is an IPv6 address - if (protocol.IPV6ADDRESS.test(components.host)) {} - //TODO: normalize IPv6 address as per RFC 5952 - - //if host component is a domain name - else if (options.domainHost || schemeHandler && schemeHandler.domainHost) { - //convert IDN via punycode - try { - components.host = !options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host); - } catch (e) { - components.error = components.error || "Host's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; - } - } - } - //normalize encoding - _normalizeComponentEncoding(components, protocol); - if (options.reference !== "suffix" && components.scheme) { - uriTokens.push(components.scheme); - uriTokens.push(":"); - } - var authority = _recomposeAuthority(components, options); - if (authority !== undefined) { - if (options.reference !== "suffix") { - uriTokens.push("//"); - } - uriTokens.push(authority); - if (components.path && components.path.charAt(0) !== "/") { - uriTokens.push("/"); - } - } - if (components.path !== undefined) { - var s = components.path; - if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) { - s = removeDotSegments(s); - } - if (authority === undefined) { - s = s.replace(/^\/\//, "/%2F"); //don't allow the path to start with "//" - } - uriTokens.push(s); - } - if (components.query !== undefined) { - uriTokens.push("?"); - uriTokens.push(components.query); - } - if (components.fragment !== undefined) { - uriTokens.push("#"); - uriTokens.push(components.fragment); - } - return uriTokens.join(""); //merge tokens into a string -} - -function resolveComponents(base, relative) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var skipNormalization = arguments[3]; - - var target = {}; - if (!skipNormalization) { - base = parse(serialize(base, options), options); //normalize base components - relative = parse(serialize(relative, options), options); //normalize relative components - } - options = options || {}; - if (!options.tolerant && relative.scheme) { - target.scheme = relative.scheme; - //target.authority = relative.authority; - target.userinfo = relative.userinfo; - target.host = relative.host; - target.port = relative.port; - target.path = removeDotSegments(relative.path || ""); - target.query = relative.query; - } else { - if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) { - //target.authority = relative.authority; - target.userinfo = relative.userinfo; - target.host = relative.host; - target.port = relative.port; - target.path = removeDotSegments(relative.path || ""); - target.query = relative.query; - } else { - if (!relative.path) { - target.path = base.path; - if (relative.query !== undefined) { - target.query = relative.query; - } else { - target.query = base.query; - } - } else { - if (relative.path.charAt(0) === "/") { - target.path = removeDotSegments(relative.path); - } else { - if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) { - target.path = "/" + relative.path; - } else if (!base.path) { - target.path = relative.path; - } else { - target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path; - } - target.path = removeDotSegments(target.path); - } - target.query = relative.query; - } - //target.authority = base.authority; - target.userinfo = base.userinfo; - target.host = base.host; - target.port = base.port; - } - target.scheme = base.scheme; - } - target.fragment = relative.fragment; - return target; -} - -function resolve(baseURI, relativeURI, options) { - var schemelessOptions = assign({ scheme: 'null' }, options); - return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions); -} - -function normalize(uri, options) { - if (typeof uri === "string") { - uri = serialize(parse(uri, options), options); - } else if (typeOf(uri) === "object") { - uri = parse(serialize(uri, options), options); - } - return uri; -} - -function equal(uriA, uriB, options) { - if (typeof uriA === "string") { - uriA = serialize(parse(uriA, options), options); - } else if (typeOf(uriA) === "object") { - uriA = serialize(uriA, options); - } - if (typeof uriB === "string") { - uriB = serialize(parse(uriB, options), options); - } else if (typeOf(uriB) === "object") { - uriB = serialize(uriB, options); - } - return uriA === uriB; -} - -function escapeComponent(str, options) { - return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE, pctEncChar); -} - -function unescapeComponent(str, options) { - return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED, pctDecChars); -} - -var handler = { - scheme: "http", - domainHost: true, - parse: function parse(components, options) { - //report missing host - if (!components.host) { - components.error = components.error || "HTTP URIs must have a host."; - } - return components; - }, - serialize: function serialize(components, options) { - //normalize the default port - if (components.port === (String(components.scheme).toLowerCase() !== "https" ? 80 : 443) || components.port === "") { - components.port = undefined; - } - //normalize the empty path - if (!components.path) { - components.path = "/"; - } - //NOTE: We do not parse query strings for HTTP URIs - //as WWW Form Url Encoded query strings are part of the HTML4+ spec, - //and not the HTTP spec. - return components; - } -}; - -var handler$1 = { - scheme: "https", - domainHost: handler.domainHost, - parse: handler.parse, - serialize: handler.serialize -}; - -var O = {}; -var isIRI = true; -//RFC 3986 -var UNRESERVED$$ = "[A-Za-z0-9\\-\\.\\_\\~" + (isIRI ? "\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF" : "") + "]"; -var HEXDIG$$ = "[0-9A-Fa-f]"; //case-insensitive -var PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)); //expanded -//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; = -//const ATEXT$$ = "[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]"; -//const WSP$$ = "[\\x20\\x09]"; -//const OBS_QTEXT$$ = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"; //(%d1-8 / %d11-12 / %d14-31 / %d127) -//const QTEXT$$ = merge("[\\x21\\x23-\\x5B\\x5D-\\x7E]", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext -//const VCHAR$$ = "[\\x21-\\x7E]"; -//const WSP$$ = "[\\x20\\x09]"; -//const OBS_QP$ = subexp("\\\\" + merge("[\\x00\\x0D\\x0A]", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext -//const FWS$ = subexp(subexp(WSP$$ + "*" + "\\x0D\\x0A") + "?" + WSP$$ + "+"); -//const QUOTED_PAIR$ = subexp(subexp("\\\\" + subexp(VCHAR$$ + "|" + WSP$$)) + "|" + OBS_QP$); -//const QUOTED_STRING$ = subexp('\\"' + subexp(FWS$ + "?" + QCONTENT$) + "*" + FWS$ + "?" + '\\"'); -var ATEXT$$ = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]"; -var QTEXT$$ = "[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]"; -var VCHAR$$ = merge(QTEXT$$, "[\\\"\\\\]"); -var SOME_DELIMS$$ = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"; -var UNRESERVED = new RegExp(UNRESERVED$$, "g"); -var PCT_ENCODED = new RegExp(PCT_ENCODED$, "g"); -var NOT_LOCAL_PART = new RegExp(merge("[^]", ATEXT$$, "[\\.]", '[\\"]', VCHAR$$), "g"); -var NOT_HFNAME = new RegExp(merge("[^]", UNRESERVED$$, SOME_DELIMS$$), "g"); -var NOT_HFVALUE = NOT_HFNAME; -function decodeUnreserved(str) { - var decStr = pctDecChars(str); - return !decStr.match(UNRESERVED) ? str : decStr; -} -var handler$2 = { - scheme: "mailto", - parse: function parse$$1(components, options) { - var mailtoComponents = components; - var to = mailtoComponents.to = mailtoComponents.path ? mailtoComponents.path.split(",") : []; - mailtoComponents.path = undefined; - if (mailtoComponents.query) { - var unknownHeaders = false; - var headers = {}; - var hfields = mailtoComponents.query.split("&"); - for (var x = 0, xl = hfields.length; x < xl; ++x) { - var hfield = hfields[x].split("="); - switch (hfield[0]) { - case "to": - var toAddrs = hfield[1].split(","); - for (var _x = 0, _xl = toAddrs.length; _x < _xl; ++_x) { - to.push(toAddrs[_x]); - } - break; - case "subject": - mailtoComponents.subject = unescapeComponent(hfield[1], options); - break; - case "body": - mailtoComponents.body = unescapeComponent(hfield[1], options); - break; - default: - unknownHeaders = true; - headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options); - break; - } - } - if (unknownHeaders) mailtoComponents.headers = headers; - } - mailtoComponents.query = undefined; - for (var _x2 = 0, _xl2 = to.length; _x2 < _xl2; ++_x2) { - var addr = to[_x2].split("@"); - addr[0] = unescapeComponent(addr[0]); - if (!options.unicodeSupport) { - //convert Unicode IDN -> ASCII IDN - try { - addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase()); - } catch (e) { - mailtoComponents.error = mailtoComponents.error || "Email address's domain name can not be converted to ASCII via punycode: " + e; - } - } else { - addr[1] = unescapeComponent(addr[1], options).toLowerCase(); - } - to[_x2] = addr.join("@"); - } - return mailtoComponents; - }, - serialize: function serialize$$1(mailtoComponents, options) { - var components = mailtoComponents; - var to = toArray(mailtoComponents.to); - if (to) { - for (var x = 0, xl = to.length; x < xl; ++x) { - var toAddr = String(to[x]); - var atIdx = toAddr.lastIndexOf("@"); - var localPart = toAddr.slice(0, atIdx).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar); - var domain = toAddr.slice(atIdx + 1); - //convert IDN via punycode - try { - domain = !options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain); - } catch (e) { - components.error = components.error || "Email address's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; - } - to[x] = localPart + "@" + domain; - } - components.path = to.join(","); - } - var headers = mailtoComponents.headers = mailtoComponents.headers || {}; - if (mailtoComponents.subject) headers["subject"] = mailtoComponents.subject; - if (mailtoComponents.body) headers["body"] = mailtoComponents.body; - var fields = []; - for (var name in headers) { - if (headers[name] !== O[name]) { - fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + "=" + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)); - } - } - if (fields.length) { - components.query = fields.join("&"); - } - return components; - } -}; - -var URN_PARSE = /^([^\:]+)\:(.*)/; -//RFC 2141 -var handler$3 = { - scheme: "urn", - parse: function parse$$1(components, options) { - var matches = components.path && components.path.match(URN_PARSE); - var urnComponents = components; - if (matches) { - var scheme = options.scheme || urnComponents.scheme || "urn"; - var nid = matches[1].toLowerCase(); - var nss = matches[2]; - var urnScheme = scheme + ":" + (options.nid || nid); - var schemeHandler = SCHEMES[urnScheme]; - urnComponents.nid = nid; - urnComponents.nss = nss; - urnComponents.path = undefined; - if (schemeHandler) { - urnComponents = schemeHandler.parse(urnComponents, options); - } - } else { - urnComponents.error = urnComponents.error || "URN can not be parsed."; - } - return urnComponents; - }, - serialize: function serialize$$1(urnComponents, options) { - var scheme = options.scheme || urnComponents.scheme || "urn"; - var nid = urnComponents.nid; - var urnScheme = scheme + ":" + (options.nid || nid); - var schemeHandler = SCHEMES[urnScheme]; - if (schemeHandler) { - urnComponents = schemeHandler.serialize(urnComponents, options); - } - var uriComponents = urnComponents; - var nss = urnComponents.nss; - uriComponents.path = (nid || options.nid) + ":" + nss; - return uriComponents; - } -}; - -var UUID = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/; -//RFC 4122 -var handler$4 = { - scheme: "urn:uuid", - parse: function parse(urnComponents, options) { - var uuidComponents = urnComponents; - uuidComponents.uuid = uuidComponents.nss; - uuidComponents.nss = undefined; - if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) { - uuidComponents.error = uuidComponents.error || "UUID is not valid."; - } - return uuidComponents; - }, - serialize: function serialize(uuidComponents, options) { - var urnComponents = uuidComponents; - //normalize UUID - urnComponents.nss = (uuidComponents.uuid || "").toLowerCase(); - return urnComponents; - } -}; - -SCHEMES[handler.scheme] = handler; -SCHEMES[handler$1.scheme] = handler$1; -SCHEMES[handler$2.scheme] = handler$2; -SCHEMES[handler$3.scheme] = handler$3; -SCHEMES[handler$4.scheme] = handler$4; - -exports.SCHEMES = SCHEMES; -exports.pctEncChar = pctEncChar; -exports.pctDecChars = pctDecChars; -exports.parse = parse; -exports.removeDotSegments = removeDotSegments; -exports.serialize = serialize; -exports.resolveComponents = resolveComponents; -exports.resolve = resolve; -exports.normalize = normalize; -exports.equal = equal; -exports.escapeComponent = escapeComponent; -exports.unescapeComponent = unescapeComponent; - -Object.defineProperty(exports, '__esModule', { value: true }); - -}))); - - -},{}],"ajv":[function(require,module,exports){ -'use strict'; - -var compileSchema = require('./compile') - , resolve = require('./compile/resolve') - , Cache = require('./cache') - , SchemaObject = require('./compile/schema_obj') - , stableStringify = require('fast-json-stable-stringify') - , formats = require('./compile/formats') - , rules = require('./compile/rules') - , $dataMetaSchema = require('./data') - , util = require('./compile/util'); - -module.exports = Ajv; - -Ajv.prototype.validate = validate; -Ajv.prototype.compile = compile; -Ajv.prototype.addSchema = addSchema; -Ajv.prototype.addMetaSchema = addMetaSchema; -Ajv.prototype.validateSchema = validateSchema; -Ajv.prototype.getSchema = getSchema; -Ajv.prototype.removeSchema = removeSchema; -Ajv.prototype.addFormat = addFormat; -Ajv.prototype.errorsText = errorsText; - -Ajv.prototype._addSchema = _addSchema; -Ajv.prototype._compile = _compile; - -Ajv.prototype.compileAsync = require('./compile/async'); -var customKeyword = require('./keyword'); -Ajv.prototype.addKeyword = customKeyword.add; -Ajv.prototype.getKeyword = customKeyword.get; -Ajv.prototype.removeKeyword = customKeyword.remove; -Ajv.prototype.validateKeyword = customKeyword.validate; - -var errorClasses = require('./compile/error_classes'); -Ajv.ValidationError = errorClasses.Validation; -Ajv.MissingRefError = errorClasses.MissingRef; -Ajv.$dataMetaSchema = $dataMetaSchema; - -var META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema'; - -var META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults' ]; -var META_SUPPORT_DATA = ['/properties']; - -/** - * Creates validator instance. - * Usage: `Ajv(opts)` - * @param {Object} opts optional options - * @return {Object} ajv instance - */ -function Ajv(opts) { - if (!(this instanceof Ajv)) return new Ajv(opts); - opts = this._opts = util.copy(opts) || {}; - setLogger(this); - this._schemas = {}; - this._refs = {}; - this._fragments = {}; - this._formats = formats(opts.format); - - this._cache = opts.cache || new Cache; - this._loadingSchemas = {}; - this._compilations = []; - this.RULES = rules(); - this._getId = chooseGetId(opts); - - opts.loopRequired = opts.loopRequired || Infinity; - if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true; - if (opts.serialize === undefined) opts.serialize = stableStringify; - this._metaOpts = getMetaSchemaOptions(this); - - if (opts.formats) addInitialFormats(this); - if (opts.keywords) addInitialKeywords(this); - addDefaultMetaSchema(this); - if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta); - if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}}); - addInitialSchemas(this); -} - - - -/** - * Validate data using schema - * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize. - * @this Ajv - * @param {String|Object} schemaKeyRef key, ref or schema object - * @param {Any} data to be validated - * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`). - */ -function validate(schemaKeyRef, data) { - var v; - if (typeof schemaKeyRef == 'string') { - v = this.getSchema(schemaKeyRef); - if (!v) throw new Error('no schema with key or ref "' + schemaKeyRef + '"'); - } else { - var schemaObj = this._addSchema(schemaKeyRef); - v = schemaObj.validate || this._compile(schemaObj); - } - - var valid = v(data); - if (v.$async !== true) this.errors = v.errors; - return valid; -} - - -/** - * Create validating function for passed schema. - * @this Ajv - * @param {Object} schema schema object - * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords. - * @return {Function} validating function - */ -function compile(schema, _meta) { - var schemaObj = this._addSchema(schema, undefined, _meta); - return schemaObj.validate || this._compile(schemaObj); -} - - -/** - * Adds schema to the instance. - * @this Ajv - * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored. - * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`. - * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead. - * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead. - * @return {Ajv} this for method chaining - */ -function addSchema(schema, key, _skipValidation, _meta) { - if (Array.isArray(schema)){ - for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used. - * @param {Object} options optional options with properties `separator` and `dataVar`. - * @return {String} human readable string with all errors descriptions - */ -function errorsText(errors, options) { - errors = errors || this.errors; - if (!errors) return 'No errors'; - options = options || {}; - var separator = options.separator === undefined ? ', ' : options.separator; - var dataVar = options.dataVar === undefined ? 'data' : options.dataVar; - - var text = ''; - for (var i=0; i%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,u=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,h=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,d=/^(?:\/(?:[^~/]|~0|~1)*)*$/,f=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,p=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;function m(e){return a.copy(m[e="full"==e?"full":"fast"])}function v(e){var r=e.match(o);if(!r)return!1;var t,a=+r[2],s=+r[3];return 1<=a&&a<=12&&1<=s&&s<=(2!=a||((t=+r[1])%4!=0||t%100==0&&t%400!=0)?i[a]:29)}function y(e,r){var t=e.match(n);if(!t)return!1;var a=t[1],s=t[2],o=t[3];return(a<=23&&s<=59&&o<=59||23==a&&59==s&&60==o)&&(!r||t[5])}(r.exports=m).fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":c,url:u,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:s,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:h,"json-pointer":d,"json-pointer-uri-fragment":f,"relative-json-pointer":p},m.full={date:v,time:y,"date-time":function(e){var r=e.split(g);return 2==r.length&&v(r[0])&&y(r[1],!0)},uri:function(e){return P.test(e)&&l.test(e)},"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":c,url:u,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:s,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:h,"json-pointer":d,"json-pointer-uri-fragment":f,"relative-json-pointer":p};var g=/t|\s/i;var P=/\/|:/;var E=/[^\\]\\Z/;function w(e){if(E.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}},{"./util":10}],5:[function(e,r,t){"use strict";var $=e("./resolve"),R=e("./util"),D=e("./error_classes"),j=e("fast-json-stable-stringify"),O=e("../dotjs/validate"),I=R.ucs2length,A=e("fast-deep-equal"),C=D.Validation;function k(e,c,u,r){var d=this,f=this._opts,h=[void 0],p={},l=[],t={},m=[],a={},v=[],s=function(e,r,t){var a=L.call(this,e,r,t);return 0<=a?{index:a,compiling:!0}:{index:a=this._compilations.length,compiling:!(this._compilations[a]={schema:e,root:r,baseId:t})}}.call(this,e,c=c||{schema:e,refVal:h,refs:p},r),o=this._compilations[s.index];if(s.compiling)return o.callValidate=P;var y=this._formats,g=this.RULES;try{var i=E(e,c,u,r);o.validate=i;var n=o.callValidate;return n&&(n.schema=i.schema,n.errors=null,n.refs=i.refs,n.refVal=i.refVal,n.root=i.root,n.$async=i.$async,f.sourceCode&&(n.source=i.source)),i}finally{(function(e,r,t){var a=L.call(this,e,r,t);0<=a&&this._compilations.splice(a,1)}).call(this,e,c,r)}function P(){var e=o.validate,r=e.apply(this,arguments);return P.errors=e.errors,r}function E(e,r,t,a){var s=!r||r&&r.schema==e;if(r.schema!=c.schema)return k.call(d,e,r,t,a);var o,i=!0===e.$async,n=O({isTop:!0,schema:e,isRoot:s,baseId:a,root:r,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:D.MissingRef,RULES:g,validate:O,util:R,resolve:$,resolveRef:w,usePattern:_,useDefault:F,useCustomRule:x,opts:f,formats:y,logger:d.logger,self:d});n=Q(h,q)+Q(l,z)+Q(m,T)+Q(v,N)+n,f.processCode&&(n=f.processCode(n));try{o=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",n)(d,g,y,c,h,m,v,A,I,C),h[0]=o}catch(e){throw d.logger.error("Error compiling schema, function code:",n),e}return o.schema=e,o.errors=null,o.refs=p,o.refVal=h,o.root=s?o:r,i&&(o.$async=!0),!0===f.sourceCode&&(o.source={code:n,patterns:l,defaults:m}),o}function w(e,r,t){r=$.url(e,r);var a,s,o=p[r];if(void 0!==o)return S(a=h[o],s="refVal["+o+"]");if(!t&&c.refs){var i=c.refs[r];if(void 0!==i)return S(a=c.refVal[i],s=b(r,a))}s=b(r);var n=$.call(d,E,c,r);if(void 0===n){var l=u&&u[r];l&&(n=$.inlineRef(l,f.inlineRefs)?l:k.call(d,l,c,u,e))}if(void 0!==n)return h[p[r]]=n,S(n,s);delete p[r]}function b(e,r){var t=h.length;return h[t]=r,"refVal"+(p[e]=t)}function S(e,r){return"object"==typeof e||"boolean"==typeof e?{code:r,schema:e,inline:!0}:{code:r,$async:e&&!!e.$async}}function _(e){var r=t[e];return void 0===r&&(r=t[e]=l.length,l[r]=e),"pattern"+r}function F(e){switch(typeof e){case"boolean":case"number":return""+e;case"string":return R.toQuotedString(e);case"object":if(null===e)return"null";var r=j(e),t=a[r];return void 0===t&&(t=a[r]=m.length,m[t]=e),"default"+t}}function x(e,r,t,a){if(!1!==d._opts.validateSchema){var s=e.definition.dependencies;if(s&&!s.every(function(e){return Object.prototype.hasOwnProperty.call(t,e)}))throw new Error("parent schema must have all required keywords: "+s.join(","));var o=e.definition.validateSchema;if(o)if(!o(r)){var i="keyword schema is invalid: "+d.errorsText(o.errors);if("log"!=d._opts.validateSchema)throw new Error(i);d.logger.error(i)}}var n,l=e.definition.compile,c=e.definition.inline,u=e.definition.macro;if(l)n=l.call(d,r,t,a);else if(u)n=u.call(d,r,t,a),!1!==f.validateSchema&&d.validateSchema(n,!0);else if(c)n=c.call(d,a,e.keyword,r,t);else if(!(n=e.definition.validate))return;if(void 0===n)throw new Error('custom keyword "'+e.keyword+'"failed to compile');var h=v.length;return{code:"customRule"+h,validate:v[h]=n}}}function L(e,r,t){for(var a=0;a",y=d?">":"<",g=void 0;if(m){var P=e.util.getData(p.$data,o,e.dataPathArr),E="exclusive"+s,w="exclType"+s,b="exclIsNumber"+s,S="' + "+(x="op"+s)+" + '";a+=" var schemaExcl"+s+" = "+P+"; ";var _;g=f;(_=_||[]).push(a+=" var "+E+"; var "+w+" = typeof "+(P="schemaExcl"+s)+"; if ("+w+" != 'boolean' && "+w+" != 'undefined' && "+w+" != 'number') { "),a="",!1!==e.createErrors?(a+=" { keyword: '"+(g||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: '"+f+" should be boolean' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var F=a;a=_.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || "),a+=" "+w+" == 'number' ? ( ("+E+" = "+t+" === undefined || "+P+" "+v+"= "+t+") ? "+u+" "+y+"= "+P+" : "+u+" "+y+" "+t+" ) : ( ("+E+" = "+P+" === true) ? "+u+" "+y+"= "+t+" : "+u+" "+y+" "+t+" ) || "+u+" !== "+u+") { var op"+s+" = "+E+" ? '"+v+"' : '"+v+"='; ",void 0===i&&(l=e.errSchemaPath+"/"+(g=f),t=P,h=m)}else{S=v;if((b="number"==typeof p)&&h){var x="'"+S+"'";a+=" if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || "),a+=" ( "+t+" === undefined || "+p+" "+v+"= "+t+" ? "+u+" "+y+"= "+p+" : "+u+" "+y+" "+t+" ) || "+u+" !== "+u+") { "}else{b&&void 0===i?(E=!0,l=e.errSchemaPath+"/"+(g=f),t=p,y+="="):(b&&(t=Math[d?"min":"max"](p,i)),p===(!b||t)?(E=!0,l=e.errSchemaPath+"/"+(g=f),y+="="):(E=!1,S+="="));x="'"+S+"'";a+=" if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || "),a+=" "+u+" "+y+" "+t+" || "+u+" !== "+u+") { "}}g=g||r,(_=_||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: '"+(g||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { comparison: "+x+", limit: "+t+", exclusive: "+E+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be "+S+" ",a+=h?"' + "+t:t+"'"),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";F=a;return a=_.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",c&&(a+=" else { "),a}},{}],14:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,a+="if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || ");var d=r,f=f||[];f.push(a+=" "+u+".length "+("maxItems"==r?">":"<")+" "+t+") { "),a="",!1!==e.createErrors?(a+=" { keyword: '"+(d||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+t+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have ",a+="maxItems"==r?"more":"fewer",a+=" than ",a+=h?"' + "+t+" + '":""+i,a+=" items' "),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=f.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],15:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,a+="if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || "),a+=!1===e.opts.unicode?" "+u+".length ":" ucs2length("+u+") ";var d=r,f=f||[];f.push(a+=" "+("maxLength"==r?">":"<")+" "+t+") { "),a="",!1!==e.createErrors?(a+=" { keyword: '"+(d||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+t+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be ",a+="maxLength"==r?"longer":"shorter",a+=" than ",a+=h?"' + "+t+" + '":""+i,a+=" characters' "),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=f.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],16:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,a+="if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || ");var d=r,f=f||[];f.push(a+=" Object.keys("+u+").length "+("maxProperties"==r?">":"<")+" "+t+") { "),a="",!1!==e.createErrors?(a+=" { keyword: '"+(d||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+t+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have ",a+="maxProperties"==r?"more":"fewer",a+=" than ",a+=h?"' + "+t+" + '":""+i,a+=" properties' "),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=f.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],17:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.schema[r],s=e.schemaPath+e.util.getProperty(r),o=e.errSchemaPath+"/"+r,i=!e.opts.allErrors,n=e.util.copy(e),l="";n.level++;var c="valid"+n.level,u=n.baseId,h=!0,d=a;if(d)for(var f,p=-1,m=d.length-1;p "+F+") { ";var $=c+"["+F+"]";d.schema=_,d.schemaPath=i+"["+F+"]",d.errSchemaPath=n+"/"+F,d.errorPath=e.util.getPathExpr(e.errorPath,F,e.opts.jsonPointers,!0),d.dataPathArr[v]=F;var R=e.validate(d);d.baseId=g,e.util.varOccurences(R,y)<2?t+=" "+e.util.varReplace(R,y,$)+" ":t+=" var "+y+" = "+$+"; "+R+" ",t+=" } ",l&&(t+=" if ("+p+") { ",f+="}")}if("object"==typeof P&&(e.opts.strictKeywords?"object"==typeof P&&0 "+o.length+") { for (var "+m+" = "+o.length+"; "+m+" < "+c+".length; "+m+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);$=c+"["+m+"]";d.dataPathArr[v]=m;R=e.validate(d);d.baseId=g,e.util.varOccurences(R,y)<2?t+=" "+e.util.varReplace(R,y,$)+" ":t+=" var "+y+" = "+$+"; "+R+" ",l&&(t+=" if (!"+p+") break; "),t+=" } } ",l&&(t+=" if ("+p+") { ",f+="}")}}else if(e.opts.strictKeywords?"object"==typeof o&&0 1e-"+e.opts.multipleOfPrecision+" ":" division"+s+" !== parseInt(division"+s+") ",a+=" ) ",h&&(a+=" ) ");var d=d||[];d.push(a+=" ) { "),a="",!1!==e.createErrors?(a+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { multipleOf: "+t+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be multiple of ",a+=h?"' + "+t:t+"'"),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var f=a;return a=d.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+f+"]); ":" validate.errors = ["+f+"]; return false; ":" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],30:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="errs__"+a,h=e.util.copy(e);h.level++;var d="valid"+h.level;if(e.opts.strictKeywords?"object"==typeof o&&0 1) { ";var f=e.schema.items&&e.schema.items.type,p=Array.isArray(f);if(!f||"object"==f||"array"==f||p&&(0<=f.indexOf("object")||0<=f.indexOf("array")))a+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+u+"[i], "+u+"[j])) { "+h+" = false; break outer; } } } ";else a+=" var itemIndices = {}, item; for (;i--;) { var item = "+u+"[i]; ",a+=" if ("+e.util["checkDataType"+(p?"s":"")](f,"item",!0)+") continue; ",p&&(a+=" if (typeof item == 'string') item = '\"' + item; "),a+=" if (typeof itemIndices[item] == 'number') { "+h+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ";a+=" } ",d&&(a+=" } ");var m=m||[];m.push(a+=" if (!"+h+") { "),a="",!1!==e.createErrors?(a+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(a+=" , schema: ",a+=d?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var v=a;a=m.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",c&&(a+=" else { ")}else c&&(a+=" if (true) { ");return a}},{}],38:[function(e,r,t){"use strict";r.exports=function(a,e){var r="",t=!0===a.schema.$async,s=a.util.schemaHasRulesExcept(a.schema,a.RULES.all,"$ref"),o=a.self._getId(a.schema);if(a.opts.strictKeywords){var i=a.util.schemaUnknownRules(a.schema,a.RULES.keywords);if(i){var n="unknown keyword: "+i;if("log"!==a.opts.strictKeywords)throw new Error(n);a.logger.warn(n)}}if(a.isTop&&(r+=" var validate = ",t&&(a.async=!0,r+="async "),r+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",o&&(a.opts.sourceCode||a.opts.processCode)&&(r+=" /*# sourceURL="+o+" */ ")),"boolean"==typeof a.schema||!s&&!a.schema.$ref){var l=a.level,c=a.dataLevel,u=a.schema[e="false schema"],h=a.schemaPath+a.util.getProperty(e),d=a.errSchemaPath+"/"+e,f=!a.opts.allErrors,p="data"+(c||""),m="valid"+l;if(!1===a.schema){a.isTop?f=!0:r+=" var "+m+" = false; ",(Z=Z||[]).push(r),r="",!1!==a.createErrors?(r+=" { keyword: 'false schema' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(d)+" , params: {} ",!1!==a.opts.messages&&(r+=" , message: 'boolean schema is false' "),a.opts.verbose&&(r+=" , schema: false , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),r+=" } "):r+=" {} ";var v=r;r=Z.pop(),r+=!a.compositeRule&&f?a.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else r+=a.isTop?t?" return data; ":" validate.errors = null; return true; ":" var "+m+" = true; ";return a.isTop&&(r+=" }; return validate; "),r}if(a.isTop){var y=a.isTop;l=a.level=0,c=a.dataLevel=0,p="data";if(a.rootId=a.resolve.fullPath(a.self._getId(a.root.schema)),a.baseId=a.baseId||a.rootId,delete a.isTop,a.dataPathArr=[void 0],void 0!==a.schema.default&&a.opts.useDefaults&&a.opts.strictDefaults){var g="default is ignored in the schema root";if("log"!==a.opts.strictDefaults)throw new Error(g);a.logger.warn(g)}r+=" var vErrors = null; ",r+=" var errors = 0; ",r+=" if (rootData === undefined) rootData = data; "}else{l=a.level,p="data"+((c=a.dataLevel)||"");if(o&&(a.baseId=a.resolve.url(a.baseId,o)),t&&!a.async)throw new Error("async schema in sync schema");r+=" var errs_"+l+" = errors;"}m="valid"+l,f=!a.opts.allErrors;var P="",E="",w=a.schema.type,b=Array.isArray(w);if(w&&a.opts.nullable&&!0===a.schema.nullable&&(b?-1==w.indexOf("null")&&(w=w.concat("null")):"null"!=w&&(w=[w,"null"],b=!0)),b&&1==w.length&&(w=w[0],b=!1),a.schema.$ref&&s){if("fail"==a.opts.extendRefs)throw new Error('$ref: validation keywords used in schema at path "'+a.errSchemaPath+'" (see option extendRefs)');!0!==a.opts.extendRefs&&(s=!1,a.logger.warn('$ref: keywords ignored in schema at path "'+a.errSchemaPath+'"'))}if(a.schema.$comment&&a.opts.$comment&&(r+=" "+a.RULES.all.$comment.code(a,"$comment")),w){if(a.opts.coerceTypes)var S=a.util.coerceToTypes(a.opts.coerceTypes,w);var _=a.RULES.types[w];if(S||b||!0===_||_&&!G(_)){h=a.schemaPath+".type",d=a.errSchemaPath+"/type",h=a.schemaPath+".type",d=a.errSchemaPath+"/type";if(r+=" if ("+a.util[b?"checkDataTypes":"checkDataType"](w,p,!0)+") { ",S){var F="dataType"+l,x="coerced"+l;r+=" var "+F+" = typeof "+p+"; ","array"==a.opts.coerceTypes&&(r+=" if ("+F+" == 'object' && Array.isArray("+p+")) "+F+" = 'array'; "),r+=" var "+x+" = undefined; ";var $="",R=S;if(R)for(var D,j=-1,O=R.length-1;j= 0x80 (not a basic code point)","invalid-input":"Invalid input"},C=Math.floor,k=String.fromCharCode;function L(e){throw new RangeError(i[e])}function n(e,r){var t=e.split("@"),a="";return 1>1,e+=C(e/r);455C((A-s)/h))&&L("overflow"),s+=f*h;var p=d<=i?1:i+26<=d?26:d-i;if(fC(A/m)&&L("overflow"),h*=m}var v=t.length+1;i=q(s-u,v,0==u),C(s/v)>A-o&&L("overflow"),o+=C(s/v),s%=v,t.splice(s++,0,o)}return String.fromCodePoint.apply(String,t)}function c(e){var r=[],t=(e=z(e)).length,a=128,s=0,o=72,i=!0,n=!1,l=void 0;try{for(var c,u=e[Symbol.iterator]();!(i=(c=u.next()).done);i=!0){var h=c.value;h<128&&r.push(k(h))}}catch(e){n=!0,l=e}finally{try{!i&&u.return&&u.return()}finally{if(n)throw l}}var d=r.length,f=d;for(d&&r.push("-");fC((A-s)/w)&&L("overflow"),s+=(p-a)*w,a=p;var b=!0,S=!1,_=void 0;try{for(var F,x=e[Symbol.iterator]();!(b=(F=x.next()).done);b=!0){var $=F.value;if($A&&L("overflow"),$==a){for(var R=s,D=36;;D+=36){var j=D<=o?1:o+26<=D?26:D-o;if(R>6|192).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase():"%"+(r>>12|224).toString(16).toUpperCase()+"%"+(r>>6&63|128).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase()}function f(e){for(var r="",t=0,a=e.length;tA-Z\\x5E-\\x7E]",'[\\"\\\\]')),M=new RegExp(V,"g"),B=new RegExp("(?:(?:%[EFef][0-9A-Fa-f]%[0-9A-Fa-f][0-9A-Fa-f]%[0-9A-Fa-f][0-9A-Fa-f])|(?:%[89A-Fa-f][0-9A-Fa-f]%[0-9A-Fa-f][0-9A-Fa-f])|(?:%[0-9A-Fa-f][0-9A-Fa-f]))","g"),G=new RegExp(J("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',K),"g"),Y=new RegExp(J("[^]",V,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),W=Y;function X(e){var r=f(e);return r.match(M)?r:e}var ee={scheme:"mailto",parse:function(e,r){var t=e,a=t.to=t.path?t.path.split(","):[];if(t.path=void 0,t.query){for(var s=!1,o={},i=t.query.split("&"),n=0,l=i.length;n); - - message: string; - errors: Array; - ajv: true; - validation: true; - } - - class MissingRefError extends Error { - constructor(baseId: string, ref: string, message?: string); - static message: (baseId: string, ref: string) => string; - - message: string; - missingRef: string; - missingSchema: string; - } -} - -declare namespace ajv { - type ValidationError = AjvErrors.ValidationError; - - type MissingRefError = AjvErrors.MissingRefError; - - interface Ajv { - /** - * Validate data using schema - * Schema will be compiled and cached (using serialized JSON as key, [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize by default). - * @param {string|object|Boolean} schemaKeyRef key, ref or schema object - * @param {Any} data to be validated - * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`). - */ - validate(schemaKeyRef: object | string | boolean, data: any): boolean | PromiseLike; - /** - * Create validating function for passed schema. - * @param {object|Boolean} schema schema object - * @return {Function} validating function - */ - compile(schema: object | boolean): ValidateFunction; - /** - * Creates validating function for passed schema with asynchronous loading of missing schemas. - * `loadSchema` option should be a function that accepts schema uri and node-style callback. - * @this Ajv - * @param {object|Boolean} schema schema object - * @param {Boolean} meta optional true to compile meta-schema; this parameter can be skipped - * @param {Function} callback optional node-style callback, it is always called with 2 parameters: error (or null) and validating function. - * @return {PromiseLike} validating function - */ - compileAsync(schema: object | boolean, meta?: Boolean, callback?: (err: Error, validate: ValidateFunction) => any): PromiseLike; - /** - * Adds schema to the instance. - * @param {object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored. - * @param {string} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`. - * @return {Ajv} this for method chaining - */ - addSchema(schema: Array | object, key?: string): Ajv; - /** - * Add schema that will be used to validate other schemas - * options in META_IGNORE_OPTIONS are alway set to false - * @param {object} schema schema object - * @param {string} key optional schema key - * @return {Ajv} this for method chaining - */ - addMetaSchema(schema: object, key?: string): Ajv; - /** - * Validate schema - * @param {object|Boolean} schema schema to validate - * @return {Boolean} true if schema is valid - */ - validateSchema(schema: object | boolean): boolean; - /** - * Get compiled schema from the instance by `key` or `ref`. - * @param {string} keyRef `key` that was passed to `addSchema` or full schema reference (`schema.id` or resolved id). - * @return {Function} schema validating function (with property `schema`). Returns undefined if keyRef can't be resolved to an existing schema. - */ - getSchema(keyRef: string): ValidateFunction | undefined; - /** - * Remove cached schema(s). - * If no parameter is passed all schemas but meta-schemas are removed. - * If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed. - * Even if schema is referenced by other schemas it still can be removed as other schemas have local references. - * @param {string|object|RegExp|Boolean} schemaKeyRef key, ref, pattern to match key/ref or schema object - * @return {Ajv} this for method chaining - */ - removeSchema(schemaKeyRef?: object | string | RegExp | boolean): Ajv; - /** - * Add custom format - * @param {string} name format name - * @param {string|RegExp|Function} format string is converted to RegExp; function should return boolean (true when valid) - * @return {Ajv} this for method chaining - */ - addFormat(name: string, format: FormatValidator | FormatDefinition): Ajv; - /** - * Define custom keyword - * @this Ajv - * @param {string} keyword custom keyword, should be a valid identifier, should be different from all standard, custom and macro keywords. - * @param {object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`. - * @return {Ajv} this for method chaining - */ - addKeyword(keyword: string, definition: KeywordDefinition): Ajv; - /** - * Get keyword definition - * @this Ajv - * @param {string} keyword pre-defined or custom keyword. - * @return {object|Boolean} custom keyword definition, `true` if it is a predefined keyword, `false` otherwise. - */ - getKeyword(keyword: string): object | boolean; - /** - * Remove keyword - * @this Ajv - * @param {string} keyword pre-defined or custom keyword. - * @return {Ajv} this for method chaining - */ - removeKeyword(keyword: string): Ajv; - /** - * Validate keyword - * @this Ajv - * @param {object} definition keyword definition object - * @param {boolean} throwError true to throw exception if definition is invalid - * @return {boolean} validation result - */ - validateKeyword(definition: KeywordDefinition, throwError: boolean): boolean; - /** - * Convert array of error message objects to string - * @param {Array} errors optional array of validation errors, if not passed errors from the instance are used. - * @param {object} options optional options with properties `separator` and `dataVar`. - * @return {string} human readable string with all errors descriptions - */ - errorsText(errors?: Array | null, options?: ErrorsTextOptions): string; - errors?: Array | null; - } - - interface CustomLogger { - log(...args: any[]): any; - warn(...args: any[]): any; - error(...args: any[]): any; - } - - interface ValidateFunction { - ( - data: any, - dataPath?: string, - parentData?: object | Array, - parentDataProperty?: string | number, - rootData?: object | Array - ): boolean | PromiseLike; - schema?: object | boolean; - errors?: null | Array; - refs?: object; - refVal?: Array; - root?: ValidateFunction | object; - $async?: true; - source?: object; - } - - interface Options { - $data?: boolean; - allErrors?: boolean; - verbose?: boolean; - jsonPointers?: boolean; - uniqueItems?: boolean; - unicode?: boolean; - format?: false | string; - formats?: object; - keywords?: object; - unknownFormats?: true | string[] | 'ignore'; - schemas?: Array | object; - schemaId?: '$id' | 'id' | 'auto'; - missingRefs?: true | 'ignore' | 'fail'; - extendRefs?: true | 'ignore' | 'fail'; - loadSchema?: (uri: string, cb?: (err: Error, schema: object) => void) => PromiseLike; - removeAdditional?: boolean | 'all' | 'failing'; - useDefaults?: boolean | 'empty' | 'shared'; - coerceTypes?: boolean | 'array'; - strictDefaults?: boolean | 'log'; - strictKeywords?: boolean | 'log'; - async?: boolean | string; - transpile?: string | ((code: string) => string); - meta?: boolean | object; - validateSchema?: boolean | 'log'; - addUsedSchema?: boolean; - inlineRefs?: boolean | number; - passContext?: boolean; - loopRequired?: number; - ownProperties?: boolean; - multipleOfPrecision?: boolean | number; - errorDataPath?: string, - messages?: boolean; - sourceCode?: boolean; - processCode?: (code: string) => string; - cache?: object; - logger?: CustomLogger | false; - nullable?: boolean; - serialize?: ((schema: object | boolean) => any) | false; - } - - type FormatValidator = string | RegExp | ((data: string) => boolean | PromiseLike); - type NumberFormatValidator = ((data: number) => boolean | PromiseLike); - - interface NumberFormatDefinition { - type: "number", - validate: NumberFormatValidator; - compare?: (data1: number, data2: number) => number; - async?: boolean; - } - - interface StringFormatDefinition { - type?: "string", - validate: FormatValidator; - compare?: (data1: string, data2: string) => number; - async?: boolean; - } - - type FormatDefinition = NumberFormatDefinition | StringFormatDefinition; - - interface KeywordDefinition { - type?: string | Array; - async?: boolean; - $data?: boolean; - errors?: boolean | string; - metaSchema?: object; - // schema: false makes validate not to expect schema (ValidateFunction) - schema?: boolean; - statements?: boolean; - dependencies?: Array; - modifying?: boolean; - valid?: boolean; - // one and only one of the following properties should be present - validate?: SchemaValidateFunction | ValidateFunction; - compile?: (schema: any, parentSchema: object, it: CompilationContext) => ValidateFunction; - macro?: (schema: any, parentSchema: object, it: CompilationContext) => object | boolean; - inline?: (it: CompilationContext, keyword: string, schema: any, parentSchema: object) => string; - } - - interface CompilationContext { - level: number; - dataLevel: number; - dataPathArr: string[]; - schema: any; - schemaPath: string; - baseId: string; - async: boolean; - opts: Options; - formats: { - [index: string]: FormatDefinition | undefined; - }; - keywords: { - [index: string]: KeywordDefinition | undefined; - }; - compositeRule: boolean; - validate: (schema: object) => boolean; - util: { - copy(obj: any, target?: any): any; - toHash(source: string[]): { [index: string]: true | undefined }; - equal(obj: any, target: any): boolean; - getProperty(str: string): string; - schemaHasRules(schema: object, rules: any): string; - escapeQuotes(str: string): string; - toQuotedString(str: string): string; - getData(jsonPointer: string, dataLevel: number, paths: string[]): string; - escapeJsonPointer(str: string): string; - unescapeJsonPointer(str: string): string; - escapeFragment(str: string): string; - unescapeFragment(str: string): string; - }; - self: Ajv; - } - - interface SchemaValidateFunction { - ( - schema: any, - data: any, - parentSchema?: object, - dataPath?: string, - parentData?: object | Array, - parentDataProperty?: string | number, - rootData?: object | Array - ): boolean | PromiseLike; - errors?: Array; - } - - interface ErrorsTextOptions { - separator?: string; - dataVar?: string; - } - - interface ErrorObject { - keyword: string; - dataPath: string; - schemaPath: string; - params: ErrorParameters; - // Added to validation errors of propertyNames keyword schema - propertyName?: string; - // Excluded if messages set to false. - message?: string; - // These are added with the `verbose` option. - schema?: any; - parentSchema?: object; - data?: any; - } - - type ErrorParameters = RefParams | LimitParams | AdditionalPropertiesParams | - DependenciesParams | FormatParams | ComparisonParams | - MultipleOfParams | PatternParams | RequiredParams | - TypeParams | UniqueItemsParams | CustomParams | - PatternRequiredParams | PropertyNamesParams | - IfParams | SwitchParams | NoParams | EnumParams; - - interface RefParams { - ref: string; - } - - interface LimitParams { - limit: number; - } - - interface AdditionalPropertiesParams { - additionalProperty: string; - } - - interface DependenciesParams { - property: string; - missingProperty: string; - depsCount: number; - deps: string; - } - - interface FormatParams { - format: string - } - - interface ComparisonParams { - comparison: string; - limit: number | string; - exclusive: boolean; - } - - interface MultipleOfParams { - multipleOf: number; - } - - interface PatternParams { - pattern: string; - } - - interface RequiredParams { - missingProperty: string; - } - - interface TypeParams { - type: string; - } - - interface UniqueItemsParams { - i: number; - j: number; - } - - interface CustomParams { - keyword: string; - } - - interface PatternRequiredParams { - missingPattern: string; - } - - interface PropertyNamesParams { - propertyName: string; - } - - interface IfParams { - failingKeyword: string; - } - - interface SwitchParams { - caseIndex: number; - } - - interface NoParams { } - - interface EnumParams { - allowedValues: Array; - } -} - -export = ajv; diff --git a/node_modules/ajv/lib/ajv.js b/node_modules/ajv/lib/ajv.js deleted file mode 100644 index 06a45b6..0000000 --- a/node_modules/ajv/lib/ajv.js +++ /dev/null @@ -1,506 +0,0 @@ -'use strict'; - -var compileSchema = require('./compile') - , resolve = require('./compile/resolve') - , Cache = require('./cache') - , SchemaObject = require('./compile/schema_obj') - , stableStringify = require('fast-json-stable-stringify') - , formats = require('./compile/formats') - , rules = require('./compile/rules') - , $dataMetaSchema = require('./data') - , util = require('./compile/util'); - -module.exports = Ajv; - -Ajv.prototype.validate = validate; -Ajv.prototype.compile = compile; -Ajv.prototype.addSchema = addSchema; -Ajv.prototype.addMetaSchema = addMetaSchema; -Ajv.prototype.validateSchema = validateSchema; -Ajv.prototype.getSchema = getSchema; -Ajv.prototype.removeSchema = removeSchema; -Ajv.prototype.addFormat = addFormat; -Ajv.prototype.errorsText = errorsText; - -Ajv.prototype._addSchema = _addSchema; -Ajv.prototype._compile = _compile; - -Ajv.prototype.compileAsync = require('./compile/async'); -var customKeyword = require('./keyword'); -Ajv.prototype.addKeyword = customKeyword.add; -Ajv.prototype.getKeyword = customKeyword.get; -Ajv.prototype.removeKeyword = customKeyword.remove; -Ajv.prototype.validateKeyword = customKeyword.validate; - -var errorClasses = require('./compile/error_classes'); -Ajv.ValidationError = errorClasses.Validation; -Ajv.MissingRefError = errorClasses.MissingRef; -Ajv.$dataMetaSchema = $dataMetaSchema; - -var META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema'; - -var META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults' ]; -var META_SUPPORT_DATA = ['/properties']; - -/** - * Creates validator instance. - * Usage: `Ajv(opts)` - * @param {Object} opts optional options - * @return {Object} ajv instance - */ -function Ajv(opts) { - if (!(this instanceof Ajv)) return new Ajv(opts); - opts = this._opts = util.copy(opts) || {}; - setLogger(this); - this._schemas = {}; - this._refs = {}; - this._fragments = {}; - this._formats = formats(opts.format); - - this._cache = opts.cache || new Cache; - this._loadingSchemas = {}; - this._compilations = []; - this.RULES = rules(); - this._getId = chooseGetId(opts); - - opts.loopRequired = opts.loopRequired || Infinity; - if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true; - if (opts.serialize === undefined) opts.serialize = stableStringify; - this._metaOpts = getMetaSchemaOptions(this); - - if (opts.formats) addInitialFormats(this); - if (opts.keywords) addInitialKeywords(this); - addDefaultMetaSchema(this); - if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta); - if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}}); - addInitialSchemas(this); -} - - - -/** - * Validate data using schema - * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize. - * @this Ajv - * @param {String|Object} schemaKeyRef key, ref or schema object - * @param {Any} data to be validated - * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`). - */ -function validate(schemaKeyRef, data) { - var v; - if (typeof schemaKeyRef == 'string') { - v = this.getSchema(schemaKeyRef); - if (!v) throw new Error('no schema with key or ref "' + schemaKeyRef + '"'); - } else { - var schemaObj = this._addSchema(schemaKeyRef); - v = schemaObj.validate || this._compile(schemaObj); - } - - var valid = v(data); - if (v.$async !== true) this.errors = v.errors; - return valid; -} - - -/** - * Create validating function for passed schema. - * @this Ajv - * @param {Object} schema schema object - * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords. - * @return {Function} validating function - */ -function compile(schema, _meta) { - var schemaObj = this._addSchema(schema, undefined, _meta); - return schemaObj.validate || this._compile(schemaObj); -} - - -/** - * Adds schema to the instance. - * @this Ajv - * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored. - * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`. - * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead. - * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead. - * @return {Ajv} this for method chaining - */ -function addSchema(schema, key, _skipValidation, _meta) { - if (Array.isArray(schema)){ - for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used. - * @param {Object} options optional options with properties `separator` and `dataVar`. - * @return {String} human readable string with all errors descriptions - */ -function errorsText(errors, options) { - errors = errors || this.errors; - if (!errors) return 'No errors'; - options = options || {}; - var separator = options.separator === undefined ? ', ' : options.separator; - var dataVar = options.dataVar === undefined ? 'data' : options.dataVar; - - var text = ''; - for (var i=0; i%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i; -// For the source: https://gist.github.com/dperini/729294 -// For test cases: https://mathiasbynens.be/demo/url-regex -// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983. -// var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu; -var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i; -var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i; -var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$/; -var JSON_POINTER_URI_FRAGMENT = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i; -var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/; - - -module.exports = formats; - -function formats(mode) { - mode = mode == 'full' ? 'full' : 'fast'; - return util.copy(formats[mode]); -} - - -formats.fast = { - // date: http://tools.ietf.org/html/rfc3339#section-5.6 - date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/, - // date-time: http://tools.ietf.org/html/rfc3339#section-5.6 - time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, - 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, - // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js - uri: /^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i, - 'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, - 'uri-template': URITEMPLATE, - url: URL, - // email (sources from jsen validator): - // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363 - // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation') - email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i, - hostname: HOSTNAME, - // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html - ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, - // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses - ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, - regex: regex, - // uuid: http://tools.ietf.org/html/rfc4122 - uuid: UUID, - // JSON-pointer: https://tools.ietf.org/html/rfc6901 - // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A - 'json-pointer': JSON_POINTER, - 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT, - // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00 - 'relative-json-pointer': RELATIVE_JSON_POINTER -}; - - -formats.full = { - date: date, - time: time, - 'date-time': date_time, - uri: uri, - 'uri-reference': URIREF, - 'uri-template': URITEMPLATE, - url: URL, - email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, - hostname: HOSTNAME, - ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, - ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, - regex: regex, - uuid: UUID, - 'json-pointer': JSON_POINTER, - 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT, - 'relative-json-pointer': RELATIVE_JSON_POINTER -}; - - -function isLeapYear(year) { - // https://tools.ietf.org/html/rfc3339#appendix-C - return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); -} - - -function date(str) { - // full-date from http://tools.ietf.org/html/rfc3339#section-5.6 - var matches = str.match(DATE); - if (!matches) return false; - - var year = +matches[1]; - var month = +matches[2]; - var day = +matches[3]; - - return month >= 1 && month <= 12 && day >= 1 && - day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]); -} - - -function time(str, full) { - var matches = str.match(TIME); - if (!matches) return false; - - var hour = matches[1]; - var minute = matches[2]; - var second = matches[3]; - var timeZone = matches[5]; - return ((hour <= 23 && minute <= 59 && second <= 59) || - (hour == 23 && minute == 59 && second == 60)) && - (!full || timeZone); -} - - -var DATE_TIME_SEPARATOR = /t|\s/i; -function date_time(str) { - // http://tools.ietf.org/html/rfc3339#section-5.6 - var dateTime = str.split(DATE_TIME_SEPARATOR); - return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true); -} - - -var NOT_URI_FRAGMENT = /\/|:/; -function uri(str) { - // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "." - return NOT_URI_FRAGMENT.test(str) && URI.test(str); -} - - -var Z_ANCHOR = /[^\\]\\Z/; -function regex(str) { - if (Z_ANCHOR.test(str)) return false; - try { - new RegExp(str); - return true; - } catch(e) { - return false; - } -} diff --git a/node_modules/ajv/lib/compile/index.js b/node_modules/ajv/lib/compile/index.js deleted file mode 100644 index f4d3f0d..0000000 --- a/node_modules/ajv/lib/compile/index.js +++ /dev/null @@ -1,387 +0,0 @@ -'use strict'; - -var resolve = require('./resolve') - , util = require('./util') - , errorClasses = require('./error_classes') - , stableStringify = require('fast-json-stable-stringify'); - -var validateGenerator = require('../dotjs/validate'); - -/** - * Functions below are used inside compiled validations function - */ - -var ucs2length = util.ucs2length; -var equal = require('fast-deep-equal'); - -// this error is thrown by async schemas to return validation errors via exception -var ValidationError = errorClasses.Validation; - -module.exports = compile; - - -/** - * Compiles schema to validation function - * @this Ajv - * @param {Object} schema schema object - * @param {Object} root object with information about the root schema for this schema - * @param {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution - * @param {String} baseId base ID for IDs in the schema - * @return {Function} validation function - */ -function compile(schema, root, localRefs, baseId) { - /* jshint validthis: true, evil: true */ - /* eslint no-shadow: 0 */ - var self = this - , opts = this._opts - , refVal = [ undefined ] - , refs = {} - , patterns = [] - , patternsHash = {} - , defaults = [] - , defaultsHash = {} - , customRules = []; - - root = root || { schema: schema, refVal: refVal, refs: refs }; - - var c = checkCompiling.call(this, schema, root, baseId); - var compilation = this._compilations[c.index]; - if (c.compiling) return (compilation.callValidate = callValidate); - - var formats = this._formats; - var RULES = this.RULES; - - try { - var v = localCompile(schema, root, localRefs, baseId); - compilation.validate = v; - var cv = compilation.callValidate; - if (cv) { - cv.schema = v.schema; - cv.errors = null; - cv.refs = v.refs; - cv.refVal = v.refVal; - cv.root = v.root; - cv.$async = v.$async; - if (opts.sourceCode) cv.source = v.source; - } - return v; - } finally { - endCompiling.call(this, schema, root, baseId); - } - - /* @this {*} - custom context, see passContext option */ - function callValidate() { - /* jshint validthis: true */ - var validate = compilation.validate; - var result = validate.apply(this, arguments); - callValidate.errors = validate.errors; - return result; - } - - function localCompile(_schema, _root, localRefs, baseId) { - var isRoot = !_root || (_root && _root.schema == _schema); - if (_root.schema != root.schema) - return compile.call(self, _schema, _root, localRefs, baseId); - - var $async = _schema.$async === true; - - var sourceCode = validateGenerator({ - isTop: true, - schema: _schema, - isRoot: isRoot, - baseId: baseId, - root: _root, - schemaPath: '', - errSchemaPath: '#', - errorPath: '""', - MissingRefError: errorClasses.MissingRef, - RULES: RULES, - validate: validateGenerator, - util: util, - resolve: resolve, - resolveRef: resolveRef, - usePattern: usePattern, - useDefault: useDefault, - useCustomRule: useCustomRule, - opts: opts, - formats: formats, - logger: self.logger, - self: self - }); - - sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode) - + vars(defaults, defaultCode) + vars(customRules, customRuleCode) - + sourceCode; - - if (opts.processCode) sourceCode = opts.processCode(sourceCode); - // console.log('\n\n\n *** \n', JSON.stringify(sourceCode)); - var validate; - try { - var makeValidate = new Function( - 'self', - 'RULES', - 'formats', - 'root', - 'refVal', - 'defaults', - 'customRules', - 'equal', - 'ucs2length', - 'ValidationError', - sourceCode - ); - - validate = makeValidate( - self, - RULES, - formats, - root, - refVal, - defaults, - customRules, - equal, - ucs2length, - ValidationError - ); - - refVal[0] = validate; - } catch(e) { - self.logger.error('Error compiling schema, function code:', sourceCode); - throw e; - } - - validate.schema = _schema; - validate.errors = null; - validate.refs = refs; - validate.refVal = refVal; - validate.root = isRoot ? validate : _root; - if ($async) validate.$async = true; - if (opts.sourceCode === true) { - validate.source = { - code: sourceCode, - patterns: patterns, - defaults: defaults - }; - } - - return validate; - } - - function resolveRef(baseId, ref, isRoot) { - ref = resolve.url(baseId, ref); - var refIndex = refs[ref]; - var _refVal, refCode; - if (refIndex !== undefined) { - _refVal = refVal[refIndex]; - refCode = 'refVal[' + refIndex + ']'; - return resolvedRef(_refVal, refCode); - } - if (!isRoot && root.refs) { - var rootRefId = root.refs[ref]; - if (rootRefId !== undefined) { - _refVal = root.refVal[rootRefId]; - refCode = addLocalRef(ref, _refVal); - return resolvedRef(_refVal, refCode); - } - } - - refCode = addLocalRef(ref); - var v = resolve.call(self, localCompile, root, ref); - if (v === undefined) { - var localSchema = localRefs && localRefs[ref]; - if (localSchema) { - v = resolve.inlineRef(localSchema, opts.inlineRefs) - ? localSchema - : compile.call(self, localSchema, root, localRefs, baseId); - } - } - - if (v === undefined) { - removeLocalRef(ref); - } else { - replaceLocalRef(ref, v); - return resolvedRef(v, refCode); - } - } - - function addLocalRef(ref, v) { - var refId = refVal.length; - refVal[refId] = v; - refs[ref] = refId; - return 'refVal' + refId; - } - - function removeLocalRef(ref) { - delete refs[ref]; - } - - function replaceLocalRef(ref, v) { - var refId = refs[ref]; - refVal[refId] = v; - } - - function resolvedRef(refVal, code) { - return typeof refVal == 'object' || typeof refVal == 'boolean' - ? { code: code, schema: refVal, inline: true } - : { code: code, $async: refVal && !!refVal.$async }; - } - - function usePattern(regexStr) { - var index = patternsHash[regexStr]; - if (index === undefined) { - index = patternsHash[regexStr] = patterns.length; - patterns[index] = regexStr; - } - return 'pattern' + index; - } - - function useDefault(value) { - switch (typeof value) { - case 'boolean': - case 'number': - return '' + value; - case 'string': - return util.toQuotedString(value); - case 'object': - if (value === null) return 'null'; - var valueStr = stableStringify(value); - var index = defaultsHash[valueStr]; - if (index === undefined) { - index = defaultsHash[valueStr] = defaults.length; - defaults[index] = value; - } - return 'default' + index; - } - } - - function useCustomRule(rule, schema, parentSchema, it) { - if (self._opts.validateSchema !== false) { - var deps = rule.definition.dependencies; - if (deps && !deps.every(function(keyword) { - return Object.prototype.hasOwnProperty.call(parentSchema, keyword); - })) - throw new Error('parent schema must have all required keywords: ' + deps.join(',')); - - var validateSchema = rule.definition.validateSchema; - if (validateSchema) { - var valid = validateSchema(schema); - if (!valid) { - var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors); - if (self._opts.validateSchema == 'log') self.logger.error(message); - else throw new Error(message); - } - } - } - - var compile = rule.definition.compile - , inline = rule.definition.inline - , macro = rule.definition.macro; - - var validate; - if (compile) { - validate = compile.call(self, schema, parentSchema, it); - } else if (macro) { - validate = macro.call(self, schema, parentSchema, it); - if (opts.validateSchema !== false) self.validateSchema(validate, true); - } else if (inline) { - validate = inline.call(self, it, rule.keyword, schema, parentSchema); - } else { - validate = rule.definition.validate; - if (!validate) return; - } - - if (validate === undefined) - throw new Error('custom keyword "' + rule.keyword + '"failed to compile'); - - var index = customRules.length; - customRules[index] = validate; - - return { - code: 'customRule' + index, - validate: validate - }; - } -} - - -/** - * Checks if the schema is currently compiled - * @this Ajv - * @param {Object} schema schema to compile - * @param {Object} root root object - * @param {String} baseId base schema ID - * @return {Object} object with properties "index" (compilation index) and "compiling" (boolean) - */ -function checkCompiling(schema, root, baseId) { - /* jshint validthis: true */ - var index = compIndex.call(this, schema, root, baseId); - if (index >= 0) return { index: index, compiling: true }; - index = this._compilations.length; - this._compilations[index] = { - schema: schema, - root: root, - baseId: baseId - }; - return { index: index, compiling: false }; -} - - -/** - * Removes the schema from the currently compiled list - * @this Ajv - * @param {Object} schema schema to compile - * @param {Object} root root object - * @param {String} baseId base schema ID - */ -function endCompiling(schema, root, baseId) { - /* jshint validthis: true */ - var i = compIndex.call(this, schema, root, baseId); - if (i >= 0) this._compilations.splice(i, 1); -} - - -/** - * Index of schema compilation in the currently compiled list - * @this Ajv - * @param {Object} schema schema to compile - * @param {Object} root root object - * @param {String} baseId base schema ID - * @return {Integer} compilation index - */ -function compIndex(schema, root, baseId) { - /* jshint validthis: true */ - for (var i=0; i= 0xD800 && value <= 0xDBFF && pos < len) { - // high surrogate, and there is a next character - value = str.charCodeAt(pos); - if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate - } - } - return length; -}; diff --git a/node_modules/ajv/lib/compile/util.js b/node_modules/ajv/lib/compile/util.js deleted file mode 100644 index 0efa001..0000000 --- a/node_modules/ajv/lib/compile/util.js +++ /dev/null @@ -1,274 +0,0 @@ -'use strict'; - - -module.exports = { - copy: copy, - checkDataType: checkDataType, - checkDataTypes: checkDataTypes, - coerceToTypes: coerceToTypes, - toHash: toHash, - getProperty: getProperty, - escapeQuotes: escapeQuotes, - equal: require('fast-deep-equal'), - ucs2length: require('./ucs2length'), - varOccurences: varOccurences, - varReplace: varReplace, - cleanUpCode: cleanUpCode, - finalCleanUpCode: finalCleanUpCode, - schemaHasRules: schemaHasRules, - schemaHasRulesExcept: schemaHasRulesExcept, - schemaUnknownRules: schemaUnknownRules, - toQuotedString: toQuotedString, - getPathExpr: getPathExpr, - getPath: getPath, - getData: getData, - unescapeFragment: unescapeFragment, - unescapeJsonPointer: unescapeJsonPointer, - escapeFragment: escapeFragment, - escapeJsonPointer: escapeJsonPointer -}; - - -function copy(o, to) { - to = to || {}; - for (var key in o) to[key] = o[key]; - return to; -} - - -function checkDataType(dataType, data, negate) { - var EQUAL = negate ? ' !== ' : ' === ' - , AND = negate ? ' || ' : ' && ' - , OK = negate ? '!' : '' - , NOT = negate ? '' : '!'; - switch (dataType) { - case 'null': return data + EQUAL + 'null'; - case 'array': return OK + 'Array.isArray(' + data + ')'; - case 'object': return '(' + OK + data + AND + - 'typeof ' + data + EQUAL + '"object"' + AND + - NOT + 'Array.isArray(' + data + '))'; - case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND + - NOT + '(' + data + ' % 1)' + - AND + data + EQUAL + data + ')'; - default: return 'typeof ' + data + EQUAL + '"' + dataType + '"'; - } -} - - -function checkDataTypes(dataTypes, data) { - switch (dataTypes.length) { - case 1: return checkDataType(dataTypes[0], data, true); - default: - var code = ''; - var types = toHash(dataTypes); - if (types.array && types.object) { - code = types.null ? '(': '(!' + data + ' || '; - code += 'typeof ' + data + ' !== "object")'; - delete types.null; - delete types.array; - delete types.object; - } - if (types.number) delete types.integer; - for (var t in types) - code += (code ? ' && ' : '' ) + checkDataType(t, data, true); - - return code; - } -} - - -var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]); -function coerceToTypes(optionCoerceTypes, dataTypes) { - if (Array.isArray(dataTypes)) { - var types = []; - for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); - return paths[lvl - up]; - } - - if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); - data = 'data' + ((lvl - up) || ''); - if (!jsonPointer) return data; - } - - var expr = data; - var segments = jsonPointer.split('/'); - for (var i=0; i' - , $notOp = $isMax ? '>' : '<' - , $errorKeyword = undefined; -}} - -{{? $isDataExcl }} - {{ - var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr) - , $exclusive = 'exclusive' + $lvl - , $exclType = 'exclType' + $lvl - , $exclIsNumber = 'exclIsNumber' + $lvl - , $opExpr = 'op' + $lvl - , $opStr = '\' + ' + $opExpr + ' + \''; - }} - var schemaExcl{{=$lvl}} = {{=$schemaValueExcl}}; - {{ $schemaValueExcl = 'schemaExcl' + $lvl; }} - - var {{=$exclusive}}; - var {{=$exclType}} = typeof {{=$schemaValueExcl}}; - if ({{=$exclType}} != 'boolean' && {{=$exclType}} != 'undefined' && {{=$exclType}} != 'number') { - {{ var $errorKeyword = $exclusiveKeyword; }} - {{# def.error:'_exclusiveLimit' }} - } else if ({{# def.$dataNotType:'number' }} - {{=$exclType}} == 'number' - ? ( - ({{=$exclusive}} = {{=$schemaValue}} === undefined || {{=$schemaValueExcl}} {{=$op}}= {{=$schemaValue}}) - ? {{=$data}} {{=$notOp}}= {{=$schemaValueExcl}} - : {{=$data}} {{=$notOp}} {{=$schemaValue}} - ) - : ( - ({{=$exclusive}} = {{=$schemaValueExcl}} === true) - ? {{=$data}} {{=$notOp}}= {{=$schemaValue}} - : {{=$data}} {{=$notOp}} {{=$schemaValue}} - ) - || {{=$data}} !== {{=$data}}) { - var op{{=$lvl}} = {{=$exclusive}} ? '{{=$op}}' : '{{=$op}}='; - {{ - if ($schema === undefined) { - $errorKeyword = $exclusiveKeyword; - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; - $schemaValue = $schemaValueExcl; - $isData = $isDataExcl; - } - }} -{{??}} - {{ - var $exclIsNumber = typeof $schemaExcl == 'number' - , $opStr = $op; /*used in error*/ - }} - - {{? $exclIsNumber && $isData }} - {{ var $opExpr = '\'' + $opStr + '\''; /*used in error*/ }} - if ({{# def.$dataNotType:'number' }} - ( {{=$schemaValue}} === undefined - || {{=$schemaExcl}} {{=$op}}= {{=$schemaValue}} - ? {{=$data}} {{=$notOp}}= {{=$schemaExcl}} - : {{=$data}} {{=$notOp}} {{=$schemaValue}} ) - || {{=$data}} !== {{=$data}}) { - {{??}} - {{ - if ($exclIsNumber && $schema === undefined) { - {{# def.setExclusiveLimit }} - $schemaValue = $schemaExcl; - $notOp += '='; - } else { - if ($exclIsNumber) - $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema); - - if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) { - {{# def.setExclusiveLimit }} - $notOp += '='; - } else { - $exclusive = false; - $opStr += '='; - } - } - - var $opExpr = '\'' + $opStr + '\''; /*used in error*/ - }} - - if ({{# def.$dataNotType:'number' }} - {{=$data}} {{=$notOp}} {{=$schemaValue}} - || {{=$data}} !== {{=$data}}) { - {{?}} -{{?}} - {{ $errorKeyword = $errorKeyword || $keyword; }} - {{# def.error:'_limit' }} - } {{? $breakOnError }} else { {{?}} diff --git a/node_modules/ajv/lib/dot/_limitItems.jst b/node_modules/ajv/lib/dot/_limitItems.jst deleted file mode 100644 index a3e078e..0000000 --- a/node_modules/ajv/lib/dot/_limitItems.jst +++ /dev/null @@ -1,10 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.$data }} - -{{ var $op = $keyword == 'maxItems' ? '>' : '<'; }} -if ({{# def.$dataNotType:'number' }} {{=$data}}.length {{=$op}} {{=$schemaValue}}) { - {{ var $errorKeyword = $keyword; }} - {{# def.error:'_limitItems' }} -} {{? $breakOnError }} else { {{?}} diff --git a/node_modules/ajv/lib/dot/_limitLength.jst b/node_modules/ajv/lib/dot/_limitLength.jst deleted file mode 100644 index cfc8dbb..0000000 --- a/node_modules/ajv/lib/dot/_limitLength.jst +++ /dev/null @@ -1,10 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.$data }} - -{{ var $op = $keyword == 'maxLength' ? '>' : '<'; }} -if ({{# def.$dataNotType:'number' }} {{# def.strLength }} {{=$op}} {{=$schemaValue}}) { - {{ var $errorKeyword = $keyword; }} - {{# def.error:'_limitLength' }} -} {{? $breakOnError }} else { {{?}} diff --git a/node_modules/ajv/lib/dot/_limitProperties.jst b/node_modules/ajv/lib/dot/_limitProperties.jst deleted file mode 100644 index da7ea77..0000000 --- a/node_modules/ajv/lib/dot/_limitProperties.jst +++ /dev/null @@ -1,10 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.$data }} - -{{ var $op = $keyword == 'maxProperties' ? '>' : '<'; }} -if ({{# def.$dataNotType:'number' }} Object.keys({{=$data}}).length {{=$op}} {{=$schemaValue}}) { - {{ var $errorKeyword = $keyword; }} - {{# def.error:'_limitProperties' }} -} {{? $breakOnError }} else { {{?}} diff --git a/node_modules/ajv/lib/dot/allOf.jst b/node_modules/ajv/lib/dot/allOf.jst deleted file mode 100644 index 4c28363..0000000 --- a/node_modules/ajv/lib/dot/allOf.jst +++ /dev/null @@ -1,34 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.setupNextLevel }} - -{{ - var $currentBaseId = $it.baseId - , $allSchemasEmpty = true; -}} - -{{~ $schema:$sch:$i }} - {{? {{# def.nonEmptySchema:$sch }} }} - {{ - $allSchemasEmpty = false; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - }} - - {{# def.insertSubschemaCode }} - - {{# def.ifResultValid }} - {{?}} -{{~}} - -{{? $breakOnError }} - {{? $allSchemasEmpty }} - if (true) { - {{??}} - {{= $closingBraces.slice(0,-1) }} - {{?}} -{{?}} - -{{# def.cleanUp }} diff --git a/node_modules/ajv/lib/dot/anyOf.jst b/node_modules/ajv/lib/dot/anyOf.jst deleted file mode 100644 index 086cf2b..0000000 --- a/node_modules/ajv/lib/dot/anyOf.jst +++ /dev/null @@ -1,48 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.setupNextLevel }} - -{{ - var $noEmptySchema = $schema.every(function($sch) { - return {{# def.nonEmptySchema:$sch }}; - }); -}} -{{? $noEmptySchema }} - {{ var $currentBaseId = $it.baseId; }} - var {{=$errs}} = errors; - var {{=$valid}} = false; - - {{# def.setCompositeRule }} - - {{~ $schema:$sch:$i }} - {{ - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - }} - - {{# def.insertSubschemaCode }} - - {{=$valid}} = {{=$valid}} || {{=$nextValid}}; - - if (!{{=$valid}}) { - {{ $closingBraces += '}'; }} - {{~}} - - {{# def.resetCompositeRule }} - - {{= $closingBraces }} - - if (!{{=$valid}}) { - {{# def.extraError:'anyOf' }} - } else { - {{# def.resetErrors }} - {{? it.opts.allErrors }} } {{?}} - - {{# def.cleanUp }} -{{??}} - {{? $breakOnError }} - if (true) { - {{?}} -{{?}} diff --git a/node_modules/ajv/lib/dot/coerce.def b/node_modules/ajv/lib/dot/coerce.def deleted file mode 100644 index 86e0e18..0000000 --- a/node_modules/ajv/lib/dot/coerce.def +++ /dev/null @@ -1,61 +0,0 @@ -{{## def.coerceType: - {{ - var $dataType = 'dataType' + $lvl - , $coerced = 'coerced' + $lvl; - }} - var {{=$dataType}} = typeof {{=$data}}; - {{? it.opts.coerceTypes == 'array'}} - if ({{=$dataType}} == 'object' && Array.isArray({{=$data}})) {{=$dataType}} = 'array'; - {{?}} - - var {{=$coerced}} = undefined; - - {{ var $bracesCoercion = ''; }} - {{~ $coerceToTypes:$type:$i }} - {{? $i }} - if ({{=$coerced}} === undefined) { - {{ $bracesCoercion += '}'; }} - {{?}} - - {{? it.opts.coerceTypes == 'array' && $type != 'array' }} - if ({{=$dataType}} == 'array' && {{=$data}}.length == 1) { - {{=$coerced}} = {{=$data}} = {{=$data}}[0]; - {{=$dataType}} = typeof {{=$data}}; - /*if ({{=$dataType}} == 'object' && Array.isArray({{=$data}})) {{=$dataType}} = 'array';*/ - } - {{?}} - - {{? $type == 'string' }} - if ({{=$dataType}} == 'number' || {{=$dataType}} == 'boolean') - {{=$coerced}} = '' + {{=$data}}; - else if ({{=$data}} === null) {{=$coerced}} = ''; - {{?? $type == 'number' || $type == 'integer' }} - if ({{=$dataType}} == 'boolean' || {{=$data}} === null - || ({{=$dataType}} == 'string' && {{=$data}} && {{=$data}} == +{{=$data}} - {{? $type == 'integer' }} && !({{=$data}} % 1){{?}})) - {{=$coerced}} = +{{=$data}}; - {{?? $type == 'boolean' }} - if ({{=$data}} === 'false' || {{=$data}} === 0 || {{=$data}} === null) - {{=$coerced}} = false; - else if ({{=$data}} === 'true' || {{=$data}} === 1) - {{=$coerced}} = true; - {{?? $type == 'null' }} - if ({{=$data}} === '' || {{=$data}} === 0 || {{=$data}} === false) - {{=$coerced}} = null; - {{?? it.opts.coerceTypes == 'array' && $type == 'array' }} - if ({{=$dataType}} == 'string' || {{=$dataType}} == 'number' || {{=$dataType}} == 'boolean' || {{=$data}} == null) - {{=$coerced}} = [{{=$data}}]; - {{?}} - {{~}} - - {{= $bracesCoercion }} - - if ({{=$coerced}} === undefined) { - {{# def.error:'type' }} - } else { - {{# def.setParentData }} - {{=$data}} = {{=$coerced}}; - {{? !$dataLvl }}if ({{=$parentData}} !== undefined){{?}} - {{=$parentData}}[{{=$parentDataProperty}}] = {{=$coerced}}; - } -#}} diff --git a/node_modules/ajv/lib/dot/comment.jst b/node_modules/ajv/lib/dot/comment.jst deleted file mode 100644 index f959150..0000000 --- a/node_modules/ajv/lib/dot/comment.jst +++ /dev/null @@ -1,9 +0,0 @@ -{{# def.definitions }} -{{# def.setupKeyword }} - -{{ var $comment = it.util.toQuotedString($schema); }} -{{? it.opts.$comment === true }} - console.log({{=$comment}}); -{{?? typeof it.opts.$comment == 'function' }} - self._opts.$comment({{=$comment}}, {{=it.util.toQuotedString($errSchemaPath)}}, validate.root.schema); -{{?}} diff --git a/node_modules/ajv/lib/dot/const.jst b/node_modules/ajv/lib/dot/const.jst deleted file mode 100644 index 2aa2298..0000000 --- a/node_modules/ajv/lib/dot/const.jst +++ /dev/null @@ -1,11 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.$data }} - -{{? !$isData }} - var schema{{=$lvl}} = validate.schema{{=$schemaPath}}; -{{?}} -var {{=$valid}} = equal({{=$data}}, schema{{=$lvl}}); -{{# def.checkError:'const' }} -{{? $breakOnError }} else { {{?}} diff --git a/node_modules/ajv/lib/dot/contains.jst b/node_modules/ajv/lib/dot/contains.jst deleted file mode 100644 index 925d2c8..0000000 --- a/node_modules/ajv/lib/dot/contains.jst +++ /dev/null @@ -1,57 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.setupNextLevel }} - - -{{ - var $idx = 'i' + $lvl - , $dataNxt = $it.dataLevel = it.dataLevel + 1 - , $nextData = 'data' + $dataNxt - , $currentBaseId = it.baseId - , $nonEmptySchema = {{# def.nonEmptySchema:$schema }}; -}} - -var {{=$errs}} = errors; -var {{=$valid}}; - -{{? $nonEmptySchema }} - {{# def.setCompositeRule }} - - {{ - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - }} - - var {{=$nextValid}} = false; - - for (var {{=$idx}} = 0; {{=$idx}} < {{=$data}}.length; {{=$idx}}++) { - {{ - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - }} - - {{# def.generateSubschemaCode }} - {{# def.optimizeValidate }} - - if ({{=$nextValid}}) break; - } - - {{# def.resetCompositeRule }} - {{= $closingBraces }} - - if (!{{=$nextValid}}) { -{{??}} - if ({{=$data}}.length == 0) { -{{?}} - - {{# def.error:'contains' }} - } else { - {{? $nonEmptySchema }} - {{# def.resetErrors }} - {{?}} - {{? it.opts.allErrors }} } {{?}} - -{{# def.cleanUp }} diff --git a/node_modules/ajv/lib/dot/custom.jst b/node_modules/ajv/lib/dot/custom.jst deleted file mode 100644 index d30588f..0000000 --- a/node_modules/ajv/lib/dot/custom.jst +++ /dev/null @@ -1,191 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.$data }} - -{{ - var $rule = this - , $definition = 'definition' + $lvl - , $rDef = $rule.definition - , $closingBraces = ''; - var $validate = $rDef.validate; - var $compile, $inline, $macro, $ruleValidate, $validateCode; -}} - -{{? $isData && $rDef.$data }} - {{ - $validateCode = 'keywordValidate' + $lvl; - var $validateSchema = $rDef.validateSchema; - }} - var {{=$definition}} = RULES.custom['{{=$keyword}}'].definition; - var {{=$validateCode}} = {{=$definition}}.validate; -{{??}} - {{ - $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it); - if (!$ruleValidate) return; - $schemaValue = 'validate.schema' + $schemaPath; - $validateCode = $ruleValidate.code; - $compile = $rDef.compile; - $inline = $rDef.inline; - $macro = $rDef.macro; - }} -{{?}} - -{{ - var $ruleErrs = $validateCode + '.errors' - , $i = 'i' + $lvl - , $ruleErr = 'ruleErr' + $lvl - , $asyncKeyword = $rDef.async; - - if ($asyncKeyword && !it.async) - throw new Error('async keyword in sync schema'); -}} - - -{{? !($inline || $macro) }}{{=$ruleErrs}} = null;{{?}} -var {{=$errs}} = errors; -var {{=$valid}}; - -{{## def.callRuleValidate: - {{=$validateCode}}.call( - {{? it.opts.passContext }}this{{??}}self{{?}} - {{? $compile || $rDef.schema === false }} - , {{=$data}} - {{??}} - , {{=$schemaValue}} - , {{=$data}} - , validate.schema{{=it.schemaPath}} - {{?}} - , {{# def.dataPath }} - {{# def.passParentData }} - , rootData - ) -#}} - -{{## def.extendErrors:_inline: - for (var {{=$i}}={{=$errs}}; {{=$i}} 0 - : it.util.schemaHasRules(_schema, it.RULES.all)) -#}} - - -{{## def.strLength: - {{? it.opts.unicode === false }} - {{=$data}}.length - {{??}} - ucs2length({{=$data}}) - {{?}} -#}} - - -{{## def.willOptimize: - it.util.varOccurences($code, $nextData) < 2 -#}} - - -{{## def.generateSubschemaCode: - {{ - var $code = it.validate($it); - $it.baseId = $currentBaseId; - }} -#}} - - -{{## def.insertSubschemaCode: - {{= it.validate($it) }} - {{ $it.baseId = $currentBaseId; }} -#}} - - -{{## def._optimizeValidate: - it.util.varReplace($code, $nextData, $passData) -#}} - - -{{## def.optimizeValidate: - {{? {{# def.willOptimize}} }} - {{= {{# def._optimizeValidate }} }} - {{??}} - var {{=$nextData}} = {{=$passData}}; - {{= $code }} - {{?}} -#}} - - -{{## def.cleanUp: {{ out = it.util.cleanUpCode(out); }} #}} - - -{{## def.finalCleanUp: {{ out = it.util.finalCleanUpCode(out, $async); }} #}} - - -{{## def.$data: - {{ - var $isData = it.opts.$data && $schema && $schema.$data - , $schemaValue; - }} - {{? $isData }} - var schema{{=$lvl}} = {{= it.util.getData($schema.$data, $dataLvl, it.dataPathArr) }}; - {{ $schemaValue = 'schema' + $lvl; }} - {{??}} - {{ $schemaValue = $schema; }} - {{?}} -#}} - - -{{## def.$dataNotType:_type: - {{?$isData}} ({{=$schemaValue}} !== undefined && typeof {{=$schemaValue}} != _type) || {{?}} -#}} - - -{{## def.check$dataIsArray: - if (schema{{=$lvl}} === undefined) {{=$valid}} = true; - else if (!Array.isArray(schema{{=$lvl}})) {{=$valid}} = false; - else { -#}} - - -{{## def.beginDefOut: - {{ - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - }} -#}} - - -{{## def.storeDefOut:_variable: - {{ - var _variable = out; - out = $$outStack.pop(); - }} -#}} - - -{{## def.dataPath:(dataPath || ''){{? it.errorPath != '""'}} + {{= it.errorPath }}{{?}}#}} - -{{## def.setParentData: - {{ - var $parentData = $dataLvl ? 'data' + (($dataLvl-1)||'') : 'parentData' - , $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; - }} -#}} - -{{## def.passParentData: - {{# def.setParentData }} - , {{= $parentData }} - , {{= $parentDataProperty }} -#}} - - -{{## def.iterateProperties: - {{? $ownProperties }} - {{=$dataProperties}} = {{=$dataProperties}} || Object.keys({{=$data}}); - for (var {{=$idx}}=0; {{=$idx}}<{{=$dataProperties}}.length; {{=$idx}}++) { - var {{=$key}} = {{=$dataProperties}}[{{=$idx}}]; - {{??}} - for (var {{=$key}} in {{=$data}}) { - {{?}} -#}} - - -{{## def.noPropertyInData: - {{=$useData}} === undefined - {{? $ownProperties }} - || !{{# def.isOwnProperty }} - {{?}} -#}} - - -{{## def.isOwnProperty: - Object.prototype.hasOwnProperty.call({{=$data}}, '{{=it.util.escapeQuotes($propertyKey)}}') -#}} diff --git a/node_modules/ajv/lib/dot/dependencies.jst b/node_modules/ajv/lib/dot/dependencies.jst deleted file mode 100644 index c41f334..0000000 --- a/node_modules/ajv/lib/dot/dependencies.jst +++ /dev/null @@ -1,80 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.missing }} -{{# def.setupKeyword }} -{{# def.setupNextLevel }} - - -{{## def.propertyInData: - {{=$data}}{{= it.util.getProperty($property) }} !== undefined - {{? $ownProperties }} - && Object.prototype.hasOwnProperty.call({{=$data}}, '{{=it.util.escapeQuotes($property)}}') - {{?}} -#}} - - -{{ - var $schemaDeps = {} - , $propertyDeps = {} - , $ownProperties = it.opts.ownProperties; - - for ($property in $schema) { - var $sch = $schema[$property]; - var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps; - $deps[$property] = $sch; - } -}} - -var {{=$errs}} = errors; - -{{ var $currentErrorPath = it.errorPath; }} - -var missing{{=$lvl}}; -{{ for (var $property in $propertyDeps) { }} - {{ $deps = $propertyDeps[$property]; }} - {{? $deps.length }} - if ({{# def.propertyInData }} - {{? $breakOnError }} - && ({{# def.checkMissingProperty:$deps }})) { - {{# def.errorMissingProperty:'dependencies' }} - {{??}} - ) { - {{~ $deps:$propertyKey }} - {{# def.allErrorsMissingProperty:'dependencies' }} - {{~}} - {{?}} - } {{# def.elseIfValid }} - {{?}} -{{ } }} - -{{ - it.errorPath = $currentErrorPath; - var $currentBaseId = $it.baseId; -}} - - -{{ for (var $property in $schemaDeps) { }} - {{ var $sch = $schemaDeps[$property]; }} - {{? {{# def.nonEmptySchema:$sch }} }} - {{=$nextValid}} = true; - - if ({{# def.propertyInData }}) { - {{ - $it.schema = $sch; - $it.schemaPath = $schemaPath + it.util.getProperty($property); - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property); - }} - - {{# def.insertSubschemaCode }} - } - - {{# def.ifResultValid }} - {{?}} -{{ } }} - -{{? $breakOnError }} - {{= $closingBraces }} - if ({{=$errs}} == errors) { -{{?}} - -{{# def.cleanUp }} diff --git a/node_modules/ajv/lib/dot/enum.jst b/node_modules/ajv/lib/dot/enum.jst deleted file mode 100644 index 357c2e8..0000000 --- a/node_modules/ajv/lib/dot/enum.jst +++ /dev/null @@ -1,30 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.$data }} - -{{ - var $i = 'i' + $lvl - , $vSchema = 'schema' + $lvl; -}} - -{{? !$isData }} - var {{=$vSchema}} = validate.schema{{=$schemaPath}}; -{{?}} -var {{=$valid}}; - -{{?$isData}}{{# def.check$dataIsArray }}{{?}} - -{{=$valid}} = false; - -for (var {{=$i}}=0; {{=$i}}<{{=$vSchema}}.length; {{=$i}}++) - if (equal({{=$data}}, {{=$vSchema}}[{{=$i}}])) { - {{=$valid}} = true; - break; - } - -{{? $isData }} } {{?}} - -{{# def.checkError:'enum' }} - -{{? $breakOnError }} else { {{?}} diff --git a/node_modules/ajv/lib/dot/errors.def b/node_modules/ajv/lib/dot/errors.def deleted file mode 100644 index 5c5752c..0000000 --- a/node_modules/ajv/lib/dot/errors.def +++ /dev/null @@ -1,194 +0,0 @@ -{{# def.definitions }} - -{{## def._error:_rule: - {{ 'istanbul ignore else'; }} - {{? it.createErrors !== false }} - { - keyword: '{{= $errorKeyword || _rule }}' - , dataPath: (dataPath || '') + {{= it.errorPath }} - , schemaPath: {{=it.util.toQuotedString($errSchemaPath)}} - , params: {{# def._errorParams[_rule] }} - {{? it.opts.messages !== false }} - , message: {{# def._errorMessages[_rule] }} - {{?}} - {{? it.opts.verbose }} - , schema: {{# def._errorSchemas[_rule] }} - , parentSchema: validate.schema{{=it.schemaPath}} - , data: {{=$data}} - {{?}} - } - {{??}} - {} - {{?}} -#}} - - -{{## def._addError:_rule: - if (vErrors === null) vErrors = [err]; - else vErrors.push(err); - errors++; -#}} - - -{{## def.addError:_rule: - var err = {{# def._error:_rule }}; - {{# def._addError:_rule }} -#}} - - -{{## def.error:_rule: - {{# def.beginDefOut}} - {{# def._error:_rule }} - {{# def.storeDefOut:__err }} - - {{? !it.compositeRule && $breakOnError }} - {{ 'istanbul ignore if'; }} - {{? it.async }} - throw new ValidationError([{{=__err}}]); - {{??}} - validate.errors = [{{=__err}}]; - return false; - {{?}} - {{??}} - var err = {{=__err}}; - {{# def._addError:_rule }} - {{?}} -#}} - - -{{## def.extraError:_rule: - {{# def.addError:_rule}} - {{? !it.compositeRule && $breakOnError }} - {{ 'istanbul ignore if'; }} - {{? it.async }} - throw new ValidationError(vErrors); - {{??}} - validate.errors = vErrors; - return false; - {{?}} - {{?}} -#}} - - -{{## def.checkError:_rule: - if (!{{=$valid}}) { - {{# def.error:_rule }} - } -#}} - - -{{## def.resetErrors: - errors = {{=$errs}}; - if (vErrors !== null) { - if ({{=$errs}}) vErrors.length = {{=$errs}}; - else vErrors = null; - } -#}} - - -{{## def.concatSchema:{{?$isData}}' + {{=$schemaValue}} + '{{??}}{{=$schema}}{{?}}#}} -{{## def.appendSchema:{{?$isData}}' + {{=$schemaValue}}{{??}}{{=$schemaValue}}'{{?}}#}} -{{## def.concatSchemaEQ:{{?$isData}}' + {{=$schemaValue}} + '{{??}}{{=it.util.escapeQuotes($schema)}}{{?}}#}} - -{{## def._errorMessages = { - 'false schema': "'boolean schema is false'", - $ref: "'can\\\'t resolve reference {{=it.util.escapeQuotes($schema)}}'", - additionalItems: "'should NOT have more than {{=$schema.length}} items'", - additionalProperties: "'{{? it.opts._errorDataPathProperty }}is an invalid additional property{{??}}should NOT have additional properties{{?}}'", - anyOf: "'should match some schema in anyOf'", - const: "'should be equal to constant'", - contains: "'should contain a valid item'", - dependencies: "'should have {{? $deps.length == 1 }}property {{= it.util.escapeQuotes($deps[0]) }}{{??}}properties {{= it.util.escapeQuotes($deps.join(\", \")) }}{{?}} when property {{= it.util.escapeQuotes($property) }} is present'", - 'enum': "'should be equal to one of the allowed values'", - format: "'should match format \"{{#def.concatSchemaEQ}}\"'", - 'if': "'should match \"' + {{=$ifClause}} + '\" schema'", - _limit: "'should be {{=$opStr}} {{#def.appendSchema}}", - _exclusiveLimit: "'{{=$exclusiveKeyword}} should be boolean'", - _limitItems: "'should NOT have {{?$keyword=='maxItems'}}more{{??}}fewer{{?}} than {{#def.concatSchema}} items'", - _limitLength: "'should NOT be {{?$keyword=='maxLength'}}longer{{??}}shorter{{?}} than {{#def.concatSchema}} characters'", - _limitProperties:"'should NOT have {{?$keyword=='maxProperties'}}more{{??}}fewer{{?}} than {{#def.concatSchema}} properties'", - multipleOf: "'should be multiple of {{#def.appendSchema}}", - not: "'should NOT be valid'", - oneOf: "'should match exactly one schema in oneOf'", - pattern: "'should match pattern \"{{#def.concatSchemaEQ}}\"'", - propertyNames: "'property name \\'{{=$invalidName}}\\' is invalid'", - required: "'{{? it.opts._errorDataPathProperty }}is a required property{{??}}should have required property \\'{{=$missingProperty}}\\'{{?}}'", - type: "'should be {{? $typeIsArray }}{{= $typeSchema.join(\",\") }}{{??}}{{=$typeSchema}}{{?}}'", - uniqueItems: "'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)'", - custom: "'should pass \"{{=$rule.keyword}}\" keyword validation'", - patternRequired: "'should have property matching pattern \\'{{=$missingPattern}}\\''", - switch: "'should pass \"switch\" keyword validation'", - _formatLimit: "'should be {{=$opStr}} \"{{#def.concatSchemaEQ}}\"'", - _formatExclusiveLimit: "'{{=$exclusiveKeyword}} should be boolean'" -} #}} - - -{{## def.schemaRefOrVal: {{?$isData}}validate.schema{{=$schemaPath}}{{??}}{{=$schema}}{{?}} #}} -{{## def.schemaRefOrQS: {{?$isData}}validate.schema{{=$schemaPath}}{{??}}{{=it.util.toQuotedString($schema)}}{{?}} #}} - -{{## def._errorSchemas = { - 'false schema': "false", - $ref: "{{=it.util.toQuotedString($schema)}}", - additionalItems: "false", - additionalProperties: "false", - anyOf: "validate.schema{{=$schemaPath}}", - const: "validate.schema{{=$schemaPath}}", - contains: "validate.schema{{=$schemaPath}}", - dependencies: "validate.schema{{=$schemaPath}}", - 'enum': "validate.schema{{=$schemaPath}}", - format: "{{#def.schemaRefOrQS}}", - 'if': "validate.schema{{=$schemaPath}}", - _limit: "{{#def.schemaRefOrVal}}", - _exclusiveLimit: "validate.schema{{=$schemaPath}}", - _limitItems: "{{#def.schemaRefOrVal}}", - _limitLength: "{{#def.schemaRefOrVal}}", - _limitProperties:"{{#def.schemaRefOrVal}}", - multipleOf: "{{#def.schemaRefOrVal}}", - not: "validate.schema{{=$schemaPath}}", - oneOf: "validate.schema{{=$schemaPath}}", - pattern: "{{#def.schemaRefOrQS}}", - propertyNames: "validate.schema{{=$schemaPath}}", - required: "validate.schema{{=$schemaPath}}", - type: "validate.schema{{=$schemaPath}}", - uniqueItems: "{{#def.schemaRefOrVal}}", - custom: "validate.schema{{=$schemaPath}}", - patternRequired: "validate.schema{{=$schemaPath}}", - switch: "validate.schema{{=$schemaPath}}", - _formatLimit: "{{#def.schemaRefOrQS}}", - _formatExclusiveLimit: "validate.schema{{=$schemaPath}}" -} #}} - - -{{## def.schemaValueQS: {{?$isData}}{{=$schemaValue}}{{??}}{{=it.util.toQuotedString($schema)}}{{?}} #}} - -{{## def._errorParams = { - 'false schema': "{}", - $ref: "{ ref: '{{=it.util.escapeQuotes($schema)}}' }", - additionalItems: "{ limit: {{=$schema.length}} }", - additionalProperties: "{ additionalProperty: '{{=$additionalProperty}}' }", - anyOf: "{}", - const: "{ allowedValue: schema{{=$lvl}} }", - contains: "{}", - dependencies: "{ property: '{{= it.util.escapeQuotes($property) }}', missingProperty: '{{=$missingProperty}}', depsCount: {{=$deps.length}}, deps: '{{= it.util.escapeQuotes($deps.length==1 ? $deps[0] : $deps.join(\", \")) }}' }", - 'enum': "{ allowedValues: schema{{=$lvl}} }", - format: "{ format: {{#def.schemaValueQS}} }", - 'if': "{ failingKeyword: {{=$ifClause}} }", - _limit: "{ comparison: {{=$opExpr}}, limit: {{=$schemaValue}}, exclusive: {{=$exclusive}} }", - _exclusiveLimit: "{}", - _limitItems: "{ limit: {{=$schemaValue}} }", - _limitLength: "{ limit: {{=$schemaValue}} }", - _limitProperties:"{ limit: {{=$schemaValue}} }", - multipleOf: "{ multipleOf: {{=$schemaValue}} }", - not: "{}", - oneOf: "{ passingSchemas: {{=$passingSchemas}} }", - pattern: "{ pattern: {{#def.schemaValueQS}} }", - propertyNames: "{ propertyName: '{{=$invalidName}}' }", - required: "{ missingProperty: '{{=$missingProperty}}' }", - type: "{ type: '{{? $typeIsArray }}{{= $typeSchema.join(\",\") }}{{??}}{{=$typeSchema}}{{?}}' }", - uniqueItems: "{ i: i, j: j }", - custom: "{ keyword: '{{=$rule.keyword}}' }", - patternRequired: "{ missingPattern: '{{=$missingPattern}}' }", - switch: "{ caseIndex: {{=$caseIndex}} }", - _formatLimit: "{ comparison: {{=$opExpr}}, limit: {{#def.schemaValueQS}}, exclusive: {{=$exclusive}} }", - _formatExclusiveLimit: "{}" -} #}} diff --git a/node_modules/ajv/lib/dot/format.jst b/node_modules/ajv/lib/dot/format.jst deleted file mode 100644 index 37f14da..0000000 --- a/node_modules/ajv/lib/dot/format.jst +++ /dev/null @@ -1,106 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} - -{{## def.skipFormat: - {{? $breakOnError }} if (true) { {{?}} - {{ return out; }} -#}} - -{{? it.opts.format === false }}{{# def.skipFormat }}{{?}} - - -{{# def.$data }} - - -{{## def.$dataCheckFormat: - {{# def.$dataNotType:'string' }} - ({{? $unknownFormats != 'ignore' }} - ({{=$schemaValue}} && !{{=$format}} - {{? $allowUnknown }} - && self._opts.unknownFormats.indexOf({{=$schemaValue}}) == -1 - {{?}}) || - {{?}} - ({{=$format}} && {{=$formatType}} == '{{=$ruleType}}' - && !(typeof {{=$format}} == 'function' - ? {{? it.async}} - (async{{=$lvl}} ? await {{=$format}}({{=$data}}) : {{=$format}}({{=$data}})) - {{??}} - {{=$format}}({{=$data}}) - {{?}} - : {{=$format}}.test({{=$data}})))) -#}} - -{{## def.checkFormat: - {{ - var $formatRef = 'formats' + it.util.getProperty($schema); - if ($isObject) $formatRef += '.validate'; - }} - {{? typeof $format == 'function' }} - {{=$formatRef}}({{=$data}}) - {{??}} - {{=$formatRef}}.test({{=$data}}) - {{?}} -#}} - - -{{ - var $unknownFormats = it.opts.unknownFormats - , $allowUnknown = Array.isArray($unknownFormats); -}} - -{{? $isData }} - {{ - var $format = 'format' + $lvl - , $isObject = 'isObject' + $lvl - , $formatType = 'formatType' + $lvl; - }} - var {{=$format}} = formats[{{=$schemaValue}}]; - var {{=$isObject}} = typeof {{=$format}} == 'object' - && !({{=$format}} instanceof RegExp) - && {{=$format}}.validate; - var {{=$formatType}} = {{=$isObject}} && {{=$format}}.type || 'string'; - if ({{=$isObject}}) { - {{? it.async}} - var async{{=$lvl}} = {{=$format}}.async; - {{?}} - {{=$format}} = {{=$format}}.validate; - } - if ({{# def.$dataCheckFormat }}) { -{{??}} - {{ var $format = it.formats[$schema]; }} - {{? !$format }} - {{? $unknownFormats == 'ignore' }} - {{ it.logger.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"'); }} - {{# def.skipFormat }} - {{?? $allowUnknown && $unknownFormats.indexOf($schema) >= 0 }} - {{# def.skipFormat }} - {{??}} - {{ throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"'); }} - {{?}} - {{?}} - {{ - var $isObject = typeof $format == 'object' - && !($format instanceof RegExp) - && $format.validate; - var $formatType = $isObject && $format.type || 'string'; - if ($isObject) { - var $async = $format.async === true; - $format = $format.validate; - } - }} - {{? $formatType != $ruleType }} - {{# def.skipFormat }} - {{?}} - {{? $async }} - {{ - if (!it.async) throw new Error('async format in sync schema'); - var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate'; - }} - if (!(await {{=$formatRef}}({{=$data}}))) { - {{??}} - if (!{{# def.checkFormat }}) { - {{?}} -{{?}} - {{# def.error:'format' }} - } {{? $breakOnError }} else { {{?}} diff --git a/node_modules/ajv/lib/dot/if.jst b/node_modules/ajv/lib/dot/if.jst deleted file mode 100644 index 7ccc9b7..0000000 --- a/node_modules/ajv/lib/dot/if.jst +++ /dev/null @@ -1,75 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.setupNextLevel }} - - -{{## def.validateIfClause:_clause: - {{ - $it.schema = it.schema['_clause']; - $it.schemaPath = it.schemaPath + '._clause'; - $it.errSchemaPath = it.errSchemaPath + '/_clause'; - }} - {{# def.insertSubschemaCode }} - {{=$valid}} = {{=$nextValid}}; - {{? $thenPresent && $elsePresent }} - {{ $ifClause = 'ifClause' + $lvl; }} - var {{=$ifClause}} = '_clause'; - {{??}} - {{ $ifClause = '\'_clause\''; }} - {{?}} -#}} - -{{ - var $thenSch = it.schema['then'] - , $elseSch = it.schema['else'] - , $thenPresent = $thenSch !== undefined && {{# def.nonEmptySchema:$thenSch }} - , $elsePresent = $elseSch !== undefined && {{# def.nonEmptySchema:$elseSch }} - , $currentBaseId = $it.baseId; -}} - -{{? $thenPresent || $elsePresent }} - {{ - var $ifClause; - $it.createErrors = false; - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - }} - var {{=$errs}} = errors; - var {{=$valid}} = true; - - {{# def.setCompositeRule }} - {{# def.insertSubschemaCode }} - {{ $it.createErrors = true; }} - {{# def.resetErrors }} - {{# def.resetCompositeRule }} - - {{? $thenPresent }} - if ({{=$nextValid}}) { - {{# def.validateIfClause:then }} - } - {{? $elsePresent }} - else { - {{?}} - {{??}} - if (!{{=$nextValid}}) { - {{?}} - - {{? $elsePresent }} - {{# def.validateIfClause:else }} - } - {{?}} - - if (!{{=$valid}}) { - {{# def.extraError:'if' }} - } - {{? $breakOnError }} else { {{?}} - - {{# def.cleanUp }} -{{??}} - {{? $breakOnError }} - if (true) { - {{?}} -{{?}} - diff --git a/node_modules/ajv/lib/dot/items.jst b/node_modules/ajv/lib/dot/items.jst deleted file mode 100644 index 8c0f5ac..0000000 --- a/node_modules/ajv/lib/dot/items.jst +++ /dev/null @@ -1,100 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.setupNextLevel }} - - -{{## def.validateItems:startFrom: - for (var {{=$idx}} = {{=startFrom}}; {{=$idx}} < {{=$data}}.length; {{=$idx}}++) { - {{ - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - }} - - {{# def.generateSubschemaCode }} - {{# def.optimizeValidate }} - - {{? $breakOnError }} - if (!{{=$nextValid}}) break; - {{?}} - } -#}} - -{{ - var $idx = 'i' + $lvl - , $dataNxt = $it.dataLevel = it.dataLevel + 1 - , $nextData = 'data' + $dataNxt - , $currentBaseId = it.baseId; -}} - -var {{=$errs}} = errors; -var {{=$valid}}; - -{{? Array.isArray($schema) }} - {{ /* 'items' is an array of schemas */}} - {{ var $additionalItems = it.schema.additionalItems; }} - {{? $additionalItems === false }} - {{=$valid}} = {{=$data}}.length <= {{= $schema.length }}; - {{ - var $currErrSchemaPath = $errSchemaPath; - $errSchemaPath = it.errSchemaPath + '/additionalItems'; - }} - {{# def.checkError:'additionalItems' }} - {{ $errSchemaPath = $currErrSchemaPath; }} - {{# def.elseIfValid}} - {{?}} - - {{~ $schema:$sch:$i }} - {{? {{# def.nonEmptySchema:$sch }} }} - {{=$nextValid}} = true; - - if ({{=$data}}.length > {{=$i}}) { - {{ - var $passData = $data + '[' + $i + ']'; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); - $it.dataPathArr[$dataNxt] = $i; - }} - - {{# def.generateSubschemaCode }} - {{# def.optimizeValidate }} - } - - {{# def.ifResultValid }} - {{?}} - {{~}} - - {{? typeof $additionalItems == 'object' && {{# def.nonEmptySchema:$additionalItems }} }} - {{ - $it.schema = $additionalItems; - $it.schemaPath = it.schemaPath + '.additionalItems'; - $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; - }} - {{=$nextValid}} = true; - - if ({{=$data}}.length > {{= $schema.length }}) { - {{# def.validateItems: $schema.length }} - } - - {{# def.ifResultValid }} - {{?}} - -{{?? {{# def.nonEmptySchema:$schema }} }} - {{ /* 'items' is a single schema */}} - {{ - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - }} - {{# def.validateItems: 0 }} -{{?}} - -{{? $breakOnError }} - {{= $closingBraces }} - if ({{=$errs}} == errors) { -{{?}} - -{{# def.cleanUp }} diff --git a/node_modules/ajv/lib/dot/missing.def b/node_modules/ajv/lib/dot/missing.def deleted file mode 100644 index a73b9f9..0000000 --- a/node_modules/ajv/lib/dot/missing.def +++ /dev/null @@ -1,39 +0,0 @@ -{{## def.checkMissingProperty:_properties: - {{~ _properties:$propertyKey:$i }} - {{?$i}} || {{?}} - {{ - var $prop = it.util.getProperty($propertyKey) - , $useData = $data + $prop; - }} - ( ({{# def.noPropertyInData }}) && (missing{{=$lvl}} = {{= it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop) }}) ) - {{~}} -#}} - - -{{## def.errorMissingProperty:_error: - {{ - var $propertyPath = 'missing' + $lvl - , $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.opts.jsonPointers - ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) - : $currentErrorPath + ' + ' + $propertyPath; - } - }} - {{# def.error:_error }} -#}} - - -{{## def.allErrorsMissingProperty:_error: - {{ - var $prop = it.util.getProperty($propertyKey) - , $missingProperty = it.util.escapeQuotes($propertyKey) - , $useData = $data + $prop; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - }} - if ({{# def.noPropertyInData }}) { - {{# def.addError:_error }} - } -#}} diff --git a/node_modules/ajv/lib/dot/multipleOf.jst b/node_modules/ajv/lib/dot/multipleOf.jst deleted file mode 100644 index 5f8dd33..0000000 --- a/node_modules/ajv/lib/dot/multipleOf.jst +++ /dev/null @@ -1,20 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.$data }} - -var division{{=$lvl}}; -if ({{?$isData}} - {{=$schemaValue}} !== undefined && ( - typeof {{=$schemaValue}} != 'number' || - {{?}} - (division{{=$lvl}} = {{=$data}} / {{=$schemaValue}}, - {{? it.opts.multipleOfPrecision }} - Math.abs(Math.round(division{{=$lvl}}) - division{{=$lvl}}) > 1e-{{=it.opts.multipleOfPrecision}} - {{??}} - division{{=$lvl}} !== parseInt(division{{=$lvl}}) - {{?}} - ) - {{?$isData}} ) {{?}} ) { - {{# def.error:'multipleOf' }} -} {{? $breakOnError }} else { {{?}} diff --git a/node_modules/ajv/lib/dot/not.jst b/node_modules/ajv/lib/dot/not.jst deleted file mode 100644 index e03185a..0000000 --- a/node_modules/ajv/lib/dot/not.jst +++ /dev/null @@ -1,43 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.setupNextLevel }} - -{{? {{# def.nonEmptySchema:$schema }} }} - {{ - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - }} - - var {{=$errs}} = errors; - - {{# def.setCompositeRule }} - - {{ - $it.createErrors = false; - var $allErrorsOption; - if ($it.opts.allErrors) { - $allErrorsOption = $it.opts.allErrors; - $it.opts.allErrors = false; - } - }} - {{= it.validate($it) }} - {{ - $it.createErrors = true; - if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption; - }} - - {{# def.resetCompositeRule }} - - if ({{=$nextValid}}) { - {{# def.error:'not' }} - } else { - {{# def.resetErrors }} - {{? it.opts.allErrors }} } {{?}} -{{??}} - {{# def.addError:'not' }} - {{? $breakOnError}} - if (false) { - {{?}} -{{?}} diff --git a/node_modules/ajv/lib/dot/oneOf.jst b/node_modules/ajv/lib/dot/oneOf.jst deleted file mode 100644 index bcce2c6..0000000 --- a/node_modules/ajv/lib/dot/oneOf.jst +++ /dev/null @@ -1,54 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.setupNextLevel }} - -{{ - var $currentBaseId = $it.baseId - , $prevValid = 'prevValid' + $lvl - , $passingSchemas = 'passingSchemas' + $lvl; -}} - -var {{=$errs}} = errors - , {{=$prevValid}} = false - , {{=$valid}} = false - , {{=$passingSchemas}} = null; - -{{# def.setCompositeRule }} - -{{~ $schema:$sch:$i }} - {{? {{# def.nonEmptySchema:$sch }} }} - {{ - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - }} - - {{# def.insertSubschemaCode }} - {{??}} - var {{=$nextValid}} = true; - {{?}} - - {{? $i }} - if ({{=$nextValid}} && {{=$prevValid}}) { - {{=$valid}} = false; - {{=$passingSchemas}} = [{{=$passingSchemas}}, {{=$i}}]; - } else { - {{ $closingBraces += '}'; }} - {{?}} - - if ({{=$nextValid}}) { - {{=$valid}} = {{=$prevValid}} = true; - {{=$passingSchemas}} = {{=$i}}; - } -{{~}} - -{{# def.resetCompositeRule }} - -{{= $closingBraces }} - -if (!{{=$valid}}) { - {{# def.extraError:'oneOf' }} -} else { - {{# def.resetErrors }} -{{? it.opts.allErrors }} } {{?}} diff --git a/node_modules/ajv/lib/dot/pattern.jst b/node_modules/ajv/lib/dot/pattern.jst deleted file mode 100644 index 3a37ef6..0000000 --- a/node_modules/ajv/lib/dot/pattern.jst +++ /dev/null @@ -1,14 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.$data }} - -{{ - var $regexp = $isData - ? '(new RegExp(' + $schemaValue + '))' - : it.usePattern($schema); -}} - -if ({{# def.$dataNotType:'string' }} !{{=$regexp}}.test({{=$data}}) ) { - {{# def.error:'pattern' }} -} {{? $breakOnError }} else { {{?}} diff --git a/node_modules/ajv/lib/dot/properties.jst b/node_modules/ajv/lib/dot/properties.jst deleted file mode 100644 index 862067e..0000000 --- a/node_modules/ajv/lib/dot/properties.jst +++ /dev/null @@ -1,244 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.setupNextLevel }} - - -{{## def.validateAdditional: - {{ /* additionalProperties is schema */ - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty - ? it.errorPath - : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - }} - - {{# def.generateSubschemaCode }} - {{# def.optimizeValidate }} -#}} - - -{{ - var $key = 'key' + $lvl - , $idx = 'idx' + $lvl - , $dataNxt = $it.dataLevel = it.dataLevel + 1 - , $nextData = 'data' + $dataNxt - , $dataProperties = 'dataProperties' + $lvl; - - var $schemaKeys = Object.keys($schema || {}) - , $pProperties = it.schema.patternProperties || {} - , $pPropertyKeys = Object.keys($pProperties) - , $aProperties = it.schema.additionalProperties - , $someProperties = $schemaKeys.length || $pPropertyKeys.length - , $noAdditional = $aProperties === false - , $additionalIsSchema = typeof $aProperties == 'object' - && Object.keys($aProperties).length - , $removeAdditional = it.opts.removeAdditional - , $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional - , $ownProperties = it.opts.ownProperties - , $currentBaseId = it.baseId; - - var $required = it.schema.required; - if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) - var $requiredHash = it.util.toHash($required); -}} - - -var {{=$errs}} = errors; -var {{=$nextValid}} = true; -{{? $ownProperties }} - var {{=$dataProperties}} = undefined; -{{?}} - -{{? $checkAdditional }} - {{# def.iterateProperties }} - {{? $someProperties }} - var isAdditional{{=$lvl}} = !(false - {{? $schemaKeys.length }} - {{? $schemaKeys.length > 8 }} - || validate.schema{{=$schemaPath}}.hasOwnProperty({{=$key}}) - {{??}} - {{~ $schemaKeys:$propertyKey }} - || {{=$key}} == {{= it.util.toQuotedString($propertyKey) }} - {{~}} - {{?}} - {{?}} - {{? $pPropertyKeys.length }} - {{~ $pPropertyKeys:$pProperty:$i }} - || {{= it.usePattern($pProperty) }}.test({{=$key}}) - {{~}} - {{?}} - ); - - if (isAdditional{{=$lvl}}) { - {{?}} - {{? $removeAdditional == 'all' }} - delete {{=$data}}[{{=$key}}]; - {{??}} - {{ - var $currentErrorPath = it.errorPath; - var $additionalProperty = '\' + ' + $key + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - } - }} - {{? $noAdditional }} - {{? $removeAdditional }} - delete {{=$data}}[{{=$key}}]; - {{??}} - {{=$nextValid}} = false; - {{ - var $currErrSchemaPath = $errSchemaPath; - $errSchemaPath = it.errSchemaPath + '/additionalProperties'; - }} - {{# def.error:'additionalProperties' }} - {{ $errSchemaPath = $currErrSchemaPath; }} - {{? $breakOnError }} break; {{?}} - {{?}} - {{?? $additionalIsSchema }} - {{? $removeAdditional == 'failing' }} - var {{=$errs}} = errors; - {{# def.setCompositeRule }} - - {{# def.validateAdditional }} - - if (!{{=$nextValid}}) { - errors = {{=$errs}}; - if (validate.errors !== null) { - if (errors) validate.errors.length = errors; - else validate.errors = null; - } - delete {{=$data}}[{{=$key}}]; - } - - {{# def.resetCompositeRule }} - {{??}} - {{# def.validateAdditional }} - {{? $breakOnError }} if (!{{=$nextValid}}) break; {{?}} - {{?}} - {{?}} - {{ it.errorPath = $currentErrorPath; }} - {{?}} - {{? $someProperties }} - } - {{?}} - } - - {{# def.ifResultValid }} -{{?}} - -{{ var $useDefaults = it.opts.useDefaults && !it.compositeRule; }} - -{{? $schemaKeys.length }} - {{~ $schemaKeys:$propertyKey }} - {{ var $sch = $schema[$propertyKey]; }} - - {{? {{# def.nonEmptySchema:$sch}} }} - {{ - var $prop = it.util.getProperty($propertyKey) - , $passData = $data + $prop - , $hasDefault = $useDefaults && $sch.default !== undefined; - $it.schema = $sch; - $it.schemaPath = $schemaPath + $prop; - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); - $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); - $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); - }} - - {{# def.generateSubschemaCode }} - - {{? {{# def.willOptimize }} }} - {{ - $code = {{# def._optimizeValidate }}; - var $useData = $passData; - }} - {{??}} - {{ var $useData = $nextData; }} - var {{=$nextData}} = {{=$passData}}; - {{?}} - - {{? $hasDefault }} - {{= $code }} - {{??}} - {{? $requiredHash && $requiredHash[$propertyKey] }} - if ({{# def.noPropertyInData }}) { - {{=$nextValid}} = false; - {{ - var $currentErrorPath = it.errorPath - , $currErrSchemaPath = $errSchemaPath - , $missingProperty = it.util.escapeQuotes($propertyKey); - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - $errSchemaPath = it.errSchemaPath + '/required'; - }} - {{# def.error:'required' }} - {{ $errSchemaPath = $currErrSchemaPath; }} - {{ it.errorPath = $currentErrorPath; }} - } else { - {{??}} - {{? $breakOnError }} - if ({{# def.noPropertyInData }}) { - {{=$nextValid}} = true; - } else { - {{??}} - if ({{=$useData}} !== undefined - {{? $ownProperties }} - && {{# def.isOwnProperty }} - {{?}} - ) { - {{?}} - {{?}} - - {{= $code }} - } - {{?}} {{ /* $hasDefault */ }} - {{?}} {{ /* def.nonEmptySchema */ }} - - {{# def.ifResultValid }} - {{~}} -{{?}} - -{{? $pPropertyKeys.length }} - {{~ $pPropertyKeys:$pProperty }} - {{ var $sch = $pProperties[$pProperty]; }} - - {{? {{# def.nonEmptySchema:$sch}} }} - {{ - $it.schema = $sch; - $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); - $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' - + it.util.escapeFragment($pProperty); - }} - - {{# def.iterateProperties }} - if ({{= it.usePattern($pProperty) }}.test({{=$key}})) { - {{ - $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - }} - - {{# def.generateSubschemaCode }} - {{# def.optimizeValidate }} - - {{? $breakOnError }} if (!{{=$nextValid}}) break; {{?}} - } - {{? $breakOnError }} else {{=$nextValid}} = true; {{?}} - } - - {{# def.ifResultValid }} - {{?}} {{ /* def.nonEmptySchema */ }} - {{~}} -{{?}} - - -{{? $breakOnError }} - {{= $closingBraces }} - if ({{=$errs}} == errors) { -{{?}} - -{{# def.cleanUp }} diff --git a/node_modules/ajv/lib/dot/propertyNames.jst b/node_modules/ajv/lib/dot/propertyNames.jst deleted file mode 100644 index ee52b21..0000000 --- a/node_modules/ajv/lib/dot/propertyNames.jst +++ /dev/null @@ -1,54 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.setupNextLevel }} - -var {{=$errs}} = errors; - -{{? {{# def.nonEmptySchema:$schema }} }} - {{ - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - }} - - {{ - var $key = 'key' + $lvl - , $idx = 'idx' + $lvl - , $i = 'i' + $lvl - , $invalidName = '\' + ' + $key + ' + \'' - , $dataNxt = $it.dataLevel = it.dataLevel + 1 - , $nextData = 'data' + $dataNxt - , $dataProperties = 'dataProperties' + $lvl - , $ownProperties = it.opts.ownProperties - , $currentBaseId = it.baseId; - }} - - {{? $ownProperties }} - var {{=$dataProperties}} = undefined; - {{?}} - {{# def.iterateProperties }} - var startErrs{{=$lvl}} = errors; - - {{ var $passData = $key; }} - {{# def.setCompositeRule }} - {{# def.generateSubschemaCode }} - {{# def.optimizeValidate }} - {{# def.resetCompositeRule }} - - if (!{{=$nextValid}}) { - for (var {{=$i}}=startErrs{{=$lvl}}; {{=$i}}= it.opts.loopRequired - , $ownProperties = it.opts.ownProperties; - }} - - {{? $breakOnError }} - var missing{{=$lvl}}; - {{? $loopRequired }} - {{# def.setupLoop }} - var {{=$valid}} = true; - - {{?$isData}}{{# def.check$dataIsArray }}{{?}} - - for (var {{=$i}} = 0; {{=$i}} < {{=$vSchema}}.length; {{=$i}}++) { - {{=$valid}} = {{=$data}}[{{=$vSchema}}[{{=$i}}]] !== undefined - {{? $ownProperties }} - && {{# def.isRequiredOwnProperty }} - {{?}}; - if (!{{=$valid}}) break; - } - - {{? $isData }} } {{?}} - - {{# def.checkError:'required' }} - else { - {{??}} - if ({{# def.checkMissingProperty:$required }}) { - {{# def.errorMissingProperty:'required' }} - } else { - {{?}} - {{??}} - {{? $loopRequired }} - {{# def.setupLoop }} - {{? $isData }} - if ({{=$vSchema}} && !Array.isArray({{=$vSchema}})) { - {{# def.addError:'required' }} - } else if ({{=$vSchema}} !== undefined) { - {{?}} - - for (var {{=$i}} = 0; {{=$i}} < {{=$vSchema}}.length; {{=$i}}++) { - if ({{=$data}}[{{=$vSchema}}[{{=$i}}]] === undefined - {{? $ownProperties }} - || !{{# def.isRequiredOwnProperty }} - {{?}}) { - {{# def.addError:'required' }} - } - } - - {{? $isData }} } {{?}} - {{??}} - {{~ $required:$propertyKey }} - {{# def.allErrorsMissingProperty:'required' }} - {{~}} - {{?}} - {{?}} - - {{ it.errorPath = $currentErrorPath; }} - -{{?? $breakOnError }} - if (true) { -{{?}} diff --git a/node_modules/ajv/lib/dot/uniqueItems.jst b/node_modules/ajv/lib/dot/uniqueItems.jst deleted file mode 100644 index 22f82f9..0000000 --- a/node_modules/ajv/lib/dot/uniqueItems.jst +++ /dev/null @@ -1,62 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.setupKeyword }} -{{# def.$data }} - - -{{? ($schema || $isData) && it.opts.uniqueItems !== false }} - {{? $isData }} - var {{=$valid}}; - if ({{=$schemaValue}} === false || {{=$schemaValue}} === undefined) - {{=$valid}} = true; - else if (typeof {{=$schemaValue}} != 'boolean') - {{=$valid}} = false; - else { - {{?}} - - var i = {{=$data}}.length - , {{=$valid}} = true - , j; - if (i > 1) { - {{ - var $itemType = it.schema.items && it.schema.items.type - , $typeIsArray = Array.isArray($itemType); - }} - {{? !$itemType || $itemType == 'object' || $itemType == 'array' || - ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0)) }} - outer: - for (;i--;) { - for (j = i; j--;) { - if (equal({{=$data}}[i], {{=$data}}[j])) { - {{=$valid}} = false; - break outer; - } - } - } - {{??}} - var itemIndices = {}, item; - for (;i--;) { - var item = {{=$data}}[i]; - {{ var $method = 'checkDataType' + ($typeIsArray ? 's' : ''); }} - if ({{= it.util[$method]($itemType, 'item', true) }}) continue; - {{? $typeIsArray}} - if (typeof item == 'string') item = '"' + item; - {{?}} - if (typeof itemIndices[item] == 'number') { - {{=$valid}} = false; - j = itemIndices[item]; - break; - } - itemIndices[item] = i; - } - {{?}} - } - - {{? $isData }} } {{?}} - - if (!{{=$valid}}) { - {{# def.error:'uniqueItems' }} - } {{? $breakOnError }} else { {{?}} -{{??}} - {{? $breakOnError }} if (true) { {{?}} -{{?}} diff --git a/node_modules/ajv/lib/dot/validate.jst b/node_modules/ajv/lib/dot/validate.jst deleted file mode 100644 index f8a1edf..0000000 --- a/node_modules/ajv/lib/dot/validate.jst +++ /dev/null @@ -1,282 +0,0 @@ -{{# def.definitions }} -{{# def.errors }} -{{# def.defaults }} -{{# def.coerce }} - -{{ /** - * schema compilation (render) time: - * it = { schema, RULES, _validate, opts } - * it.validate - this template function, - * it is used recursively to generate code for subschemas - * - * runtime: - * "validate" is a variable name to which this function will be assigned - * validateRef etc. are defined in the parent scope in index.js - */ }} - -{{ - var $async = it.schema.$async === true - , $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref') - , $id = it.self._getId(it.schema); -}} - -{{ - if (it.opts.strictKeywords) { - var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords); - if ($unknownKwd) { - var $keywordsMsg = 'unknown keyword: ' + $unknownKwd; - if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg); - else throw new Error($keywordsMsg); - } - } -}} - -{{? it.isTop }} - var validate = {{?$async}}{{it.async = true;}}async {{?}}function(data, dataPath, parentData, parentDataProperty, rootData) { - 'use strict'; - {{? $id && (it.opts.sourceCode || it.opts.processCode) }} - {{= '/\*# sourceURL=' + $id + ' */' }} - {{?}} -{{?}} - -{{? typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref) }} - {{ var $keyword = 'false schema'; }} - {{# def.setupKeyword }} - {{? it.schema === false}} - {{? it.isTop}} - {{ $breakOnError = true; }} - {{??}} - var {{=$valid}} = false; - {{?}} - {{# def.error:'false schema' }} - {{??}} - {{? it.isTop}} - {{? $async }} - return data; - {{??}} - validate.errors = null; - return true; - {{?}} - {{??}} - var {{=$valid}} = true; - {{?}} - {{?}} - - {{? it.isTop}} - }; - return validate; - {{?}} - - {{ return out; }} -{{?}} - - -{{? it.isTop }} - {{ - var $top = it.isTop - , $lvl = it.level = 0 - , $dataLvl = it.dataLevel = 0 - , $data = 'data'; - it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema)); - it.baseId = it.baseId || it.rootId; - delete it.isTop; - - it.dataPathArr = [undefined]; - - if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) { - var $defaultMsg = 'default is ignored in the schema root'; - if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); - else throw new Error($defaultMsg); - } - }} - - var vErrors = null; {{ /* don't edit, used in replace */ }} - var errors = 0; {{ /* don't edit, used in replace */ }} - if (rootData === undefined) rootData = data; {{ /* don't edit, used in replace */ }} -{{??}} - {{ - var $lvl = it.level - , $dataLvl = it.dataLevel - , $data = 'data' + ($dataLvl || ''); - - if ($id) it.baseId = it.resolve.url(it.baseId, $id); - - if ($async && !it.async) throw new Error('async schema in sync schema'); - }} - - var errs_{{=$lvl}} = errors; -{{?}} - -{{ - var $valid = 'valid' + $lvl - , $breakOnError = !it.opts.allErrors - , $closingBraces1 = '' - , $closingBraces2 = ''; - - var $errorKeyword; - var $typeSchema = it.schema.type - , $typeIsArray = Array.isArray($typeSchema); - - if ($typeSchema && it.opts.nullable && it.schema.nullable === true) { - if ($typeIsArray) { - if ($typeSchema.indexOf('null') == -1) - $typeSchema = $typeSchema.concat('null'); - } else if ($typeSchema != 'null') { - $typeSchema = [$typeSchema, 'null']; - $typeIsArray = true; - } - } - - if ($typeIsArray && $typeSchema.length == 1) { - $typeSchema = $typeSchema[0]; - $typeIsArray = false; - } -}} - -{{## def.checkType: - {{ - var $schemaPath = it.schemaPath + '.type' - , $errSchemaPath = it.errSchemaPath + '/type' - , $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType'; - }} - - if ({{= it.util[$method]($typeSchema, $data, true) }}) { -#}} - -{{? it.schema.$ref && $refKeywords }} - {{? it.opts.extendRefs == 'fail' }} - {{ throw new Error('$ref: validation keywords used in schema at path "' + it.errSchemaPath + '" (see option extendRefs)'); }} - {{?? it.opts.extendRefs !== true }} - {{ - $refKeywords = false; - it.logger.warn('$ref: keywords ignored in schema at path "' + it.errSchemaPath + '"'); - }} - {{?}} -{{?}} - -{{? it.schema.$comment && it.opts.$comment }} - {{= it.RULES.all.$comment.code(it, '$comment') }} -{{?}} - -{{? $typeSchema }} - {{? it.opts.coerceTypes }} - {{ var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema); }} - {{?}} - - {{ var $rulesGroup = it.RULES.types[$typeSchema]; }} - {{? $coerceToTypes || $typeIsArray || $rulesGroup === true || - ($rulesGroup && !$shouldUseGroup($rulesGroup)) }} - {{ - var $schemaPath = it.schemaPath + '.type' - , $errSchemaPath = it.errSchemaPath + '/type'; - }} - {{# def.checkType }} - {{? $coerceToTypes }} - {{# def.coerceType }} - {{??}} - {{# def.error:'type' }} - {{?}} - } - {{?}} -{{?}} - - -{{? it.schema.$ref && !$refKeywords }} - {{= it.RULES.all.$ref.code(it, '$ref') }} - {{? $breakOnError }} - } - if (errors === {{?$top}}0{{??}}errs_{{=$lvl}}{{?}}) { - {{ $closingBraces2 += '}'; }} - {{?}} -{{??}} - {{~ it.RULES:$rulesGroup }} - {{? $shouldUseGroup($rulesGroup) }} - {{? $rulesGroup.type }} - if ({{= it.util.checkDataType($rulesGroup.type, $data) }}) { - {{?}} - {{? it.opts.useDefaults }} - {{? $rulesGroup.type == 'object' && it.schema.properties }} - {{# def.defaultProperties }} - {{?? $rulesGroup.type == 'array' && Array.isArray(it.schema.items) }} - {{# def.defaultItems }} - {{?}} - {{?}} - {{~ $rulesGroup.rules:$rule }} - {{? $shouldUseRule($rule) }} - {{ var $code = $rule.code(it, $rule.keyword, $rulesGroup.type); }} - {{? $code }} - {{= $code }} - {{? $breakOnError }} - {{ $closingBraces1 += '}'; }} - {{?}} - {{?}} - {{?}} - {{~}} - {{? $breakOnError }} - {{= $closingBraces1 }} - {{ $closingBraces1 = ''; }} - {{?}} - {{? $rulesGroup.type }} - } - {{? $typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes }} - else { - {{ - var $schemaPath = it.schemaPath + '.type' - , $errSchemaPath = it.errSchemaPath + '/type'; - }} - {{# def.error:'type' }} - } - {{?}} - {{?}} - - {{? $breakOnError }} - if (errors === {{?$top}}0{{??}}errs_{{=$lvl}}{{?}}) { - {{ $closingBraces2 += '}'; }} - {{?}} - {{?}} - {{~}} -{{?}} - -{{? $breakOnError }} {{= $closingBraces2 }} {{?}} - -{{? $top }} - {{? $async }} - if (errors === 0) return data; {{ /* don't edit, used in replace */ }} - else throw new ValidationError(vErrors); {{ /* don't edit, used in replace */ }} - {{??}} - validate.errors = vErrors; {{ /* don't edit, used in replace */ }} - return errors === 0; {{ /* don't edit, used in replace */ }} - {{?}} - }; - - return validate; -{{??}} - var {{=$valid}} = errors === errs_{{=$lvl}}; -{{?}} - -{{# def.cleanUp }} - -{{? $top }} - {{# def.finalCleanUp }} -{{?}} - -{{ - function $shouldUseGroup($rulesGroup) { - var rules = $rulesGroup.rules; - for (var i=0; i < rules.length; i++) - if ($shouldUseRule(rules[i])) - return true; - } - - function $shouldUseRule($rule) { - return it.schema[$rule.keyword] !== undefined || - ($rule.implements && $ruleImplementsSomeKeyword($rule)); - } - - function $ruleImplementsSomeKeyword($rule) { - var impl = $rule.implements; - for (var i=0; i < impl.length; i++) - if (it.schema[impl[i]] !== undefined) - return true; - } -}} diff --git a/node_modules/ajv/lib/dotjs/README.md b/node_modules/ajv/lib/dotjs/README.md deleted file mode 100644 index 4d99484..0000000 --- a/node_modules/ajv/lib/dotjs/README.md +++ /dev/null @@ -1,3 +0,0 @@ -These files are compiled dot templates from dot folder. - -Do NOT edit them directly, edit the templates and run `npm run build` from main ajv folder. diff --git a/node_modules/ajv/lib/dotjs/_limit.js b/node_modules/ajv/lib/dotjs/_limit.js deleted file mode 100644 index f02a760..0000000 --- a/node_modules/ajv/lib/dotjs/_limit.js +++ /dev/null @@ -1,157 +0,0 @@ -'use strict'; -module.exports = function generate__limit(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $isMax = $keyword == 'maximum', - $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum', - $schemaExcl = it.schema[$exclusiveKeyword], - $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data, - $op = $isMax ? '<' : '>', - $notOp = $isMax ? '>' : '<', - $errorKeyword = undefined; - if ($isDataExcl) { - var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), - $exclusive = 'exclusive' + $lvl, - $exclType = 'exclType' + $lvl, - $exclIsNumber = 'exclIsNumber' + $lvl, - $opExpr = 'op' + $lvl, - $opStr = '\' + ' + $opExpr + ' + \''; - out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; - $schemaValueExcl = 'schemaExcl' + $lvl; - out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \'boolean\' && ' + ($exclType) + ' != \'undefined\' && ' + ($exclType) + ' != \'number\') { '; - var $errorKeyword = $exclusiveKeyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($exclType) + ' == \'number\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\'; '; - if ($schema === undefined) { - $errorKeyword = $exclusiveKeyword; - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; - $schemaValue = $schemaValueExcl; - $isData = $isDataExcl; - } - } else { - var $exclIsNumber = typeof $schemaExcl == 'number', - $opStr = $op; - if ($exclIsNumber && $isData) { - var $opExpr = '\'' + $opStr + '\''; - out += ' if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { '; - } else { - if ($exclIsNumber && $schema === undefined) { - $exclusive = true; - $errorKeyword = $exclusiveKeyword; - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; - $schemaValue = $schemaExcl; - $notOp += '='; - } else { - if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema); - if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) { - $exclusive = true; - $errorKeyword = $exclusiveKeyword; - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; - $notOp += '='; - } else { - $exclusive = false; - $opStr += '='; - } - } - var $opExpr = '\'' + $opStr + '\''; - out += ' if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { '; - } - } - $errorKeyword = $errorKeyword || $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be ' + ($opStr) + ' '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schemaValue) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} diff --git a/node_modules/ajv/lib/dotjs/_limitItems.js b/node_modules/ajv/lib/dotjs/_limitItems.js deleted file mode 100644 index a27d118..0000000 --- a/node_modules/ajv/lib/dotjs/_limitItems.js +++ /dev/null @@ -1,77 +0,0 @@ -'use strict'; -module.exports = function generate__limitItems(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $op = $keyword == 'maxItems' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxItems') { - out += 'more'; - } else { - out += 'fewer'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' items\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} diff --git a/node_modules/ajv/lib/dotjs/_limitLength.js b/node_modules/ajv/lib/dotjs/_limitLength.js deleted file mode 100644 index 789f374..0000000 --- a/node_modules/ajv/lib/dotjs/_limitLength.js +++ /dev/null @@ -1,82 +0,0 @@ -'use strict'; -module.exports = function generate__limitLength(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $op = $keyword == 'maxLength' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - if (it.opts.unicode === false) { - out += ' ' + ($data) + '.length '; - } else { - out += ' ucs2length(' + ($data) + ') '; - } - out += ' ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be '; - if ($keyword == 'maxLength') { - out += 'longer'; - } else { - out += 'shorter'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' characters\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} diff --git a/node_modules/ajv/lib/dotjs/_limitProperties.js b/node_modules/ajv/lib/dotjs/_limitProperties.js deleted file mode 100644 index 11dc939..0000000 --- a/node_modules/ajv/lib/dotjs/_limitProperties.js +++ /dev/null @@ -1,77 +0,0 @@ -'use strict'; -module.exports = function generate__limitProperties(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $op = $keyword == 'maxProperties' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxProperties') { - out += 'more'; - } else { - out += 'fewer'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' properties\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} diff --git a/node_modules/ajv/lib/dotjs/allOf.js b/node_modules/ajv/lib/dotjs/allOf.js deleted file mode 100644 index 4bad914..0000000 --- a/node_modules/ajv/lib/dotjs/allOf.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict'; -module.exports = function generate_allOf(it, $keyword, $ruleType) { - var out = ' '; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $currentBaseId = $it.baseId, - $allSchemasEmpty = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { - $allSchemasEmpty = false; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if ($breakOnError) { - if ($allSchemasEmpty) { - out += ' if (true) { '; - } else { - out += ' ' + ($closingBraces.slice(0, -1)) + ' '; - } - } - out = it.util.cleanUpCode(out); - return out; -} diff --git a/node_modules/ajv/lib/dotjs/anyOf.js b/node_modules/ajv/lib/dotjs/anyOf.js deleted file mode 100644 index 01551d5..0000000 --- a/node_modules/ajv/lib/dotjs/anyOf.js +++ /dev/null @@ -1,74 +0,0 @@ -'use strict'; -module.exports = function generate_anyOf(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $noEmptySchema = $schema.every(function($sch) { - return (it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all)); - }); - if ($noEmptySchema) { - var $currentBaseId = $it.baseId; - out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { '; - $closingBraces += '}'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should match some schema in anyOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; return false; '; - } - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - out = it.util.cleanUpCode(out); - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; -} diff --git a/node_modules/ajv/lib/dotjs/comment.js b/node_modules/ajv/lib/dotjs/comment.js deleted file mode 100644 index dd66bb8..0000000 --- a/node_modules/ajv/lib/dotjs/comment.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; -module.exports = function generate_comment(it, $keyword, $ruleType) { - var out = ' '; - var $schema = it.schema[$keyword]; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $comment = it.util.toQuotedString($schema); - if (it.opts.$comment === true) { - out += ' console.log(' + ($comment) + ');'; - } else if (typeof it.opts.$comment == 'function') { - out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);'; - } - return out; -} diff --git a/node_modules/ajv/lib/dotjs/const.js b/node_modules/ajv/lib/dotjs/const.js deleted file mode 100644 index 15b7c61..0000000 --- a/node_modules/ajv/lib/dotjs/const.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; -module.exports = function generate_const(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (!$isData) { - out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; - } - out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('const') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be equal to constant\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' }'; - if ($breakOnError) { - out += ' else { '; - } - return out; -} diff --git a/node_modules/ajv/lib/dotjs/contains.js b/node_modules/ajv/lib/dotjs/contains.js deleted file mode 100644 index cd4dfab..0000000 --- a/node_modules/ajv/lib/dotjs/contains.js +++ /dev/null @@ -1,82 +0,0 @@ -'use strict'; -module.exports = function generate_contains(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $idx = 'i' + $lvl, - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $currentBaseId = it.baseId, - $nonEmptySchema = (it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all)); - out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; - if ($nonEmptySchema) { - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' if (' + ($nextValid) + ') break; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {'; - } else { - out += ' if (' + ($data) + '.length == 0) {'; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('contains') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should contain a valid item\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - if ($nonEmptySchema) { - out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - } - if (it.opts.allErrors) { - out += ' } '; - } - out = it.util.cleanUpCode(out); - return out; -} diff --git a/node_modules/ajv/lib/dotjs/custom.js b/node_modules/ajv/lib/dotjs/custom.js deleted file mode 100644 index f3e641e..0000000 --- a/node_modules/ajv/lib/dotjs/custom.js +++ /dev/null @@ -1,228 +0,0 @@ -'use strict'; -module.exports = function generate_custom(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $rule = this, - $definition = 'definition' + $lvl, - $rDef = $rule.definition, - $closingBraces = ''; - var $compile, $inline, $macro, $ruleValidate, $validateCode; - if ($isData && $rDef.$data) { - $validateCode = 'keywordValidate' + $lvl; - var $validateSchema = $rDef.validateSchema; - out += ' var ' + ($definition) + ' = RULES.custom[\'' + ($keyword) + '\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;'; - } else { - $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it); - if (!$ruleValidate) return; - $schemaValue = 'validate.schema' + $schemaPath; - $validateCode = $ruleValidate.code; - $compile = $rDef.compile; - $inline = $rDef.inline; - $macro = $rDef.macro; - } - var $ruleErrs = $validateCode + '.errors', - $i = 'i' + $lvl, - $ruleErr = 'ruleErr' + $lvl, - $asyncKeyword = $rDef.async; - if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema'); - if (!($inline || $macro)) { - out += '' + ($ruleErrs) + ' = null;'; - } - out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; - if ($isData && $rDef.$data) { - $closingBraces += '}'; - out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { '; - if ($validateSchema) { - $closingBraces += '}'; - out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { '; - } - } - if ($inline) { - if ($rDef.statements) { - out += ' ' + ($ruleValidate.validate) + ' '; - } else { - out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; '; - } - } else if ($macro) { - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - $it.schema = $ruleValidate.validate; - $it.schemaPath = ''; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var $code = it.validate($it).replace(/validate\.schema/g, $validateCode); - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($code); - } else { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - out += ' ' + ($validateCode) + '.call( '; - if (it.opts.passContext) { - out += 'this'; - } else { - out += 'self'; - } - if ($compile || $rDef.schema === false) { - out += ' , ' + ($data) + ' '; - } else { - out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' '; - } - out += ' , (dataPath || \'\')'; - if (it.errorPath != '""') { - out += ' + ' + (it.errorPath); - } - var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', - $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; - out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData ) '; - var def_callRuleValidate = out; - out = $$outStack.pop(); - if ($rDef.errors === false) { - out += ' ' + ($valid) + ' = '; - if ($asyncKeyword) { - out += 'await '; - } - out += '' + (def_callRuleValidate) + '; '; - } else { - if ($asyncKeyword) { - $ruleErrs = 'customErrors' + $lvl; - out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } '; - } else { - out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; '; - } - } - } - if ($rDef.modifying) { - out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];'; - } - out += '' + ($closingBraces); - if ($rDef.valid) { - if ($breakOnError) { - out += ' if (true) { '; - } - } else { - out += ' if ( '; - if ($rDef.valid === undefined) { - out += ' !'; - if ($macro) { - out += '' + ($nextValid); - } else { - out += '' + ($valid); - } - } else { - out += ' ' + (!$rDef.valid) + ' '; - } - out += ') { '; - $errorKeyword = $rule.keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \'' + ($rule.keyword) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - var def_customError = out; - out = $$outStack.pop(); - if ($inline) { - if ($rDef.errors) { - if ($rDef.errors != 'full') { - out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + ' 0 : it.util.schemaHasRules($sch, it.RULES.all))) { - out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') '; - } - out += ') { '; - $it.schema = $sch; - $it.schemaPath = $schemaPath + it.util.getProperty($property); - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property); - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; -} diff --git a/node_modules/ajv/lib/dotjs/enum.js b/node_modules/ajv/lib/dotjs/enum.js deleted file mode 100644 index 90580b9..0000000 --- a/node_modules/ajv/lib/dotjs/enum.js +++ /dev/null @@ -1,66 +0,0 @@ -'use strict'; -module.exports = function generate_enum(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $i = 'i' + $lvl, - $vSchema = 'schema' + $lvl; - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';'; - } - out += 'var ' + ($valid) + ';'; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }'; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('enum') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be equal to one of the allowed values\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' }'; - if ($breakOnError) { - out += ' else { '; - } - return out; -} diff --git a/node_modules/ajv/lib/dotjs/format.js b/node_modules/ajv/lib/dotjs/format.js deleted file mode 100644 index cd9a569..0000000 --- a/node_modules/ajv/lib/dotjs/format.js +++ /dev/null @@ -1,150 +0,0 @@ -'use strict'; -module.exports = function generate_format(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - if (it.opts.format === false) { - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $unknownFormats = it.opts.unknownFormats, - $allowUnknown = Array.isArray($unknownFormats); - if ($isData) { - var $format = 'format' + $lvl, - $isObject = 'isObject' + $lvl, - $formatType = 'formatType' + $lvl; - out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \'object\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \'string\'; if (' + ($isObject) + ') { '; - if (it.async) { - out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; '; - } - out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; - } - out += ' ('; - if ($unknownFormats != 'ignore') { - out += ' (' + ($schemaValue) + ' && !' + ($format) + ' '; - if ($allowUnknown) { - out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 '; - } - out += ') || '; - } - out += ' (' + ($format) + ' && ' + ($formatType) + ' == \'' + ($ruleType) + '\' && !(typeof ' + ($format) + ' == \'function\' ? '; - if (it.async) { - out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) '; - } else { - out += ' ' + ($format) + '(' + ($data) + ') '; - } - out += ' : ' + ($format) + '.test(' + ($data) + '))))) {'; - } else { - var $format = it.formats[$schema]; - if (!$format) { - if ($unknownFormats == 'ignore') { - it.logger.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"'); - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) { - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } else { - throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"'); - } - } - var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate; - var $formatType = $isObject && $format.type || 'string'; - if ($isObject) { - var $async = $format.async === true; - $format = $format.validate; - } - if ($formatType != $ruleType) { - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } - if ($async) { - if (!it.async) throw new Error('async format in sync schema'); - var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate'; - out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { '; - } else { - out += ' if (! '; - var $formatRef = 'formats' + it.util.getProperty($schema); - if ($isObject) $formatRef += '.validate'; - if (typeof $format == 'function') { - out += ' ' + ($formatRef) + '(' + ($data) + ') '; - } else { - out += ' ' + ($formatRef) + '.test(' + ($data) + ') '; - } - out += ') { '; - } - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('format') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match format "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} diff --git a/node_modules/ajv/lib/dotjs/if.js b/node_modules/ajv/lib/dotjs/if.js deleted file mode 100644 index 019f61a..0000000 --- a/node_modules/ajv/lib/dotjs/if.js +++ /dev/null @@ -1,104 +0,0 @@ -'use strict'; -module.exports = function generate_if(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - $it.level++; - var $nextValid = 'valid' + $it.level; - var $thenSch = it.schema['then'], - $elseSch = it.schema['else'], - $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? typeof $thenSch == 'object' && Object.keys($thenSch).length > 0 : it.util.schemaHasRules($thenSch, it.RULES.all)), - $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? typeof $elseSch == 'object' && Object.keys($elseSch).length > 0 : it.util.schemaHasRules($elseSch, it.RULES.all)), - $currentBaseId = $it.baseId; - if ($thenPresent || $elsePresent) { - var $ifClause; - $it.createErrors = false; - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - $it.createErrors = true; - out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - if ($thenPresent) { - out += ' if (' + ($nextValid) + ') { '; - $it.schema = it.schema['then']; - $it.schemaPath = it.schemaPath + '.then'; - $it.errSchemaPath = it.errSchemaPath + '/then'; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' ' + ($valid) + ' = ' + ($nextValid) + '; '; - if ($thenPresent && $elsePresent) { - $ifClause = 'ifClause' + $lvl; - out += ' var ' + ($ifClause) + ' = \'then\'; '; - } else { - $ifClause = '\'then\''; - } - out += ' } '; - if ($elsePresent) { - out += ' else { '; - } - } else { - out += ' if (!' + ($nextValid) + ') { '; - } - if ($elsePresent) { - $it.schema = it.schema['else']; - $it.schemaPath = it.schemaPath + '.else'; - $it.errSchemaPath = it.errSchemaPath + '/else'; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' ' + ($valid) + ' = ' + ($nextValid) + '; '; - if ($thenPresent && $elsePresent) { - $ifClause = 'ifClause' + $lvl; - out += ' var ' + ($ifClause) + ' = \'else\'; '; - } else { - $ifClause = '\'else\''; - } - out += ' } '; - } - out += ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('if') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match "\' + ' + ($ifClause) + ' + \'" schema\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; return false; '; - } - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - out = it.util.cleanUpCode(out); - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; -} diff --git a/node_modules/ajv/lib/dotjs/index.js b/node_modules/ajv/lib/dotjs/index.js deleted file mode 100644 index 2fb1b00..0000000 --- a/node_modules/ajv/lib/dotjs/index.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -//all requires must be explicit because browserify won't work with dynamic requires -module.exports = { - '$ref': require('./ref'), - allOf: require('./allOf'), - anyOf: require('./anyOf'), - '$comment': require('./comment'), - const: require('./const'), - contains: require('./contains'), - dependencies: require('./dependencies'), - 'enum': require('./enum'), - format: require('./format'), - 'if': require('./if'), - items: require('./items'), - maximum: require('./_limit'), - minimum: require('./_limit'), - maxItems: require('./_limitItems'), - minItems: require('./_limitItems'), - maxLength: require('./_limitLength'), - minLength: require('./_limitLength'), - maxProperties: require('./_limitProperties'), - minProperties: require('./_limitProperties'), - multipleOf: require('./multipleOf'), - not: require('./not'), - oneOf: require('./oneOf'), - pattern: require('./pattern'), - properties: require('./properties'), - propertyNames: require('./propertyNames'), - required: require('./required'), - uniqueItems: require('./uniqueItems'), - validate: require('./validate') -}; diff --git a/node_modules/ajv/lib/dotjs/items.js b/node_modules/ajv/lib/dotjs/items.js deleted file mode 100644 index d5532f0..0000000 --- a/node_modules/ajv/lib/dotjs/items.js +++ /dev/null @@ -1,141 +0,0 @@ -'use strict'; -module.exports = function generate_items(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $idx = 'i' + $lvl, - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $currentBaseId = it.baseId; - out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; - if (Array.isArray($schema)) { - var $additionalItems = it.schema.additionalItems; - if ($additionalItems === false) { - out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; '; - var $currErrSchemaPath = $errSchemaPath; - $errSchemaPath = it.errSchemaPath + '/additionalItems'; - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('additionalItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have more than ' + ($schema.length) + ' items\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - } - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { - out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { '; - var $passData = $data + '[' + $i + ']'; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); - $it.dataPathArr[$dataNxt] = $i; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0 : it.util.schemaHasRules($additionalItems, it.RULES.all))) { - $it.schema = $additionalItems; - $it.schemaPath = it.schemaPath + '.additionalItems'; - $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; - out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' } } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } else if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' }'; - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; -} diff --git a/node_modules/ajv/lib/dotjs/multipleOf.js b/node_modules/ajv/lib/dotjs/multipleOf.js deleted file mode 100644 index af087d2..0000000 --- a/node_modules/ajv/lib/dotjs/multipleOf.js +++ /dev/null @@ -1,77 +0,0 @@ -'use strict'; -module.exports = function generate_multipleOf(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - out += 'var division' + ($lvl) + ';if ('; - if ($isData) { - out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; - } - out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', '; - if (it.opts.multipleOfPrecision) { - out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' '; - } else { - out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') '; - } - out += ' ) '; - if ($isData) { - out += ' ) '; - } - out += ' ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be multiple of '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schemaValue) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} diff --git a/node_modules/ajv/lib/dotjs/not.js b/node_modules/ajv/lib/dotjs/not.js deleted file mode 100644 index 6aea659..0000000 --- a/node_modules/ajv/lib/dotjs/not.js +++ /dev/null @@ -1,84 +0,0 @@ -'use strict'; -module.exports = function generate_not(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - $it.level++; - var $nextValid = 'valid' + $it.level; - if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.createErrors = false; - var $allErrorsOption; - if ($it.opts.allErrors) { - $allErrorsOption = $it.opts.allErrors; - $it.opts.allErrors = false; - } - out += ' ' + (it.validate($it)) + ' '; - $it.createErrors = true; - if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' if (' + ($nextValid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - } else { - out += ' var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if ($breakOnError) { - out += ' if (false) { '; - } - } - return out; -} diff --git a/node_modules/ajv/lib/dotjs/oneOf.js b/node_modules/ajv/lib/dotjs/oneOf.js deleted file mode 100644 index 30988d5..0000000 --- a/node_modules/ajv/lib/dotjs/oneOf.js +++ /dev/null @@ -1,73 +0,0 @@ -'use strict'; -module.exports = function generate_oneOf(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $currentBaseId = $it.baseId, - $prevValid = 'prevValid' + $lvl, - $passingSchemas = 'passingSchemas' + $lvl; - out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - } else { - out += ' var ' + ($nextValid) + ' = true; '; - } - if ($i) { - out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { '; - $closingBraces += '}'; - } - out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match exactly one schema in oneOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; return false; '; - } - } - out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }'; - if (it.opts.allErrors) { - out += ' } '; - } - return out; -} diff --git a/node_modules/ajv/lib/dotjs/pattern.js b/node_modules/ajv/lib/dotjs/pattern.js deleted file mode 100644 index 1d74d6b..0000000 --- a/node_modules/ajv/lib/dotjs/pattern.js +++ /dev/null @@ -1,75 +0,0 @@ -'use strict'; -module.exports = function generate_pattern(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema); - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; - } - out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match pattern "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} diff --git a/node_modules/ajv/lib/dotjs/properties.js b/node_modules/ajv/lib/dotjs/properties.js deleted file mode 100644 index 34a82c6..0000000 --- a/node_modules/ajv/lib/dotjs/properties.js +++ /dev/null @@ -1,330 +0,0 @@ -'use strict'; -module.exports = function generate_properties(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $key = 'key' + $lvl, - $idx = 'idx' + $lvl, - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $dataProperties = 'dataProperties' + $lvl; - var $schemaKeys = Object.keys($schema || {}), - $pProperties = it.schema.patternProperties || {}, - $pPropertyKeys = Object.keys($pProperties), - $aProperties = it.schema.additionalProperties, - $someProperties = $schemaKeys.length || $pPropertyKeys.length, - $noAdditional = $aProperties === false, - $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length, - $removeAdditional = it.opts.removeAdditional, - $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional, - $ownProperties = it.opts.ownProperties, - $currentBaseId = it.baseId; - var $required = it.schema.required; - if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required); - out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;'; - if ($ownProperties) { - out += ' var ' + ($dataProperties) + ' = undefined;'; - } - if ($checkAdditional) { - if ($ownProperties) { - out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; - } else { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - } - if ($someProperties) { - out += ' var isAdditional' + ($lvl) + ' = !(false '; - if ($schemaKeys.length) { - if ($schemaKeys.length > 8) { - out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') '; - } else { - var arr1 = $schemaKeys; - if (arr1) { - var $propertyKey, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $propertyKey = arr1[i1 += 1]; - out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' '; - } - } - } - } - if ($pPropertyKeys.length) { - var arr2 = $pPropertyKeys; - if (arr2) { - var $pProperty, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - $pProperty = arr2[$i += 1]; - out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') '; - } - } - } - out += ' ); if (isAdditional' + ($lvl) + ') { '; - } - if ($removeAdditional == 'all') { - out += ' delete ' + ($data) + '[' + ($key) + ']; '; - } else { - var $currentErrorPath = it.errorPath; - var $additionalProperty = '\' + ' + $key + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - } - if ($noAdditional) { - if ($removeAdditional) { - out += ' delete ' + ($data) + '[' + ($key) + ']; '; - } else { - out += ' ' + ($nextValid) + ' = false; '; - var $currErrSchemaPath = $errSchemaPath; - $errSchemaPath = it.errSchemaPath + '/additionalProperties'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \'' + ($additionalProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is an invalid additional property'; - } else { - out += 'should NOT have additional properties'; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - out += ' break; '; - } - } - } else if ($additionalIsSchema) { - if ($removeAdditional == 'failing') { - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - } else { - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - } - } - it.errorPath = $currentErrorPath; - } - if ($someProperties) { - out += ' } '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - var $useDefaults = it.opts.useDefaults && !it.compositeRule; - if ($schemaKeys.length) { - var arr3 = $schemaKeys; - if (arr3) { - var $propertyKey, i3 = -1, - l3 = arr3.length - 1; - while (i3 < l3) { - $propertyKey = arr3[i3 += 1]; - var $sch = $schema[$propertyKey]; - if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { - var $prop = it.util.getProperty($propertyKey), - $passData = $data + $prop, - $hasDefault = $useDefaults && $sch.default !== undefined; - $it.schema = $sch; - $it.schemaPath = $schemaPath + $prop; - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); - $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); - $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - $code = it.util.varReplace($code, $nextData, $passData); - var $useData = $passData; - } else { - var $useData = $nextData; - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; '; - } - if ($hasDefault) { - out += ' ' + ($code) + ' '; - } else { - if ($requiredHash && $requiredHash[$propertyKey]) { - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { ' + ($nextValid) + ' = false; '; - var $currentErrorPath = it.errorPath, - $currErrSchemaPath = $errSchemaPath, - $missingProperty = it.util.escapeQuotes($propertyKey); - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - $errSchemaPath = it.errSchemaPath + '/required'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - it.errorPath = $currentErrorPath; - out += ' } else { '; - } else { - if ($breakOnError) { - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { ' + ($nextValid) + ' = true; } else { '; - } else { - out += ' if (' + ($useData) + ' !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ' ) { '; - } - } - out += ' ' + ($code) + ' } '; - } - } - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if ($pPropertyKeys.length) { - var arr4 = $pPropertyKeys; - if (arr4) { - var $pProperty, i4 = -1, - l4 = arr4.length - 1; - while (i4 < l4) { - $pProperty = arr4[i4 += 1]; - var $sch = $pProperties[$pProperty]; - if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { - $it.schema = $sch; - $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); - $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); - if ($ownProperties) { - out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; - } else { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - } - out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else ' + ($nextValid) + ' = true; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; -} diff --git a/node_modules/ajv/lib/dotjs/propertyNames.js b/node_modules/ajv/lib/dotjs/propertyNames.js deleted file mode 100644 index b2bf295..0000000 --- a/node_modules/ajv/lib/dotjs/propertyNames.js +++ /dev/null @@ -1,82 +0,0 @@ -'use strict'; -module.exports = function generate_propertyNames(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - out += 'var ' + ($errs) + ' = errors;'; - if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - var $key = 'key' + $lvl, - $idx = 'idx' + $lvl, - $i = 'i' + $lvl, - $invalidName = '\' + ' + $key + ' + \'', - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $dataProperties = 'dataProperties' + $lvl, - $ownProperties = it.opts.ownProperties, - $currentBaseId = it.baseId; - if ($ownProperties) { - out += ' var ' + ($dataProperties) + ' = undefined; '; - } - if ($ownProperties) { - out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; - } else { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - } - out += ' var startErrs' + ($lvl) + ' = errors; '; - var $passData = $key; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + ' 0 : it.util.schemaHasRules($propertySch, it.RULES.all)))) { - $required[$required.length] = $property; - } - } - } - } else { - var $required = $schema; - } - } - if ($isData || $required.length) { - var $currentErrorPath = it.errorPath, - $loopRequired = $isData || $required.length >= it.opts.loopRequired, - $ownProperties = it.opts.ownProperties; - if ($breakOnError) { - out += ' var missing' + ($lvl) + '; '; - if ($loopRequired) { - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - out += ' var ' + ($valid) + ' = true; '; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; - } - out += '; if (!' + ($valid) + ') break; } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } else { - out += ' if ( '; - var arr2 = $required; - if (arr2) { - var $propertyKey, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - $propertyKey = arr2[$i += 1]; - if ($i) { - out += ' || '; - } - var $prop = it.util.getProperty($propertyKey), - $useData = $data + $prop; - out += ' ( ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) '; - } - } - out += ') { '; - var $propertyPath = 'missing' + $lvl, - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } - } else { - if ($loopRequired) { - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - if ($isData) { - out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { '; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; - } - out += ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } '; - if ($isData) { - out += ' } '; - } - } else { - var arr3 = $required; - if (arr3) { - var $propertyKey, i3 = -1, - l3 = arr3.length - 1; - while (i3 < l3) { - $propertyKey = arr3[i3 += 1]; - var $prop = it.util.getProperty($propertyKey), - $missingProperty = it.util.escapeQuotes($propertyKey), - $useData = $data + $prop; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; - } - } - } - } - it.errorPath = $currentErrorPath; - } else if ($breakOnError) { - out += ' if (true) {'; - } - return out; -} diff --git a/node_modules/ajv/lib/dotjs/uniqueItems.js b/node_modules/ajv/lib/dotjs/uniqueItems.js deleted file mode 100644 index c4f6536..0000000 --- a/node_modules/ajv/lib/dotjs/uniqueItems.js +++ /dev/null @@ -1,86 +0,0 @@ -'use strict'; -module.exports = function generate_uniqueItems(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (($schema || $isData) && it.opts.uniqueItems !== false) { - if ($isData) { - out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { '; - } - out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { '; - var $itemType = it.schema.items && it.schema.items.type, - $typeIsArray = Array.isArray($itemType); - if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) { - out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } '; - } else { - out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; '; - var $method = 'checkDataType' + ($typeIsArray ? 's' : ''); - out += ' if (' + (it.util[$method]($itemType, 'item', true)) + ') continue; '; - if ($typeIsArray) { - out += ' if (typeof item == \'string\') item = \'"\' + item; '; - } - out += ' if (typeof itemIndices[item] == \'number\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } '; - } - out += ' } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; -} diff --git a/node_modules/ajv/lib/dotjs/validate.js b/node_modules/ajv/lib/dotjs/validate.js deleted file mode 100644 index cd0efc8..0000000 --- a/node_modules/ajv/lib/dotjs/validate.js +++ /dev/null @@ -1,494 +0,0 @@ -'use strict'; -module.exports = function generate_validate(it, $keyword, $ruleType) { - var out = ''; - var $async = it.schema.$async === true, - $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'), - $id = it.self._getId(it.schema); - if (it.opts.strictKeywords) { - var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords); - if ($unknownKwd) { - var $keywordsMsg = 'unknown keyword: ' + $unknownKwd; - if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg); - else throw new Error($keywordsMsg); - } - } - if (it.isTop) { - out += ' var validate = '; - if ($async) { - it.async = true; - out += 'async '; - } - out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \'use strict\'; '; - if ($id && (it.opts.sourceCode || it.opts.processCode)) { - out += ' ' + ('/\*# sourceURL=' + $id + ' */') + ' '; - } - } - if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) { - var $keyword = 'false schema'; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - if (it.schema === false) { - if (it.isTop) { - $breakOnError = true; - } else { - out += ' var ' + ($valid) + ' = false; '; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'false schema') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'boolean schema is false\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } else { - if (it.isTop) { - if ($async) { - out += ' return data; '; - } else { - out += ' validate.errors = null; return true; '; - } - } else { - out += ' var ' + ($valid) + ' = true; '; - } - } - if (it.isTop) { - out += ' }; return validate; '; - } - return out; - } - if (it.isTop) { - var $top = it.isTop, - $lvl = it.level = 0, - $dataLvl = it.dataLevel = 0, - $data = 'data'; - it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema)); - it.baseId = it.baseId || it.rootId; - delete it.isTop; - it.dataPathArr = [undefined]; - if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) { - var $defaultMsg = 'default is ignored in the schema root'; - if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); - else throw new Error($defaultMsg); - } - out += ' var vErrors = null; '; - out += ' var errors = 0; '; - out += ' if (rootData === undefined) rootData = data; '; - } else { - var $lvl = it.level, - $dataLvl = it.dataLevel, - $data = 'data' + ($dataLvl || ''); - if ($id) it.baseId = it.resolve.url(it.baseId, $id); - if ($async && !it.async) throw new Error('async schema in sync schema'); - out += ' var errs_' + ($lvl) + ' = errors;'; - } - var $valid = 'valid' + $lvl, - $breakOnError = !it.opts.allErrors, - $closingBraces1 = '', - $closingBraces2 = ''; - var $errorKeyword; - var $typeSchema = it.schema.type, - $typeIsArray = Array.isArray($typeSchema); - if ($typeSchema && it.opts.nullable && it.schema.nullable === true) { - if ($typeIsArray) { - if ($typeSchema.indexOf('null') == -1) $typeSchema = $typeSchema.concat('null'); - } else if ($typeSchema != 'null') { - $typeSchema = [$typeSchema, 'null']; - $typeIsArray = true; - } - } - if ($typeIsArray && $typeSchema.length == 1) { - $typeSchema = $typeSchema[0]; - $typeIsArray = false; - } - if (it.schema.$ref && $refKeywords) { - if (it.opts.extendRefs == 'fail') { - throw new Error('$ref: validation keywords used in schema at path "' + it.errSchemaPath + '" (see option extendRefs)'); - } else if (it.opts.extendRefs !== true) { - $refKeywords = false; - it.logger.warn('$ref: keywords ignored in schema at path "' + it.errSchemaPath + '"'); - } - } - if (it.schema.$comment && it.opts.$comment) { - out += ' ' + (it.RULES.all.$comment.code(it, '$comment')); - } - if ($typeSchema) { - if (it.opts.coerceTypes) { - var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema); - } - var $rulesGroup = it.RULES.types[$typeSchema]; - if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) { - var $schemaPath = it.schemaPath + '.type', - $errSchemaPath = it.errSchemaPath + '/type'; - var $schemaPath = it.schemaPath + '.type', - $errSchemaPath = it.errSchemaPath + '/type', - $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType'; - out += ' if (' + (it.util[$method]($typeSchema, $data, true)) + ') { '; - if ($coerceToTypes) { - var $dataType = 'dataType' + $lvl, - $coerced = 'coerced' + $lvl; - out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; '; - if (it.opts.coerceTypes == 'array') { - out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ')) ' + ($dataType) + ' = \'array\'; '; - } - out += ' var ' + ($coerced) + ' = undefined; '; - var $bracesCoercion = ''; - var arr1 = $coerceToTypes; - if (arr1) { - var $type, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $type = arr1[$i += 1]; - if ($i) { - out += ' if (' + ($coerced) + ' === undefined) { '; - $bracesCoercion += '}'; - } - if (it.opts.coerceTypes == 'array' && $type != 'array') { - out += ' if (' + ($dataType) + ' == \'array\' && ' + ($data) + '.length == 1) { ' + ($coerced) + ' = ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; } '; - } - if ($type == 'string') { - out += ' if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; '; - } else if ($type == 'number' || $type == 'integer') { - out += ' if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' '; - if ($type == 'integer') { - out += ' && !(' + ($data) + ' % 1)'; - } - out += ')) ' + ($coerced) + ' = +' + ($data) + '; '; - } else if ($type == 'boolean') { - out += ' if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; '; - } else if ($type == 'null') { - out += ' if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; '; - } else if (it.opts.coerceTypes == 'array' && $type == 'array') { - out += ' if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; '; - } - } - } - out += ' ' + ($bracesCoercion) + ' if (' + ($coerced) + ' === undefined) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be '; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', - $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; - out += ' ' + ($data) + ' = ' + ($coerced) + '; '; - if (!$dataLvl) { - out += 'if (' + ($parentData) + ' !== undefined)'; - } - out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } '; - } else { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be '; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } - out += ' } '; - } - } - if (it.schema.$ref && !$refKeywords) { - out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' '; - if ($breakOnError) { - out += ' } if (errors === '; - if ($top) { - out += '0'; - } else { - out += 'errs_' + ($lvl); - } - out += ') { '; - $closingBraces2 += '}'; - } - } else { - var arr2 = it.RULES; - if (arr2) { - var $rulesGroup, i2 = -1, - l2 = arr2.length - 1; - while (i2 < l2) { - $rulesGroup = arr2[i2 += 1]; - if ($shouldUseGroup($rulesGroup)) { - if ($rulesGroup.type) { - out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { '; - } - if (it.opts.useDefaults) { - if ($rulesGroup.type == 'object' && it.schema.properties) { - var $schema = it.schema.properties, - $schemaKeys = Object.keys($schema); - var arr3 = $schemaKeys; - if (arr3) { - var $propertyKey, i3 = -1, - l3 = arr3.length - 1; - while (i3 < l3) { - $propertyKey = arr3[i3 += 1]; - var $sch = $schema[$propertyKey]; - if ($sch.default !== undefined) { - var $passData = $data + it.util.getProperty($propertyKey); - if (it.compositeRule) { - if (it.opts.strictDefaults) { - var $defaultMsg = 'default is ignored for: ' + $passData; - if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); - else throw new Error($defaultMsg); - } - } else { - out += ' if (' + ($passData) + ' === undefined '; - if (it.opts.useDefaults == 'empty') { - out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \'\' '; - } - out += ' ) ' + ($passData) + ' = '; - if (it.opts.useDefaults == 'shared') { - out += ' ' + (it.useDefault($sch.default)) + ' '; - } else { - out += ' ' + (JSON.stringify($sch.default)) + ' '; - } - out += '; '; - } - } - } - } - } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) { - var arr4 = it.schema.items; - if (arr4) { - var $sch, $i = -1, - l4 = arr4.length - 1; - while ($i < l4) { - $sch = arr4[$i += 1]; - if ($sch.default !== undefined) { - var $passData = $data + '[' + $i + ']'; - if (it.compositeRule) { - if (it.opts.strictDefaults) { - var $defaultMsg = 'default is ignored for: ' + $passData; - if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); - else throw new Error($defaultMsg); - } - } else { - out += ' if (' + ($passData) + ' === undefined '; - if (it.opts.useDefaults == 'empty') { - out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \'\' '; - } - out += ' ) ' + ($passData) + ' = '; - if (it.opts.useDefaults == 'shared') { - out += ' ' + (it.useDefault($sch.default)) + ' '; - } else { - out += ' ' + (JSON.stringify($sch.default)) + ' '; - } - out += '; '; - } - } - } - } - } - } - var arr5 = $rulesGroup.rules; - if (arr5) { - var $rule, i5 = -1, - l5 = arr5.length - 1; - while (i5 < l5) { - $rule = arr5[i5 += 1]; - if ($shouldUseRule($rule)) { - var $code = $rule.code(it, $rule.keyword, $rulesGroup.type); - if ($code) { - out += ' ' + ($code) + ' '; - if ($breakOnError) { - $closingBraces1 += '}'; - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces1) + ' '; - $closingBraces1 = ''; - } - if ($rulesGroup.type) { - out += ' } '; - if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) { - out += ' else { '; - var $schemaPath = it.schemaPath + '.type', - $errSchemaPath = it.errSchemaPath + '/type'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be '; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - } - } - if ($breakOnError) { - out += ' if (errors === '; - if ($top) { - out += '0'; - } else { - out += 'errs_' + ($lvl); - } - out += ') { '; - $closingBraces2 += '}'; - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces2) + ' '; - } - if ($top) { - if ($async) { - out += ' if (errors === 0) return data; '; - out += ' else throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; '; - out += ' return errors === 0; '; - } - out += ' }; return validate;'; - } else { - out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';'; - } - out = it.util.cleanUpCode(out); - if ($top) { - out = it.util.finalCleanUpCode(out, $async); - } - - function $shouldUseGroup($rulesGroup) { - var rules = $rulesGroup.rules; - for (var i = 0; i < rules.length; i++) - if ($shouldUseRule(rules[i])) return true; - } - - function $shouldUseRule($rule) { - return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule)); - } - - function $ruleImplementsSomeKeyword($rule) { - var impl = $rule.implements; - for (var i = 0; i < impl.length; i++) - if (it.schema[impl[i]] !== undefined) return true; - } - return out; -} diff --git a/node_modules/ajv/lib/keyword.js b/node_modules/ajv/lib/keyword.js deleted file mode 100644 index 5fec19a..0000000 --- a/node_modules/ajv/lib/keyword.js +++ /dev/null @@ -1,146 +0,0 @@ -'use strict'; - -var IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i; -var customRuleCode = require('./dotjs/custom'); -var definitionSchema = require('./definition_schema'); - -module.exports = { - add: addKeyword, - get: getKeyword, - remove: removeKeyword, - validate: validateKeyword -}; - - -/** - * Define custom keyword - * @this Ajv - * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords). - * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`. - * @return {Ajv} this for method chaining - */ -function addKeyword(keyword, definition) { - /* jshint validthis: true */ - /* eslint no-shadow: 0 */ - var RULES = this.RULES; - if (RULES.keywords[keyword]) - throw new Error('Keyword ' + keyword + ' is already defined'); - - if (!IDENTIFIER.test(keyword)) - throw new Error('Keyword ' + keyword + ' is not a valid identifier'); - - if (definition) { - this.validateKeyword(definition, true); - - var dataType = definition.type; - if (Array.isArray(dataType)) { - for (var i=0; i ../ajv-dist/bower.json - cd ../ajv-dist - - if [[ `git status --porcelain` ]]; then - echo "Changes detected. Updating master branch..." - git add -A - git commit -m "updated by travis build #$TRAVIS_BUILD_NUMBER" - git push --quiet origin master > /dev/null 2>&1 - fi - - echo "Publishing tag..." - - git tag $TRAVIS_TAG - git push --tags > /dev/null 2>&1 - - echo "Done" -fi diff --git a/node_modules/ajv/scripts/travis-gh-pages b/node_modules/ajv/scripts/travis-gh-pages deleted file mode 100755 index 46ded16..0000000 --- a/node_modules/ajv/scripts/travis-gh-pages +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env bash - -set -e - -if [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_PULL_REQUEST" == "false" && $TRAVIS_JOB_NUMBER =~ ".3" ]]; then - git diff --name-only $TRAVIS_COMMIT_RANGE | grep -qE '\.md$|^LICENSE$|travis-gh-pages$' && { - rm -rf ../gh-pages - git clone -b gh-pages --single-branch https://${GITHUB_TOKEN}@github.com/epoberezkin/ajv.git ../gh-pages - mkdir -p ../gh-pages/_source - cp *.md ../gh-pages/_source - cp LICENSE ../gh-pages/_source - currentDir=$(pwd) - cd ../gh-pages - $currentDir/node_modules/.bin/gh-pages-generator - # remove logo from README - sed -i -E "s/]+ajv_logo[^>]+>//" index.md - git config user.email "$GIT_USER_EMAIL" - git config user.name "$GIT_USER_NAME" - git add . - git commit -am "updated by travis build #$TRAVIS_BUILD_NUMBER" - git push --quiet origin gh-pages > /dev/null 2>&1 - } -fi diff --git a/node_modules/ansi-styles/index.js b/node_modules/ansi-styles/index.js deleted file mode 100644 index 90a871c..0000000 --- a/node_modules/ansi-styles/index.js +++ /dev/null @@ -1,165 +0,0 @@ -'use strict'; -const colorConvert = require('color-convert'); - -const wrapAnsi16 = (fn, offset) => function () { - const code = fn.apply(colorConvert, arguments); - return `\u001B[${code + offset}m`; -}; - -const wrapAnsi256 = (fn, offset) => function () { - const code = fn.apply(colorConvert, arguments); - return `\u001B[${38 + offset};5;${code}m`; -}; - -const wrapAnsi16m = (fn, offset) => function () { - const rgb = fn.apply(colorConvert, arguments); - return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; -}; - -function assembleStyles() { - const codes = new Map(); - const styles = { - modifier: { - reset: [0, 0], - // 21 isn't widely supported and 22 does the same thing - bold: [1, 22], - dim: [2, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - hidden: [8, 28], - strikethrough: [9, 29] - }, - color: { - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], - gray: [90, 39], - - // Bright color - redBright: [91, 39], - greenBright: [92, 39], - yellowBright: [93, 39], - blueBright: [94, 39], - magentaBright: [95, 39], - cyanBright: [96, 39], - whiteBright: [97, 39] - }, - bgColor: { - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49], - - // Bright color - bgBlackBright: [100, 49], - bgRedBright: [101, 49], - bgGreenBright: [102, 49], - bgYellowBright: [103, 49], - bgBlueBright: [104, 49], - bgMagentaBright: [105, 49], - bgCyanBright: [106, 49], - bgWhiteBright: [107, 49] - } - }; - - // Fix humans - styles.color.grey = styles.color.gray; - - for (const groupName of Object.keys(styles)) { - const group = styles[groupName]; - - for (const styleName of Object.keys(group)) { - const style = group[styleName]; - - styles[styleName] = { - open: `\u001B[${style[0]}m`, - close: `\u001B[${style[1]}m` - }; - - group[styleName] = styles[styleName]; - - codes.set(style[0], style[1]); - } - - Object.defineProperty(styles, groupName, { - value: group, - enumerable: false - }); - - Object.defineProperty(styles, 'codes', { - value: codes, - enumerable: false - }); - } - - const ansi2ansi = n => n; - const rgb2rgb = (r, g, b) => [r, g, b]; - - styles.color.close = '\u001B[39m'; - styles.bgColor.close = '\u001B[49m'; - - styles.color.ansi = { - ansi: wrapAnsi16(ansi2ansi, 0) - }; - styles.color.ansi256 = { - ansi256: wrapAnsi256(ansi2ansi, 0) - }; - styles.color.ansi16m = { - rgb: wrapAnsi16m(rgb2rgb, 0) - }; - - styles.bgColor.ansi = { - ansi: wrapAnsi16(ansi2ansi, 10) - }; - styles.bgColor.ansi256 = { - ansi256: wrapAnsi256(ansi2ansi, 10) - }; - styles.bgColor.ansi16m = { - rgb: wrapAnsi16m(rgb2rgb, 10) - }; - - for (let key of Object.keys(colorConvert)) { - if (typeof colorConvert[key] !== 'object') { - continue; - } - - const suite = colorConvert[key]; - - if (key === 'ansi16') { - key = 'ansi'; - } - - if ('ansi16' in suite) { - styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); - styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); - } - - if ('ansi256' in suite) { - styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); - styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); - } - - if ('rgb' in suite) { - styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); - styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); - } - } - - return styles; -} - -// Make the export immutable -Object.defineProperty(module, 'exports', { - enumerable: true, - get: assembleStyles -}); diff --git a/node_modules/ansi-styles/license b/node_modules/ansi-styles/license deleted file mode 100644 index e7af2f7..0000000 --- a/node_modules/ansi-styles/license +++ /dev/null @@ -1,9 +0,0 @@ -MIT License - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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. diff --git a/node_modules/ansi-styles/package.json b/node_modules/ansi-styles/package.json deleted file mode 100644 index 0974eb1..0000000 --- a/node_modules/ansi-styles/package.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "_from": "ansi-styles@^3.2.1", - "_id": "ansi-styles@3.2.1", - "_inBundle": false, - "_integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "_location": "/ansi-styles", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-styles@^3.2.1", - "name": "ansi-styles", - "escapedName": "ansi-styles", - "rawSpec": "^3.2.1", - "saveSpec": null, - "fetchSpec": "^3.2.1" - }, - "_requiredBy": [ - "/chalk" - ], - "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "_shasum": "41fbb20243e50b12be0f04b8dedbf07520ce841d", - "_spec": "ansi-styles@^3.2.1", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/chalk", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "sindresorhus.com" - }, - "ava": { - "require": "babel-polyfill" - }, - "bugs": { - "url": "https://github.com/chalk/ansi-styles/issues" - }, - "bundleDependencies": false, - "dependencies": { - "color-convert": "^1.9.0" - }, - "deprecated": false, - "description": "ANSI escape codes for styling strings in the terminal", - "devDependencies": { - "ava": "*", - "babel-polyfill": "^6.23.0", - "svg-term-cli": "^2.1.1", - "xo": "*" - }, - "engines": { - "node": ">=4" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/chalk/ansi-styles#readme", - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "license": "MIT", - "name": "ansi-styles", - "repository": { - "type": "git", - "url": "git+https://github.com/chalk/ansi-styles.git" - }, - "scripts": { - "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor", - "test": "xo && ava" - }, - "version": "3.2.1" -} diff --git a/node_modules/ansi-styles/readme.md b/node_modules/ansi-styles/readme.md deleted file mode 100644 index 3158e2d..0000000 --- a/node_modules/ansi-styles/readme.md +++ /dev/null @@ -1,147 +0,0 @@ -# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles) - -> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal - -You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings. - - - - -## Install - -``` -$ npm install ansi-styles -``` - - -## Usage - -```js -const style = require('ansi-styles'); - -console.log(`${style.green.open}Hello world!${style.green.close}`); - - -// Color conversion between 16/256/truecolor -// NOTE: If conversion goes to 16 colors or 256 colors, the original color -// may be degraded to fit that color palette. This means terminals -// that do not support 16 million colors will best-match the -// original color. -console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close); -console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close); -console.log(style.color.ansi16m.hex('#ABCDEF') + 'Hello world!' + style.color.close); -``` - -## API - -Each style has an `open` and `close` property. - - -## Styles - -### Modifiers - -- `reset` -- `bold` -- `dim` -- `italic` *(Not widely supported)* -- `underline` -- `inverse` -- `hidden` -- `strikethrough` *(Not widely supported)* - -### Colors - -- `black` -- `red` -- `green` -- `yellow` -- `blue` -- `magenta` -- `cyan` -- `white` -- `gray` ("bright black") -- `redBright` -- `greenBright` -- `yellowBright` -- `blueBright` -- `magentaBright` -- `cyanBright` -- `whiteBright` - -### Background colors - -- `bgBlack` -- `bgRed` -- `bgGreen` -- `bgYellow` -- `bgBlue` -- `bgMagenta` -- `bgCyan` -- `bgWhite` -- `bgBlackBright` -- `bgRedBright` -- `bgGreenBright` -- `bgYellowBright` -- `bgBlueBright` -- `bgMagentaBright` -- `bgCyanBright` -- `bgWhiteBright` - - -## Advanced usage - -By default, you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module. - -- `style.modifier` -- `style.color` -- `style.bgColor` - -###### Example - -```js -console.log(style.color.green.open); -``` - -Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values. - -###### Example - -```js -console.log(style.codes.get(36)); -//=> 39 -``` - - -## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728) - -`ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors. - -To use these, call the associated conversion function with the intended output, for example: - -```js -style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code -style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code - -style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code -style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code - -style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code -style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code -``` - - -## Related - -- [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal - - -## Maintainers - -- [Sindre Sorhus](https://github.com/sindresorhus) -- [Josh Junon](https://github.com/qix-) - - -## License - -MIT diff --git a/node_modules/asn1/LICENSE b/node_modules/asn1/LICENSE deleted file mode 100644 index 9b5dcdb..0000000 --- a/node_modules/asn1/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Mark Cavage, All rights reserved. - -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 diff --git a/node_modules/asn1/README.md b/node_modules/asn1/README.md deleted file mode 100644 index 2208210..0000000 --- a/node_modules/asn1/README.md +++ /dev/null @@ -1,50 +0,0 @@ -node-asn1 is a library for encoding and decoding ASN.1 datatypes in pure JS. -Currently BER encoding is supported; at some point I'll likely have to do DER. - -## Usage - -Mostly, if you're *actually* needing to read and write ASN.1, you probably don't -need this readme to explain what and why. If you have no idea what ASN.1 is, -see this: ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc - -The source is pretty much self-explanatory, and has read/write methods for the -common types out there. - -### Decoding - -The following reads an ASN.1 sequence with a boolean. - - var Ber = require('asn1').Ber; - - var reader = new Ber.Reader(Buffer.from([0x30, 0x03, 0x01, 0x01, 0xff])); - - reader.readSequence(); - console.log('Sequence len: ' + reader.length); - if (reader.peek() === Ber.Boolean) - console.log(reader.readBoolean()); - -### Encoding - -The following generates the same payload as above. - - var Ber = require('asn1').Ber; - - var writer = new Ber.Writer(); - - writer.startSequence(); - writer.writeBoolean(true); - writer.endSequence(); - - console.log(writer.buffer); - -## Installation - - npm install asn1 - -## License - -MIT. - -## Bugs - -See . diff --git a/node_modules/asn1/lib/ber/errors.js b/node_modules/asn1/lib/ber/errors.js deleted file mode 100644 index 4557b8a..0000000 --- a/node_modules/asn1/lib/ber/errors.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - - -module.exports = { - - newInvalidAsn1Error: function (msg) { - var e = new Error(); - e.name = 'InvalidAsn1Error'; - e.message = msg || ''; - return e; - } - -}; diff --git a/node_modules/asn1/lib/ber/index.js b/node_modules/asn1/lib/ber/index.js deleted file mode 100644 index 387d132..0000000 --- a/node_modules/asn1/lib/ber/index.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - -var errors = require('./errors'); -var types = require('./types'); - -var Reader = require('./reader'); -var Writer = require('./writer'); - - -// --- Exports - -module.exports = { - - Reader: Reader, - - Writer: Writer - -}; - -for (var t in types) { - if (types.hasOwnProperty(t)) - module.exports[t] = types[t]; -} -for (var e in errors) { - if (errors.hasOwnProperty(e)) - module.exports[e] = errors[e]; -} diff --git a/node_modules/asn1/lib/ber/reader.js b/node_modules/asn1/lib/ber/reader.js deleted file mode 100644 index 8a7e4ca..0000000 --- a/node_modules/asn1/lib/ber/reader.js +++ /dev/null @@ -1,262 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - -var assert = require('assert'); -var Buffer = require('safer-buffer').Buffer; - -var ASN1 = require('./types'); -var errors = require('./errors'); - - -// --- Globals - -var newInvalidAsn1Error = errors.newInvalidAsn1Error; - - - -// --- API - -function Reader(data) { - if (!data || !Buffer.isBuffer(data)) - throw new TypeError('data must be a node Buffer'); - - this._buf = data; - this._size = data.length; - - // These hold the "current" state - this._len = 0; - this._offset = 0; -} - -Object.defineProperty(Reader.prototype, 'length', { - enumerable: true, - get: function () { return (this._len); } -}); - -Object.defineProperty(Reader.prototype, 'offset', { - enumerable: true, - get: function () { return (this._offset); } -}); - -Object.defineProperty(Reader.prototype, 'remain', { - get: function () { return (this._size - this._offset); } -}); - -Object.defineProperty(Reader.prototype, 'buffer', { - get: function () { return (this._buf.slice(this._offset)); } -}); - - -/** - * Reads a single byte and advances offset; you can pass in `true` to make this - * a "peek" operation (i.e., get the byte, but don't advance the offset). - * - * @param {Boolean} peek true means don't move offset. - * @return {Number} the next byte, null if not enough data. - */ -Reader.prototype.readByte = function (peek) { - if (this._size - this._offset < 1) - return null; - - var b = this._buf[this._offset] & 0xff; - - if (!peek) - this._offset += 1; - - return b; -}; - - -Reader.prototype.peek = function () { - return this.readByte(true); -}; - - -/** - * Reads a (potentially) variable length off the BER buffer. This call is - * not really meant to be called directly, as callers have to manipulate - * the internal buffer afterwards. - * - * As a result of this call, you can call `Reader.length`, until the - * next thing called that does a readLength. - * - * @return {Number} the amount of offset to advance the buffer. - * @throws {InvalidAsn1Error} on bad ASN.1 - */ -Reader.prototype.readLength = function (offset) { - if (offset === undefined) - offset = this._offset; - - if (offset >= this._size) - return null; - - var lenB = this._buf[offset++] & 0xff; - if (lenB === null) - return null; - - if ((lenB & 0x80) === 0x80) { - lenB &= 0x7f; - - if (lenB === 0) - throw newInvalidAsn1Error('Indefinite length not supported'); - - if (lenB > 4) - throw newInvalidAsn1Error('encoding too long'); - - if (this._size - offset < lenB) - return null; - - this._len = 0; - for (var i = 0; i < lenB; i++) - this._len = (this._len << 8) + (this._buf[offset++] & 0xff); - - } else { - // Wasn't a variable length - this._len = lenB; - } - - return offset; -}; - - -/** - * Parses the next sequence in this BER buffer. - * - * To get the length of the sequence, call `Reader.length`. - * - * @return {Number} the sequence's tag. - */ -Reader.prototype.readSequence = function (tag) { - var seq = this.peek(); - if (seq === null) - return null; - if (tag !== undefined && tag !== seq) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + seq.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - this._offset = o; - return seq; -}; - - -Reader.prototype.readInt = function () { - return this._readTag(ASN1.Integer); -}; - - -Reader.prototype.readBoolean = function () { - return (this._readTag(ASN1.Boolean) === 0 ? false : true); -}; - - -Reader.prototype.readEnumeration = function () { - return this._readTag(ASN1.Enumeration); -}; - - -Reader.prototype.readString = function (tag, retbuf) { - if (!tag) - tag = ASN1.OctetString; - - var b = this.peek(); - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - - if (o === null) - return null; - - if (this.length > this._size - o) - return null; - - this._offset = o; - - if (this.length === 0) - return retbuf ? Buffer.alloc(0) : ''; - - var str = this._buf.slice(this._offset, this._offset + this.length); - this._offset += this.length; - - return retbuf ? str : str.toString('utf8'); -}; - -Reader.prototype.readOID = function (tag) { - if (!tag) - tag = ASN1.OID; - - var b = this.readString(tag, true); - if (b === null) - return null; - - var values = []; - var value = 0; - - for (var i = 0; i < b.length; i++) { - var byte = b[i] & 0xff; - - value <<= 7; - value += byte & 0x7f; - if ((byte & 0x80) === 0) { - values.push(value); - value = 0; - } - } - - value = values.shift(); - values.unshift(value % 40); - values.unshift((value / 40) >> 0); - - return values.join('.'); -}; - - -Reader.prototype._readTag = function (tag) { - assert.ok(tag !== undefined); - - var b = this.peek(); - - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - if (this.length > 4) - throw newInvalidAsn1Error('Integer too long: ' + this.length); - - if (this.length > this._size - o) - return null; - this._offset = o; - - var fb = this._buf[this._offset]; - var value = 0; - - for (var i = 0; i < this.length; i++) { - value <<= 8; - value |= (this._buf[this._offset++] & 0xff); - } - - if ((fb & 0x80) === 0x80 && i !== 4) - value -= (1 << (i * 8)); - - return value >> 0; -}; - - - -// --- Exported API - -module.exports = Reader; diff --git a/node_modules/asn1/lib/ber/types.js b/node_modules/asn1/lib/ber/types.js deleted file mode 100644 index 8aea000..0000000 --- a/node_modules/asn1/lib/ber/types.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - - -module.exports = { - EOC: 0, - Boolean: 1, - Integer: 2, - BitString: 3, - OctetString: 4, - Null: 5, - OID: 6, - ObjectDescriptor: 7, - External: 8, - Real: 9, // float - Enumeration: 10, - PDV: 11, - Utf8String: 12, - RelativeOID: 13, - Sequence: 16, - Set: 17, - NumericString: 18, - PrintableString: 19, - T61String: 20, - VideotexString: 21, - IA5String: 22, - UTCTime: 23, - GeneralizedTime: 24, - GraphicString: 25, - VisibleString: 26, - GeneralString: 28, - UniversalString: 29, - CharacterString: 30, - BMPString: 31, - Constructor: 32, - Context: 128 -}; diff --git a/node_modules/asn1/lib/ber/writer.js b/node_modules/asn1/lib/ber/writer.js deleted file mode 100644 index 3515acf..0000000 --- a/node_modules/asn1/lib/ber/writer.js +++ /dev/null @@ -1,317 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - -var assert = require('assert'); -var Buffer = require('safer-buffer').Buffer; -var ASN1 = require('./types'); -var errors = require('./errors'); - - -// --- Globals - -var newInvalidAsn1Error = errors.newInvalidAsn1Error; - -var DEFAULT_OPTS = { - size: 1024, - growthFactor: 8 -}; - - -// --- Helpers - -function merge(from, to) { - assert.ok(from); - assert.equal(typeof (from), 'object'); - assert.ok(to); - assert.equal(typeof (to), 'object'); - - var keys = Object.getOwnPropertyNames(from); - keys.forEach(function (key) { - if (to[key]) - return; - - var value = Object.getOwnPropertyDescriptor(from, key); - Object.defineProperty(to, key, value); - }); - - return to; -} - - - -// --- API - -function Writer(options) { - options = merge(DEFAULT_OPTS, options || {}); - - this._buf = Buffer.alloc(options.size || 1024); - this._size = this._buf.length; - this._offset = 0; - this._options = options; - - // A list of offsets in the buffer where we need to insert - // sequence tag/len pairs. - this._seq = []; -} - -Object.defineProperty(Writer.prototype, 'buffer', { - get: function () { - if (this._seq.length) - throw newInvalidAsn1Error(this._seq.length + ' unended sequence(s)'); - - return (this._buf.slice(0, this._offset)); - } -}); - -Writer.prototype.writeByte = function (b) { - if (typeof (b) !== 'number') - throw new TypeError('argument must be a Number'); - - this._ensure(1); - this._buf[this._offset++] = b; -}; - - -Writer.prototype.writeInt = function (i, tag) { - if (typeof (i) !== 'number') - throw new TypeError('argument must be a Number'); - if (typeof (tag) !== 'number') - tag = ASN1.Integer; - - var sz = 4; - - while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000 >> 0)) && - (sz > 1)) { - sz--; - i <<= 8; - } - - if (sz > 4) - throw newInvalidAsn1Error('BER ints cannot be > 0xffffffff'); - - this._ensure(2 + sz); - this._buf[this._offset++] = tag; - this._buf[this._offset++] = sz; - - while (sz-- > 0) { - this._buf[this._offset++] = ((i & 0xff000000) >>> 24); - i <<= 8; - } - -}; - - -Writer.prototype.writeNull = function () { - this.writeByte(ASN1.Null); - this.writeByte(0x00); -}; - - -Writer.prototype.writeEnumeration = function (i, tag) { - if (typeof (i) !== 'number') - throw new TypeError('argument must be a Number'); - if (typeof (tag) !== 'number') - tag = ASN1.Enumeration; - - return this.writeInt(i, tag); -}; - - -Writer.prototype.writeBoolean = function (b, tag) { - if (typeof (b) !== 'boolean') - throw new TypeError('argument must be a Boolean'); - if (typeof (tag) !== 'number') - tag = ASN1.Boolean; - - this._ensure(3); - this._buf[this._offset++] = tag; - this._buf[this._offset++] = 0x01; - this._buf[this._offset++] = b ? 0xff : 0x00; -}; - - -Writer.prototype.writeString = function (s, tag) { - if (typeof (s) !== 'string') - throw new TypeError('argument must be a string (was: ' + typeof (s) + ')'); - if (typeof (tag) !== 'number') - tag = ASN1.OctetString; - - var len = Buffer.byteLength(s); - this.writeByte(tag); - this.writeLength(len); - if (len) { - this._ensure(len); - this._buf.write(s, this._offset); - this._offset += len; - } -}; - - -Writer.prototype.writeBuffer = function (buf, tag) { - if (typeof (tag) !== 'number') - throw new TypeError('tag must be a number'); - if (!Buffer.isBuffer(buf)) - throw new TypeError('argument must be a buffer'); - - this.writeByte(tag); - this.writeLength(buf.length); - this._ensure(buf.length); - buf.copy(this._buf, this._offset, 0, buf.length); - this._offset += buf.length; -}; - - -Writer.prototype.writeStringArray = function (strings) { - if ((!strings instanceof Array)) - throw new TypeError('argument must be an Array[String]'); - - var self = this; - strings.forEach(function (s) { - self.writeString(s); - }); -}; - -// This is really to solve DER cases, but whatever for now -Writer.prototype.writeOID = function (s, tag) { - if (typeof (s) !== 'string') - throw new TypeError('argument must be a string'); - if (typeof (tag) !== 'number') - tag = ASN1.OID; - - if (!/^([0-9]+\.){3,}[0-9]+$/.test(s)) - throw new Error('argument is not a valid OID string'); - - function encodeOctet(bytes, octet) { - if (octet < 128) { - bytes.push(octet); - } else if (octet < 16384) { - bytes.push((octet >>> 7) | 0x80); - bytes.push(octet & 0x7F); - } else if (octet < 2097152) { - bytes.push((octet >>> 14) | 0x80); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } else if (octet < 268435456) { - bytes.push((octet >>> 21) | 0x80); - bytes.push(((octet >>> 14) | 0x80) & 0xFF); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } else { - bytes.push(((octet >>> 28) | 0x80) & 0xFF); - bytes.push(((octet >>> 21) | 0x80) & 0xFF); - bytes.push(((octet >>> 14) | 0x80) & 0xFF); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } - } - - var tmp = s.split('.'); - var bytes = []; - bytes.push(parseInt(tmp[0], 10) * 40 + parseInt(tmp[1], 10)); - tmp.slice(2).forEach(function (b) { - encodeOctet(bytes, parseInt(b, 10)); - }); - - var self = this; - this._ensure(2 + bytes.length); - this.writeByte(tag); - this.writeLength(bytes.length); - bytes.forEach(function (b) { - self.writeByte(b); - }); -}; - - -Writer.prototype.writeLength = function (len) { - if (typeof (len) !== 'number') - throw new TypeError('argument must be a Number'); - - this._ensure(4); - - if (len <= 0x7f) { - this._buf[this._offset++] = len; - } else if (len <= 0xff) { - this._buf[this._offset++] = 0x81; - this._buf[this._offset++] = len; - } else if (len <= 0xffff) { - this._buf[this._offset++] = 0x82; - this._buf[this._offset++] = len >> 8; - this._buf[this._offset++] = len; - } else if (len <= 0xffffff) { - this._buf[this._offset++] = 0x83; - this._buf[this._offset++] = len >> 16; - this._buf[this._offset++] = len >> 8; - this._buf[this._offset++] = len; - } else { - throw newInvalidAsn1Error('Length too long (> 4 bytes)'); - } -}; - -Writer.prototype.startSequence = function (tag) { - if (typeof (tag) !== 'number') - tag = ASN1.Sequence | ASN1.Constructor; - - this.writeByte(tag); - this._seq.push(this._offset); - this._ensure(3); - this._offset += 3; -}; - - -Writer.prototype.endSequence = function () { - var seq = this._seq.pop(); - var start = seq + 3; - var len = this._offset - start; - - if (len <= 0x7f) { - this._shift(start, len, -2); - this._buf[seq] = len; - } else if (len <= 0xff) { - this._shift(start, len, -1); - this._buf[seq] = 0x81; - this._buf[seq + 1] = len; - } else if (len <= 0xffff) { - this._buf[seq] = 0x82; - this._buf[seq + 1] = len >> 8; - this._buf[seq + 2] = len; - } else if (len <= 0xffffff) { - this._shift(start, len, 1); - this._buf[seq] = 0x83; - this._buf[seq + 1] = len >> 16; - this._buf[seq + 2] = len >> 8; - this._buf[seq + 3] = len; - } else { - throw newInvalidAsn1Error('Sequence too long'); - } -}; - - -Writer.prototype._shift = function (start, len, shift) { - assert.ok(start !== undefined); - assert.ok(len !== undefined); - assert.ok(shift); - - this._buf.copy(this._buf, start + shift, start, start + len); - this._offset += shift; -}; - -Writer.prototype._ensure = function (len) { - assert.ok(len); - - if (this._size - this._offset < len) { - var sz = this._size * this._options.growthFactor; - if (sz - this._offset < len) - sz += len; - - var buf = Buffer.alloc(sz); - - this._buf.copy(buf, 0, 0, this._offset); - this._buf = buf; - this._size = sz; - } -}; - - - -// --- Exported API - -module.exports = Writer; diff --git a/node_modules/asn1/lib/index.js b/node_modules/asn1/lib/index.js deleted file mode 100644 index ede3ab2..0000000 --- a/node_modules/asn1/lib/index.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - -// If you have no idea what ASN.1 or BER is, see this: -// ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc - -var Ber = require('./ber/index'); - - - -// --- Exported API - -module.exports = { - - Ber: Ber, - - BerReader: Ber.Reader, - - BerWriter: Ber.Writer - -}; diff --git a/node_modules/asn1/package.json b/node_modules/asn1/package.json deleted file mode 100644 index 67d2c0d..0000000 --- a/node_modules/asn1/package.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "_from": "asn1@~0.2.3", - "_id": "asn1@0.2.4", - "_inBundle": false, - "_integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "_location": "/asn1", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "asn1@~0.2.3", - "name": "asn1", - "escapedName": "asn1", - "rawSpec": "~0.2.3", - "saveSpec": null, - "fetchSpec": "~0.2.3" - }, - "_requiredBy": [ - "/sshpk" - ], - "_resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "_shasum": "8d2475dfab553bb33e77b54e59e880bb8ce23136", - "_spec": "asn1@~0.2.3", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/sshpk", - "author": { - "name": "Joyent", - "url": "joyent.com" - }, - "bugs": { - "url": "https://github.com/joyent/node-asn1/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Mark Cavage", - "email": "mcavage@gmail.com" - }, - { - "name": "David Gwynne", - "email": "loki@animata.net" - }, - { - "name": "Yunong Xiao", - "email": "yunong@joyent.com" - }, - { - "name": "Alex Wilson", - "email": "alex.wilson@joyent.com" - } - ], - "dependencies": { - "safer-buffer": "~2.1.0" - }, - "deprecated": false, - "description": "Contains parsers and serializers for ASN.1 (currently BER only)", - "devDependencies": { - "eslint": "2.13.1", - "eslint-plugin-joyent": "~1.3.0", - "faucet": "0.0.1", - "istanbul": "^0.3.6", - "tape": "^3.5.0" - }, - "homepage": "https://github.com/joyent/node-asn1#readme", - "license": "MIT", - "main": "lib/index.js", - "name": "asn1", - "repository": { - "type": "git", - "url": "git://github.com/joyent/node-asn1.git" - }, - "scripts": { - "test": "tape ./test/ber/*.test.js" - }, - "version": "0.2.4" -} diff --git a/node_modules/assert-plus/AUTHORS b/node_modules/assert-plus/AUTHORS deleted file mode 100644 index 1923524..0000000 --- a/node_modules/assert-plus/AUTHORS +++ /dev/null @@ -1,6 +0,0 @@ -Dave Eddy -Fred Kuo -Lars-Magnus Skog -Mark Cavage -Patrick Mooney -Rob Gulewich diff --git a/node_modules/assert-plus/CHANGES.md b/node_modules/assert-plus/CHANGES.md deleted file mode 100644 index 57d92bf..0000000 --- a/node_modules/assert-plus/CHANGES.md +++ /dev/null @@ -1,14 +0,0 @@ -# assert-plus Changelog - -## 1.0.0 - -- *BREAKING* assert.number (and derivatives) now accept Infinity as valid input -- Add assert.finite check. Previous assert.number callers should use this if - they expect Infinity inputs to throw. - -## 0.2.0 - -- Fix `assert.object(null)` so it throws -- Fix optional/arrayOf exports for non-type-of asserts -- Add optiona/arrayOf exports for Stream/Date/Regex/uuid -- Add basic unit test coverage diff --git a/node_modules/assert-plus/README.md b/node_modules/assert-plus/README.md deleted file mode 100644 index ec200d1..0000000 --- a/node_modules/assert-plus/README.md +++ /dev/null @@ -1,162 +0,0 @@ -# assert-plus - -This library is a super small wrapper over node's assert module that has two -things: (1) the ability to disable assertions with the environment variable -NODE\_NDEBUG, and (2) some API wrappers for argument testing. Like -`assert.string(myArg, 'myArg')`. As a simple example, most of my code looks -like this: - -```javascript - var assert = require('assert-plus'); - - function fooAccount(options, callback) { - assert.object(options, 'options'); - assert.number(options.id, 'options.id'); - assert.bool(options.isManager, 'options.isManager'); - assert.string(options.name, 'options.name'); - assert.arrayOfString(options.email, 'options.email'); - assert.func(callback, 'callback'); - - // Do stuff - callback(null, {}); - } -``` - -# API - -All methods that *aren't* part of node's core assert API are simply assumed to -take an argument, and then a string 'name' that's not a message; `AssertionError` -will be thrown if the assertion fails with a message like: - - AssertionError: foo (string) is required - at test (/home/mark/work/foo/foo.js:3:9) - at Object. (/home/mark/work/foo/foo.js:15:1) - at Module._compile (module.js:446:26) - at Object..js (module.js:464:10) - at Module.load (module.js:353:31) - at Function._load (module.js:311:12) - at Array.0 (module.js:484:10) - at EventEmitter._tickCallback (node.js:190:38) - -from: - -```javascript - function test(foo) { - assert.string(foo, 'foo'); - } -``` - -There you go. You can check that arrays are of a homogeneous type with `Arrayof$Type`: - -```javascript - function test(foo) { - assert.arrayOfString(foo, 'foo'); - } -``` - -You can assert IFF an argument is not `undefined` (i.e., an optional arg): - -```javascript - assert.optionalString(foo, 'foo'); -``` - -Lastly, you can opt-out of assertion checking altogether by setting the -environment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have -lots of assertions, and don't want to pay `typeof ()` taxes to v8 in -production. Be advised: The standard functions re-exported from `assert` are -also disabled in assert-plus if NDEBUG is specified. Using them directly from -the `assert` module avoids this behavior. - -The complete list of APIs is: - -* assert.array -* assert.bool -* assert.buffer -* assert.func -* assert.number -* assert.finite -* assert.object -* assert.string -* assert.stream -* assert.date -* assert.regexp -* assert.uuid -* assert.arrayOfArray -* assert.arrayOfBool -* assert.arrayOfBuffer -* assert.arrayOfFunc -* assert.arrayOfNumber -* assert.arrayOfFinite -* assert.arrayOfObject -* assert.arrayOfString -* assert.arrayOfStream -* assert.arrayOfDate -* assert.arrayOfRegexp -* assert.arrayOfUuid -* assert.optionalArray -* assert.optionalBool -* assert.optionalBuffer -* assert.optionalFunc -* assert.optionalNumber -* assert.optionalFinite -* assert.optionalObject -* assert.optionalString -* assert.optionalStream -* assert.optionalDate -* assert.optionalRegexp -* assert.optionalUuid -* assert.optionalArrayOfArray -* assert.optionalArrayOfBool -* assert.optionalArrayOfBuffer -* assert.optionalArrayOfFunc -* assert.optionalArrayOfNumber -* assert.optionalArrayOfFinite -* assert.optionalArrayOfObject -* assert.optionalArrayOfString -* assert.optionalArrayOfStream -* assert.optionalArrayOfDate -* assert.optionalArrayOfRegexp -* assert.optionalArrayOfUuid -* assert.AssertionError -* assert.fail -* assert.ok -* assert.equal -* assert.notEqual -* assert.deepEqual -* assert.notDeepEqual -* assert.strictEqual -* assert.notStrictEqual -* assert.throws -* assert.doesNotThrow -* assert.ifError - -# Installation - - npm install assert-plus - -## License - -The MIT License (MIT) -Copyright (c) 2012 Mark Cavage - -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. - -## Bugs - -See . diff --git a/node_modules/assert-plus/assert.js b/node_modules/assert-plus/assert.js deleted file mode 100644 index 26f944e..0000000 --- a/node_modules/assert-plus/assert.js +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright (c) 2012, Mark Cavage. All rights reserved. -// Copyright 2015 Joyent, Inc. - -var assert = require('assert'); -var Stream = require('stream').Stream; -var util = require('util'); - - -///--- Globals - -/* JSSTYLED */ -var UUID_REGEXP = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/; - - -///--- Internal - -function _capitalize(str) { - return (str.charAt(0).toUpperCase() + str.slice(1)); -} - -function _toss(name, expected, oper, arg, actual) { - throw new assert.AssertionError({ - message: util.format('%s (%s) is required', name, expected), - actual: (actual === undefined) ? typeof (arg) : actual(arg), - expected: expected, - operator: oper || '===', - stackStartFunction: _toss.caller - }); -} - -function _getClass(arg) { - return (Object.prototype.toString.call(arg).slice(8, -1)); -} - -function noop() { - // Why even bother with asserts? -} - - -///--- Exports - -var types = { - bool: { - check: function (arg) { return typeof (arg) === 'boolean'; } - }, - func: { - check: function (arg) { return typeof (arg) === 'function'; } - }, - string: { - check: function (arg) { return typeof (arg) === 'string'; } - }, - object: { - check: function (arg) { - return typeof (arg) === 'object' && arg !== null; - } - }, - number: { - check: function (arg) { - return typeof (arg) === 'number' && !isNaN(arg); - } - }, - finite: { - check: function (arg) { - return typeof (arg) === 'number' && !isNaN(arg) && isFinite(arg); - } - }, - buffer: { - check: function (arg) { return Buffer.isBuffer(arg); }, - operator: 'Buffer.isBuffer' - }, - array: { - check: function (arg) { return Array.isArray(arg); }, - operator: 'Array.isArray' - }, - stream: { - check: function (arg) { return arg instanceof Stream; }, - operator: 'instanceof', - actual: _getClass - }, - date: { - check: function (arg) { return arg instanceof Date; }, - operator: 'instanceof', - actual: _getClass - }, - regexp: { - check: function (arg) { return arg instanceof RegExp; }, - operator: 'instanceof', - actual: _getClass - }, - uuid: { - check: function (arg) { - return typeof (arg) === 'string' && UUID_REGEXP.test(arg); - }, - operator: 'isUUID' - } -}; - -function _setExports(ndebug) { - var keys = Object.keys(types); - var out; - - /* re-export standard assert */ - if (process.env.NODE_NDEBUG) { - out = noop; - } else { - out = function (arg, msg) { - if (!arg) { - _toss(msg, 'true', arg); - } - }; - } - - /* standard checks */ - keys.forEach(function (k) { - if (ndebug) { - out[k] = noop; - return; - } - var type = types[k]; - out[k] = function (arg, msg) { - if (!type.check(arg)) { - _toss(msg, k, type.operator, arg, type.actual); - } - }; - }); - - /* optional checks */ - keys.forEach(function (k) { - var name = 'optional' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - out[name] = function (arg, msg) { - if (arg === undefined || arg === null) { - return; - } - if (!type.check(arg)) { - _toss(msg, k, type.operator, arg, type.actual); - } - }; - }); - - /* arrayOf checks */ - keys.forEach(function (k) { - var name = 'arrayOf' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - var expected = '[' + k + ']'; - out[name] = function (arg, msg) { - if (!Array.isArray(arg)) { - _toss(msg, expected, type.operator, arg, type.actual); - } - var i; - for (i = 0; i < arg.length; i++) { - if (!type.check(arg[i])) { - _toss(msg, expected, type.operator, arg, type.actual); - } - } - }; - }); - - /* optionalArrayOf checks */ - keys.forEach(function (k) { - var name = 'optionalArrayOf' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - var expected = '[' + k + ']'; - out[name] = function (arg, msg) { - if (arg === undefined || arg === null) { - return; - } - if (!Array.isArray(arg)) { - _toss(msg, expected, type.operator, arg, type.actual); - } - var i; - for (i = 0; i < arg.length; i++) { - if (!type.check(arg[i])) { - _toss(msg, expected, type.operator, arg, type.actual); - } - } - }; - }); - - /* re-export built-in assertions */ - Object.keys(assert).forEach(function (k) { - if (k === 'AssertionError') { - out[k] = assert[k]; - return; - } - if (ndebug) { - out[k] = noop; - return; - } - out[k] = assert[k]; - }); - - /* export ourselves (for unit tests _only_) */ - out._setExports = _setExports; - - return out; -} - -module.exports = _setExports(process.env.NODE_NDEBUG); diff --git a/node_modules/assert-plus/package.json b/node_modules/assert-plus/package.json deleted file mode 100644 index 1588439..0000000 --- a/node_modules/assert-plus/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_from": "assert-plus@^1.0.0", - "_id": "assert-plus@1.0.0", - "_inBundle": false, - "_integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "_location": "/assert-plus", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "assert-plus@^1.0.0", - "name": "assert-plus", - "escapedName": "assert-plus", - "rawSpec": "^1.0.0", - "saveSpec": null, - "fetchSpec": "^1.0.0" - }, - "_requiredBy": [ - "/dashdash", - "/getpass", - "/http-signature", - "/jsprim", - "/sshpk", - "/verror" - ], - "_resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "_shasum": "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525", - "_spec": "assert-plus@^1.0.0", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/http-signature", - "author": { - "name": "Mark Cavage", - "email": "mcavage@gmail.com" - }, - "bugs": { - "url": "https://github.com/mcavage/node-assert-plus/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Dave Eddy", - "email": "dave@daveeddy.com" - }, - { - "name": "Fred Kuo", - "email": "fred.kuo@joyent.com" - }, - { - "name": "Lars-Magnus Skog", - "email": "ralphtheninja@riseup.net" - }, - { - "name": "Mark Cavage", - "email": "mcavage@gmail.com" - }, - { - "name": "Patrick Mooney", - "email": "pmooney@pfmooney.com" - }, - { - "name": "Rob Gulewich", - "email": "robert.gulewich@joyent.com" - } - ], - "dependencies": {}, - "deprecated": false, - "description": "Extra assertions on top of node's assert module", - "devDependencies": { - "faucet": "0.0.1", - "tape": "4.2.2" - }, - "engines": { - "node": ">=0.8" - }, - "homepage": "https://github.com/mcavage/node-assert-plus#readme", - "license": "MIT", - "main": "./assert.js", - "name": "assert-plus", - "optionalDependencies": {}, - "repository": { - "type": "git", - "url": "git+https://github.com/mcavage/node-assert-plus.git" - }, - "scripts": { - "test": "tape tests/*.js | ./node_modules/.bin/faucet" - }, - "version": "1.0.0" -} diff --git a/node_modules/async/CHANGELOG.md b/node_modules/async/CHANGELOG.md deleted file mode 100644 index 3f13a0d..0000000 --- a/node_modules/async/CHANGELOG.md +++ /dev/null @@ -1,275 +0,0 @@ -# v2.6.3 -- Updated lodash to squelch a security warning (#1675) - -# v2.6.2 -- Updated lodash to squelch a security warning (#1620) - -# v2.6.1 -- Updated lodash to prevent `npm audit` warnings. (#1532, #1533) -- Made `async-es` more optimized for webpack users (#1517) -- Fixed a stack overflow with large collections and a synchronous iterator (#1514) -- Various small fixes/chores (#1505, #1511, #1527, #1530) - -# v2.6.0 -- Added missing aliases for many methods. Previously, you could not (e.g.) `require('async/find')` or use `async.anyLimit`. (#1483) -- Improved `queue` performance. (#1448, #1454) -- Add missing sourcemap (#1452, #1453) -- Various doc updates (#1448, #1471, #1483) - -# v2.5.0 -- Added `concatLimit`, the `Limit` equivalent of [`concat`](https://caolan.github.io/async/docs.html#concat) ([#1426](https://github.com/caolan/async/issues/1426), [#1430](https://github.com/caolan/async/pull/1430)) -- `concat` improvements: it now preserves order, handles falsy values and the `iteratee` callback takes a variable number of arguments ([#1437](https://github.com/caolan/async/issues/1437), [#1436](https://github.com/caolan/async/pull/1436)) -- Fixed an issue in `queue` where there was a size discrepancy between `workersList().length` and `running()` ([#1428](https://github.com/caolan/async/issues/1428), [#1429](https://github.com/caolan/async/pull/1429)) -- Various doc fixes ([#1422](https://github.com/caolan/async/issues/1422), [#1424](https://github.com/caolan/async/pull/1424)) - -# v2.4.1 -- Fixed a bug preventing functions wrapped with `timeout()` from being re-used. ([#1418](https://github.com/caolan/async/issues/1418), [#1419](https://github.com/caolan/async/issues/1419)) - -# v2.4.0 -- Added `tryEach`, for running async functions in parallel, where you only expect one to succeed. ([#1365](https://github.com/caolan/async/issues/1365), [#687](https://github.com/caolan/async/issues/687)) -- Improved performance, most notably in `parallel` and `waterfall` ([#1395](https://github.com/caolan/async/issues/1395)) -- Added `queue.remove()`, for removing items in a `queue` ([#1397](https://github.com/caolan/async/issues/1397), [#1391](https://github.com/caolan/async/issues/1391)) -- Fixed using `eval`, preventing Async from running in pages with Content Security Policy ([#1404](https://github.com/caolan/async/issues/1404), [#1403](https://github.com/caolan/async/issues/1403)) -- Fixed errors thrown in an `asyncify`ed function's callback being caught by the underlying Promise ([#1408](https://github.com/caolan/async/issues/1408)) -- Fixed timing of `queue.empty()` ([#1367](https://github.com/caolan/async/issues/1367)) -- Various doc fixes ([#1314](https://github.com/caolan/async/issues/1314), [#1394](https://github.com/caolan/async/issues/1394), [#1412](https://github.com/caolan/async/issues/1412)) - -# v2.3.0 -- Added support for ES2017 `async` functions. Wherever you can pass a Node-style/CPS function that uses a callback, you can also pass an `async` function. Previously, you had to wrap `async` functions with `asyncify`. The caveat is that it will only work if `async` functions are supported natively in your environment, transpiled implementations can't be detected. ([#1386](https://github.com/caolan/async/issues/1386), [#1390](https://github.com/caolan/async/issues/1390)) -- Small doc fix ([#1392](https://github.com/caolan/async/issues/1392)) - -# v2.2.0 -- Added `groupBy`, and the `Series`/`Limit` equivalents, analogous to [`_.groupBy`](http://lodash.com/docs#groupBy) ([#1364](https://github.com/caolan/async/issues/1364)) -- Fixed `transform` bug when `callback` was not passed ([#1381](https://github.com/caolan/async/issues/1381)) -- Added note about `reflect` to `parallel` docs ([#1385](https://github.com/caolan/async/issues/1385)) - -# v2.1.5 -- Fix `auto` bug when function names collided with Array.prototype ([#1358](https://github.com/caolan/async/issues/1358)) -- Improve some error messages ([#1349](https://github.com/caolan/async/issues/1349)) -- Avoid stack overflow case in queue -- Fixed an issue in `some`, `every` and `find` where processing would continue after the result was determined. -- Cleanup implementations of `some`, `every` and `find` - -# v2.1.3 -- Make bundle size smaller -- Create optimized hotpath for `filter` in array case. - -# v2.1.2 -- Fixed a stackoverflow bug with `detect`, `some`, `every` on large inputs ([#1293](https://github.com/caolan/async/issues/1293)). - -# v2.1.0 - -- `retry` and `retryable` now support an optional `errorFilter` function that determines if the `task` should retry on the error ([#1256](https://github.com/caolan/async/issues/1256), [#1261](https://github.com/caolan/async/issues/1261)) -- Optimized array iteration in `race`, `cargo`, `queue`, and `priorityQueue` ([#1253](https://github.com/caolan/async/issues/1253)) -- Added alias documentation to doc site ([#1251](https://github.com/caolan/async/issues/1251), [#1254](https://github.com/caolan/async/issues/1254)) -- Added [BootStrap scrollspy](http://getbootstrap.com/javascript/#scrollspy) to docs to highlight in the sidebar the current method being viewed ([#1289](https://github.com/caolan/async/issues/1289), [#1300](https://github.com/caolan/async/issues/1300)) -- Various minor doc fixes ([#1263](https://github.com/caolan/async/issues/1263), [#1264](https://github.com/caolan/async/issues/1264), [#1271](https://github.com/caolan/async/issues/1271), [#1278](https://github.com/caolan/async/issues/1278), [#1280](https://github.com/caolan/async/issues/1280), [#1282](https://github.com/caolan/async/issues/1282), [#1302](https://github.com/caolan/async/issues/1302)) - -# v2.0.1 - -- Significantly optimized all iteration based collection methods such as `each`, `map`, `filter`, etc ([#1245](https://github.com/caolan/async/issues/1245), [#1246](https://github.com/caolan/async/issues/1246), [#1247](https://github.com/caolan/async/issues/1247)). - -# v2.0.0 - -Lots of changes here! - -First and foremost, we have a slick new [site for docs](https://caolan.github.io/async/). Special thanks to [**@hargasinski**](https://github.com/hargasinski) for his work converting our old docs to `jsdoc` format and implementing the new website. Also huge ups to [**@ivanseidel**](https://github.com/ivanseidel) for designing our new logo. It was a long process for both of these tasks, but I think these changes turned out extraordinary well. - -The biggest feature is modularization. You can now `require("async/series")` to only require the `series` function. Every Async library function is available this way. You still can `require("async")` to require the entire library, like you could do before. - -We also provide Async as a collection of ES2015 modules. You can now `import {each} from 'async-es'` or `import waterfall from 'async-es/waterfall'`. If you are using only a few Async functions, and are using a ES bundler such as Rollup, this can significantly lower your build size. - -Major thanks to [**@Kikobeats**](github.com/Kikobeats), [**@aearly**](github.com/aearly) and [**@megawac**](github.com/megawac) for doing the majority of the modularization work, as well as [**@jdalton**](github.com/jdalton) and [**@Rich-Harris**](github.com/Rich-Harris) for advisory work on the general modularization strategy. - -Another one of the general themes of the 2.0 release is standardization of what an "async" function is. We are now more strictly following the node-style continuation passing style. That is, an async function is a function that: - -1. Takes a variable number of arguments -2. The last argument is always a callback -3. The callback can accept any number of arguments -4. The first argument passed to the callback will be treated as an error result, if the argument is truthy -5. Any number of result arguments can be passed after the "error" argument -6. The callback is called once and exactly once, either on the same tick or later tick of the JavaScript event loop. - -There were several cases where Async accepted some functions that did not strictly have these properties, most notably `auto`, `every`, `some`, `filter`, `reject` and `detect`. - -Another theme is performance. We have eliminated internal deferrals in all cases where they make sense. For example, in `waterfall` and `auto`, there was a `setImmediate` between each task -- these deferrals have been removed. A `setImmediate` call can add up to 1ms of delay. This might not seem like a lot, but it can add up if you are using many Async functions in the course of processing a HTTP request, for example. Nearly all asynchronous functions that do I/O already have some sort of deferral built in, so the extra deferral is unnecessary. The trade-off of this change is removing our built-in stack-overflow defense. Many synchronous callback calls in series can quickly overflow the JS call stack. If you do have a function that is sometimes synchronous (calling its callback on the same tick), and are running into stack overflows, wrap it with `async.ensureAsync()`. - -Another big performance win has been re-implementing `queue`, `cargo`, and `priorityQueue` with [doubly linked lists](https://en.wikipedia.org/wiki/Doubly_linked_list) instead of arrays. This has lead to queues being an order of [magnitude faster on large sets of tasks](https://github.com/caolan/async/pull/1205). - -## New Features - -- Async is now modularized. Individual functions can be `require()`d from the main package. (`require('async/auto')`) ([#984](https://github.com/caolan/async/issues/984), [#996](https://github.com/caolan/async/issues/996)) -- Async is also available as a collection of ES2015 modules in the new `async-es` package. (`import {forEachSeries} from 'async-es'`) ([#984](https://github.com/caolan/async/issues/984), [#996](https://github.com/caolan/async/issues/996)) -- Added `race`, analogous to `Promise.race()`. It will run an array of async tasks in parallel and will call its callback with the result of the first task to respond. ([#568](https://github.com/caolan/async/issues/568), [#1038](https://github.com/caolan/async/issues/1038)) -- Collection methods now accept ES2015 iterators. Maps, Sets, and anything that implements the iterator spec can now be passed directly to `each`, `map`, `parallel`, etc.. ([#579](https://github.com/caolan/async/issues/579), [#839](https://github.com/caolan/async/issues/839), [#1074](https://github.com/caolan/async/issues/1074)) -- Added `mapValues`, for mapping over the properties of an object and returning an object with the same keys. ([#1157](https://github.com/caolan/async/issues/1157), [#1177](https://github.com/caolan/async/issues/1177)) -- Added `timeout`, a wrapper for an async function that will make the task time-out after the specified time. ([#1007](https://github.com/caolan/async/issues/1007), [#1027](https://github.com/caolan/async/issues/1027)) -- Added `reflect` and `reflectAll`, analagous to [`Promise.reflect()`](http://bluebirdjs.com/docs/api/reflect.html), a wrapper for async tasks that always succeeds, by gathering results and errors into an object. ([#942](https://github.com/caolan/async/issues/942), [#1012](https://github.com/caolan/async/issues/1012), [#1095](https://github.com/caolan/async/issues/1095)) -- `constant` supports dynamic arguments -- it will now always use its last argument as the callback. ([#1016](https://github.com/caolan/async/issues/1016), [#1052](https://github.com/caolan/async/issues/1052)) -- `setImmediate` and `nextTick` now support arguments to partially apply to the deferred function, like the node-native versions do. ([#940](https://github.com/caolan/async/issues/940), [#1053](https://github.com/caolan/async/issues/1053)) -- `auto` now supports resolving cyclic dependencies using [Kahn's algorithm](https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm) ([#1140](https://github.com/caolan/async/issues/1140)). -- Added `autoInject`, a relative of `auto` that automatically spreads a task's dependencies as arguments to the task function. ([#608](https://github.com/caolan/async/issues/608), [#1055](https://github.com/caolan/async/issues/1055), [#1099](https://github.com/caolan/async/issues/1099), [#1100](https://github.com/caolan/async/issues/1100)) -- You can now limit the concurrency of `auto` tasks. ([#635](https://github.com/caolan/async/issues/635), [#637](https://github.com/caolan/async/issues/637)) -- Added `retryable`, a relative of `retry` that wraps an async function, making it retry when called. ([#1058](https://github.com/caolan/async/issues/1058)) -- `retry` now supports specifying a function that determines the next time interval, useful for exponential backoff, logging and other retry strategies. ([#1161](https://github.com/caolan/async/issues/1161)) -- `retry` will now pass all of the arguments the task function was resolved with to the callback ([#1231](https://github.com/caolan/async/issues/1231)). -- Added `q.unsaturated` -- callback called when a `queue`'s number of running workers falls below a threshold. ([#868](https://github.com/caolan/async/issues/868), [#1030](https://github.com/caolan/async/issues/1030), [#1033](https://github.com/caolan/async/issues/1033), [#1034](https://github.com/caolan/async/issues/1034)) -- Added `q.error` -- a callback called whenever a `queue` task calls its callback with an error. ([#1170](https://github.com/caolan/async/issues/1170)) -- `applyEach` and `applyEachSeries` now pass results to the final callback. ([#1088](https://github.com/caolan/async/issues/1088)) - -## Breaking changes - -- Calling a callback more than once is considered an error, and an error will be thrown. This had an explicit breaking change in `waterfall`. If you were relying on this behavior, you should more accurately represent your control flow as an event emitter or stream. ([#814](https://github.com/caolan/async/issues/814), [#815](https://github.com/caolan/async/issues/815), [#1048](https://github.com/caolan/async/issues/1048), [#1050](https://github.com/caolan/async/issues/1050)) -- `auto` task functions now always take the callback as the last argument. If a task has dependencies, the `results` object will be passed as the first argument. To migrate old task functions, wrap them with [`_.flip`](https://lodash.com/docs#flip) ([#1036](https://github.com/caolan/async/issues/1036), [#1042](https://github.com/caolan/async/issues/1042)) -- Internal `setImmediate` calls have been refactored away. This may make existing flows vulnerable to stack overflows if you use many synchronous functions in series. Use `ensureAsync` to work around this. ([#696](https://github.com/caolan/async/issues/696), [#704](https://github.com/caolan/async/issues/704), [#1049](https://github.com/caolan/async/issues/1049), [#1050](https://github.com/caolan/async/issues/1050)) -- `map` used to return an object when iterating over an object. `map` now always returns an array, like in other libraries. The previous object behavior has been split out into `mapValues`. ([#1157](https://github.com/caolan/async/issues/1157), [#1177](https://github.com/caolan/async/issues/1177)) -- `filter`, `reject`, `some`, `every`, `detect` and their families like `{METHOD}Series` and `{METHOD}Limit` now expect an error as the first callback argument, rather than just a simple boolean. Pass `null` as the first argument, or use `fs.access` instead of `fs.exists`. ([#118](https://github.com/caolan/async/issues/118), [#774](https://github.com/caolan/async/issues/774), [#1028](https://github.com/caolan/async/issues/1028), [#1041](https://github.com/caolan/async/issues/1041)) -- `{METHOD}` and `{METHOD}Series` are now implemented in terms of `{METHOD}Limit`. This is a major internal simplification, and is not expected to cause many problems, but it does subtly affect how functions execute internally. ([#778](https://github.com/caolan/async/issues/778), [#847](https://github.com/caolan/async/issues/847)) -- `retry`'s callback is now optional. Previously, omitting the callback would partially apply the function, meaning it could be passed directly as a task to `series` or `auto`. The partially applied "control-flow" behavior has been separated out into `retryable`. ([#1054](https://github.com/caolan/async/issues/1054), [#1058](https://github.com/caolan/async/issues/1058)) -- The test function for `whilst`, `until`, and `during` used to be passed non-error args from the iteratee function's callback, but this led to weirdness where the first call of the test function would be passed no args. We have made it so the test function is never passed extra arguments, and only the `doWhilst`, `doUntil`, and `doDuring` functions pass iteratee callback arguments to the test function ([#1217](https://github.com/caolan/async/issues/1217), [#1224](https://github.com/caolan/async/issues/1224)) -- The `q.tasks` array has been renamed `q._tasks` and is now implemented as a doubly linked list (DLL). Any code that used to interact with this array will need to be updated to either use the provided helpers or support DLLs ([#1205](https://github.com/caolan/async/issues/1205)). -- The timing of the `q.saturated()` callback in a `queue` has been modified to better reflect when tasks pushed to the queue will start queueing. ([#724](https://github.com/caolan/async/issues/724), [#1078](https://github.com/caolan/async/issues/1078)) -- Removed `iterator` method in favour of [ES2015 iterator protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators ) which natively supports arrays ([#1237](https://github.com/caolan/async/issues/1237)) -- Dropped support for Component, Jam, SPM, and Volo ([#1175](https://github.com/caolan/async/issues/1175), #[#176](https://github.com/caolan/async/issues/176)) - -## Bug Fixes - -- Improved handling of no dependency cases in `auto` & `autoInject` ([#1147](https://github.com/caolan/async/issues/1147)). -- Fixed a bug where the callback generated by `asyncify` with `Promises` could resolve twice ([#1197](https://github.com/caolan/async/issues/1197)). -- Fixed several documented optional callbacks not actually being optional ([#1223](https://github.com/caolan/async/issues/1223)). - -## Other - -- Added `someSeries` and `everySeries` for symmetry, as well as a complete set of `any`/`anyLimit`/`anySeries` and `all`/`/allLmit`/`allSeries` aliases. -- Added `find` as an alias for `detect. (as well as `findLimit` and `findSeries`). -- Various doc fixes ([#1005](https://github.com/caolan/async/issues/1005), [#1008](https://github.com/caolan/async/issues/1008), [#1010](https://github.com/caolan/async/issues/1010), [#1015](https://github.com/caolan/async/issues/1015), [#1021](https://github.com/caolan/async/issues/1021), [#1037](https://github.com/caolan/async/issues/1037), [#1039](https://github.com/caolan/async/issues/1039), [#1051](https://github.com/caolan/async/issues/1051), [#1102](https://github.com/caolan/async/issues/1102), [#1107](https://github.com/caolan/async/issues/1107), [#1121](https://github.com/caolan/async/issues/1121), [#1123](https://github.com/caolan/async/issues/1123), [#1129](https://github.com/caolan/async/issues/1129), [#1135](https://github.com/caolan/async/issues/1135), [#1138](https://github.com/caolan/async/issues/1138), [#1141](https://github.com/caolan/async/issues/1141), [#1153](https://github.com/caolan/async/issues/1153), [#1216](https://github.com/caolan/async/issues/1216), [#1217](https://github.com/caolan/async/issues/1217), [#1232](https://github.com/caolan/async/issues/1232), [#1233](https://github.com/caolan/async/issues/1233), [#1236](https://github.com/caolan/async/issues/1236), [#1238](https://github.com/caolan/async/issues/1238)) - -Thank you [**@aearly**](github.com/aearly) and [**@megawac**](github.com/megawac) for taking the lead on version 2 of async. - ------------------------------------------- - -# v1.5.2 -- Allow using `"constructor"` as an argument in `memoize` ([#998](https://github.com/caolan/async/issues/998)) -- Give a better error messsage when `auto` dependency checking fails ([#994](https://github.com/caolan/async/issues/994)) -- Various doc updates ([#936](https://github.com/caolan/async/issues/936), [#956](https://github.com/caolan/async/issues/956), [#979](https://github.com/caolan/async/issues/979), [#1002](https://github.com/caolan/async/issues/1002)) - -# v1.5.1 -- Fix issue with `pause` in `queue` with concurrency enabled ([#946](https://github.com/caolan/async/issues/946)) -- `while` and `until` now pass the final result to callback ([#963](https://github.com/caolan/async/issues/963)) -- `auto` will properly handle concurrency when there is no callback ([#966](https://github.com/caolan/async/issues/966)) -- `auto` will no. properly stop execution when an error occurs ([#988](https://github.com/caolan/async/issues/988), [#993](https://github.com/caolan/async/issues/993)) -- Various doc fixes ([#971](https://github.com/caolan/async/issues/971), [#980](https://github.com/caolan/async/issues/980)) - -# v1.5.0 - -- Added `transform`, analogous to [`_.transform`](http://lodash.com/docs#transform) ([#892](https://github.com/caolan/async/issues/892)) -- `map` now returns an object when an object is passed in, rather than array with non-numeric keys. `map` will begin always returning an array with numeric indexes in the next major release. ([#873](https://github.com/caolan/async/issues/873)) -- `auto` now accepts an optional `concurrency` argument to limit the number o. running tasks ([#637](https://github.com/caolan/async/issues/637)) -- Added `queue#workersList()`, to retrieve the lis. of currently running tasks. ([#891](https://github.com/caolan/async/issues/891)) -- Various code simplifications ([#896](https://github.com/caolan/async/issues/896), [#904](https://github.com/caolan/async/issues/904)) -- Various doc fixes :scroll: ([#890](https://github.com/caolan/async/issues/890), [#894](https://github.com/caolan/async/issues/894), [#903](https://github.com/caolan/async/issues/903), [#905](https://github.com/caolan/async/issues/905), [#912](https://github.com/caolan/async/issues/912)) - -# v1.4.2 - -- Ensure coverage files don't get published on npm ([#879](https://github.com/caolan/async/issues/879)) - -# v1.4.1 - -- Add in overlooked `detectLimit` method ([#866](https://github.com/caolan/async/issues/866)) -- Removed unnecessary files from npm releases ([#861](https://github.com/caolan/async/issues/861)) -- Removed usage of a reserved word to prevent :boom: in older environments ([#870](https://github.com/caolan/async/issues/870)) - -# v1.4.0 - -- `asyncify` now supports promises ([#840](https://github.com/caolan/async/issues/840)) -- Added `Limit` versions of `filter` and `reject` ([#836](https://github.com/caolan/async/issues/836)) -- Add `Limit` versions of `detect`, `some` and `every` ([#828](https://github.com/caolan/async/issues/828), [#829](https://github.com/caolan/async/issues/829)) -- `some`, `every` and `detect` now short circuit early ([#828](https://github.com/caolan/async/issues/828), [#829](https://github.com/caolan/async/issues/829)) -- Improve detection of the global object ([#804](https://github.com/caolan/async/issues/804)), enabling use in WebWorkers -- `whilst` now called with arguments from iterator ([#823](https://github.com/caolan/async/issues/823)) -- `during` now gets called with arguments from iterator ([#824](https://github.com/caolan/async/issues/824)) -- Code simplifications and optimizations aplenty ([diff](https://github.com/caolan/async/compare/v1.3.0...v1.4.0)) - - -# v1.3.0 - -New Features: -- Added `constant` -- Added `asyncify`/`wrapSync` for making sync functions work with callbacks. ([#671](https://github.com/caolan/async/issues/671), [#806](https://github.com/caolan/async/issues/806)) -- Added `during` and `doDuring`, which are like `whilst` with an async truth test. ([#800](https://github.com/caolan/async/issues/800)) -- `retry` now accepts an `interval` parameter to specify a delay between retries. ([#793](https://github.com/caolan/async/issues/793)) -- `async` should work better in Web Workers due to better `root` detection ([#804](https://github.com/caolan/async/issues/804)) -- Callbacks are now optional in `whilst`, `doWhilst`, `until`, and `doUntil` ([#642](https://github.com/caolan/async/issues/642)) -- Various internal updates ([#786](https://github.com/caolan/async/issues/786), [#801](https://github.com/caolan/async/issues/801), [#802](https://github.com/caolan/async/issues/802), [#803](https://github.com/caolan/async/issues/803)) -- Various doc fixes ([#790](https://github.com/caolan/async/issues/790), [#794](https://github.com/caolan/async/issues/794)) - -Bug Fixes: -- `cargo` now exposes the `payload` size, and `cargo.payload` can be changed on the fly after the `cargo` is created. ([#740](https://github.com/caolan/async/issues/740), [#744](https://github.com/caolan/async/issues/744), [#783](https://github.com/caolan/async/issues/783)) - - -# v1.2.1 - -Bug Fix: - -- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. ([#782](https://github.com/caolan/async/issues/782)) - - -# v1.2.0 - -New Features: - -- Added `timesLimit` ([#743](https://github.com/caolan/async/issues/743)) -- `concurrency` can be changed after initialization in `queue` by setting `q.concurrency`. The new concurrency will be reflected the next time a task is processed. ([#747](https://github.com/caolan/async/issues/747), [#772](https://github.com/caolan/async/issues/772)) - -Bug Fixes: - -- Fixed a regression in `each` and family with empty arrays that have additional properties. ([#775](https://github.com/caolan/async/issues/775), [#777](https://github.com/caolan/async/issues/777)) - - -# v1.1.1 - -Bug Fix: - -- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. ([#782](https://github.com/caolan/async/issues/782)) - - -# v1.1.0 - -New Features: - -- `cargo` now supports all of the same methods and event callbacks as `queue`. -- Added `ensureAsync` - A wrapper that ensures an async function calls its callback on a later tick. ([#769](https://github.com/caolan/async/issues/769)) -- Optimized `map`, `eachOf`, and `waterfall` families of functions -- Passing a `null` or `undefined` array to `map`, `each`, `parallel` and families will be treated as an empty array ([#667](https://github.com/caolan/async/issues/667)). -- The callback is now optional for the composed results of `compose` and `seq`. ([#618](https://github.com/caolan/async/issues/618)) -- Reduced file size by 4kb, (minified version by 1kb) -- Added code coverage through `nyc` and `coveralls` ([#768](https://github.com/caolan/async/issues/768)) - -Bug Fixes: - -- `forever` will no longer stack overflow with a synchronous iterator ([#622](https://github.com/caolan/async/issues/622)) -- `eachLimit` and other limit functions will stop iterating once an error occurs ([#754](https://github.com/caolan/async/issues/754)) -- Always pass `null` in callbacks when there is no error ([#439](https://github.com/caolan/async/issues/439)) -- Ensure proper conditions when calling `drain()` after pushing an empty data set to a queue ([#668](https://github.com/caolan/async/issues/668)) -- `each` and family will properly handle an empty array ([#578](https://github.com/caolan/async/issues/578)) -- `eachSeries` and family will finish if the underlying array is modified during execution ([#557](https://github.com/caolan/async/issues/557)) -- `queue` will throw if a non-function is passed to `q.push()` ([#593](https://github.com/caolan/async/issues/593)) -- Doc fixes ([#629](https://github.com/caolan/async/issues/629), [#766](https://github.com/caolan/async/issues/766)) - - -# v1.0.0 - -No known breaking changes, we are simply complying with semver from here on out. - -Changes: - -- Start using a changelog! -- Add `forEachOf` for iterating over Objects (or to iterate Arrays with indexes available) ([#168](https://github.com/caolan/async/issues/168) [#704](https://github.com/caolan/async/issues/704) [#321](https://github.com/caolan/async/issues/321)) -- Detect deadlocks in `auto` ([#663](https://github.com/caolan/async/issues/663)) -- Better support for require.js ([#527](https://github.com/caolan/async/issues/527)) -- Throw if queue created with concurrency `0` ([#714](https://github.com/caolan/async/issues/714)) -- Fix unneeded iteration in `queue.resume()` ([#758](https://github.com/caolan/async/issues/758)) -- Guard against timer mocking overriding `setImmediate` ([#609](https://github.com/caolan/async/issues/609) [#611](https://github.com/caolan/async/issues/611)) -- Miscellaneous doc fixes ([#542](https://github.com/caolan/async/issues/542) [#596](https://github.com/caolan/async/issues/596) [#615](https://github.com/caolan/async/issues/615) [#628](https://github.com/caolan/async/issues/628) [#631](https://github.com/caolan/async/issues/631) [#690](https://github.com/caolan/async/issues/690) [#729](https://github.com/caolan/async/issues/729)) -- Use single noop function internally ([#546](https://github.com/caolan/async/issues/546)) -- Optimize internal `_each`, `_map` and `_keys` functions. diff --git a/node_modules/async/LICENSE b/node_modules/async/LICENSE deleted file mode 100644 index b18aed6..0000000 --- a/node_modules/async/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010-2018 Caolan McMahon - -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. diff --git a/node_modules/async/README.md b/node_modules/async/README.md deleted file mode 100644 index 49cf950..0000000 --- a/node_modules/async/README.md +++ /dev/null @@ -1,56 +0,0 @@ -![Async Logo](https://raw.githubusercontent.com/caolan/async/master/logo/async-logo_readme.jpg) - -[![Build Status via Travis CI](https://travis-ci.org/caolan/async.svg?branch=master)](https://travis-ci.org/caolan/async) -[![NPM version](https://img.shields.io/npm/v/async.svg)](https://www.npmjs.com/package/async) -[![Coverage Status](https://coveralls.io/repos/caolan/async/badge.svg?branch=master)](https://coveralls.io/r/caolan/async?branch=master) -[![Join the chat at https://gitter.im/caolan/async](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/caolan/async?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -[![libhive - Open source examples](https://www.libhive.com/providers/npm/packages/async/examples/badge.svg)](https://www.libhive.com/providers/npm/packages/async) -[![jsDelivr Hits](https://data.jsdelivr.com/v1/package/npm/async/badge?style=rounded)](https://www.jsdelivr.com/package/npm/async) - - -Async is a utility module which provides straight-forward, powerful functions for working with [asynchronous JavaScript](http://caolan.github.io/async/global.html). Although originally designed for use with [Node.js](https://nodejs.org/) and installable via `npm install --save async`, it can also be used directly in the browser. - -This version of the package is optimized for the Node.js environment. If you use Async with webpack, install [`async-es`](https://www.npmjs.com/package/async-es) instead. - -For Documentation, visit - -*For Async v1.5.x documentation, go [HERE](https://github.com/caolan/async/blob/v1.5.2/README.md)* - - -```javascript -// for use with Node-style callbacks... -var async = require("async"); - -var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"}; -var configs = {}; - -async.forEachOf(obj, (value, key, callback) => { - fs.readFile(__dirname + value, "utf8", (err, data) => { - if (err) return callback(err); - try { - configs[key] = JSON.parse(data); - } catch (e) { - return callback(e); - } - callback(); - }); -}, err => { - if (err) console.error(err.message); - // configs is now a map of JSON data - doSomethingWith(configs); -}); -``` - -```javascript -var async = require("async"); - -// ...or ES2017 async functions -async.mapLimit(urls, 5, async function(url) { - const response = await fetch(url) - return response.body -}, (err, results) => { - if (err) throw err - // results is now an array of the response bodies - console.log(results) -}) -``` diff --git a/node_modules/async/all.js b/node_modules/async/all.js deleted file mode 100644 index d0565b0..0000000 --- a/node_modules/async/all.js +++ /dev/null @@ -1,50 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createTester = require('./internal/createTester'); - -var _createTester2 = _interopRequireDefault(_createTester); - -var _doParallel = require('./internal/doParallel'); - -var _doParallel2 = _interopRequireDefault(_doParallel); - -var _notId = require('./internal/notId'); - -var _notId2 = _interopRequireDefault(_notId); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Returns `true` if every element in `coll` satisfies an async test. If any - * iteratee call returns `false`, the main `callback` is immediately called. - * - * @name every - * @static - * @memberOf module:Collections - * @method - * @alias all - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collection in parallel. - * The iteratee must complete with a boolean result value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result will be either `true` or `false` - * depending on the values of the async tests. Invoked with (err, result). - * @example - * - * async.every(['file1','file2','file3'], function(filePath, callback) { - * fs.access(filePath, function(err) { - * callback(null, !err) - * }); - * }, function(err, result) { - * // if result is true then every file exists - * }); - */ -exports.default = (0, _doParallel2.default)((0, _createTester2.default)(_notId2.default, _notId2.default)); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/allLimit.js b/node_modules/async/allLimit.js deleted file mode 100644 index a1a759a..0000000 --- a/node_modules/async/allLimit.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createTester = require('./internal/createTester'); - -var _createTester2 = _interopRequireDefault(_createTester); - -var _doParallelLimit = require('./internal/doParallelLimit'); - -var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit); - -var _notId = require('./internal/notId'); - -var _notId2 = _interopRequireDefault(_notId); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time. - * - * @name everyLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.every]{@link module:Collections.every} - * @alias allLimit - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collection in parallel. - * The iteratee must complete with a boolean result value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result will be either `true` or `false` - * depending on the values of the async tests. Invoked with (err, result). - */ -exports.default = (0, _doParallelLimit2.default)((0, _createTester2.default)(_notId2.default, _notId2.default)); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/allSeries.js b/node_modules/async/allSeries.js deleted file mode 100644 index 23bfebb..0000000 --- a/node_modules/async/allSeries.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _everyLimit = require('./everyLimit'); - -var _everyLimit2 = _interopRequireDefault(_everyLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time. - * - * @name everySeries - * @static - * @memberOf module:Collections - * @method - * @see [async.every]{@link module:Collections.every} - * @alias allSeries - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collection in series. - * The iteratee must complete with a boolean result value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result will be either `true` or `false` - * depending on the values of the async tests. Invoked with (err, result). - */ -exports.default = (0, _doLimit2.default)(_everyLimit2.default, 1); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/any.js b/node_modules/async/any.js deleted file mode 100644 index a8e70f7..0000000 --- a/node_modules/async/any.js +++ /dev/null @@ -1,52 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createTester = require('./internal/createTester'); - -var _createTester2 = _interopRequireDefault(_createTester); - -var _doParallel = require('./internal/doParallel'); - -var _doParallel2 = _interopRequireDefault(_doParallel); - -var _identity = require('lodash/identity'); - -var _identity2 = _interopRequireDefault(_identity); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Returns `true` if at least one element in the `coll` satisfies an async test. - * If any iteratee call returns `true`, the main `callback` is immediately - * called. - * - * @name some - * @static - * @memberOf module:Collections - * @method - * @alias any - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collections in parallel. - * The iteratee should complete with a boolean `result` value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called as soon as any - * iteratee returns `true`, or after all the iteratee functions have finished. - * Result will be either `true` or `false` depending on the values of the async - * tests. Invoked with (err, result). - * @example - * - * async.some(['file1','file2','file3'], function(filePath, callback) { - * fs.access(filePath, function(err) { - * callback(null, !err) - * }); - * }, function(err, result) { - * // if result is true then at least one of the files exists - * }); - */ -exports.default = (0, _doParallel2.default)((0, _createTester2.default)(Boolean, _identity2.default)); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/anyLimit.js b/node_modules/async/anyLimit.js deleted file mode 100644 index 24ca3f4..0000000 --- a/node_modules/async/anyLimit.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createTester = require('./internal/createTester'); - -var _createTester2 = _interopRequireDefault(_createTester); - -var _doParallelLimit = require('./internal/doParallelLimit'); - -var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit); - -var _identity = require('lodash/identity'); - -var _identity2 = _interopRequireDefault(_identity); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time. - * - * @name someLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.some]{@link module:Collections.some} - * @alias anyLimit - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collections in parallel. - * The iteratee should complete with a boolean `result` value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called as soon as any - * iteratee returns `true`, or after all the iteratee functions have finished. - * Result will be either `true` or `false` depending on the values of the async - * tests. Invoked with (err, result). - */ -exports.default = (0, _doParallelLimit2.default)((0, _createTester2.default)(Boolean, _identity2.default)); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/anySeries.js b/node_modules/async/anySeries.js deleted file mode 100644 index dc24ed2..0000000 --- a/node_modules/async/anySeries.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _someLimit = require('./someLimit'); - -var _someLimit2 = _interopRequireDefault(_someLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time. - * - * @name someSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.some]{@link module:Collections.some} - * @alias anySeries - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collections in series. - * The iteratee should complete with a boolean `result` value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called as soon as any - * iteratee returns `true`, or after all the iteratee functions have finished. - * Result will be either `true` or `false` depending on the values of the async - * tests. Invoked with (err, result). - */ -exports.default = (0, _doLimit2.default)(_someLimit2.default, 1); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/apply.js b/node_modules/async/apply.js deleted file mode 100644 index f590fa5..0000000 --- a/node_modules/async/apply.js +++ /dev/null @@ -1,68 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -exports.default = function (fn /*, ...args*/) { - var args = (0, _slice2.default)(arguments, 1); - return function () /*callArgs*/{ - var callArgs = (0, _slice2.default)(arguments); - return fn.apply(null, args.concat(callArgs)); - }; -}; - -var _slice = require('./internal/slice'); - -var _slice2 = _interopRequireDefault(_slice); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -; - -/** - * Creates a continuation function with some arguments already applied. - * - * Useful as a shorthand when combined with other control flow functions. Any - * arguments passed to the returned function are added to the arguments - * originally passed to apply. - * - * @name apply - * @static - * @memberOf module:Utils - * @method - * @category Util - * @param {Function} fn - The function you want to eventually apply all - * arguments to. Invokes with (arguments...). - * @param {...*} arguments... - Any number of arguments to automatically apply - * when the continuation is called. - * @returns {Function} the partially-applied function - * @example - * - * // using apply - * async.parallel([ - * async.apply(fs.writeFile, 'testfile1', 'test1'), - * async.apply(fs.writeFile, 'testfile2', 'test2') - * ]); - * - * - * // the same process without using apply - * async.parallel([ - * function(callback) { - * fs.writeFile('testfile1', 'test1', callback); - * }, - * function(callback) { - * fs.writeFile('testfile2', 'test2', callback); - * } - * ]); - * - * // It's possible to pass any number of additional arguments when calling the - * // continuation: - * - * node> var fn = async.apply(sys.puts, 'one'); - * node> fn('two', 'three'); - * one - * two - * three - */ -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/applyEach.js b/node_modules/async/applyEach.js deleted file mode 100644 index 06c0845..0000000 --- a/node_modules/async/applyEach.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _applyEach = require('./internal/applyEach'); - -var _applyEach2 = _interopRequireDefault(_applyEach); - -var _map = require('./map'); - -var _map2 = _interopRequireDefault(_map); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Applies the provided arguments to each function in the array, calling - * `callback` after all functions have completed. If you only provide the first - * argument, `fns`, then it will return a function which lets you pass in the - * arguments as if it were a single function call. If more arguments are - * provided, `callback` is required while `args` is still optional. - * - * @name applyEach - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {Array|Iterable|Object} fns - A collection of {@link AsyncFunction}s - * to all call with the same arguments - * @param {...*} [args] - any number of separate arguments to pass to the - * function. - * @param {Function} [callback] - the final argument should be the callback, - * called when all functions have completed processing. - * @returns {Function} - If only the first argument, `fns`, is provided, it will - * return a function which lets you pass in the arguments as if it were a single - * function call. The signature is `(..args, callback)`. If invoked with any - * arguments, `callback` is required. - * @example - * - * async.applyEach([enableSearch, updateSchema], 'bucket', callback); - * - * // partial application example: - * async.each( - * buckets, - * async.applyEach([enableSearch, updateSchema]), - * callback - * ); - */ -exports.default = (0, _applyEach2.default)(_map2.default); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/applyEachSeries.js b/node_modules/async/applyEachSeries.js deleted file mode 100644 index ad80280..0000000 --- a/node_modules/async/applyEachSeries.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _applyEach = require('./internal/applyEach'); - -var _applyEach2 = _interopRequireDefault(_applyEach); - -var _mapSeries = require('./mapSeries'); - -var _mapSeries2 = _interopRequireDefault(_mapSeries); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`applyEach`]{@link module:ControlFlow.applyEach} but runs only a single async operation at a time. - * - * @name applyEachSeries - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.applyEach]{@link module:ControlFlow.applyEach} - * @category Control Flow - * @param {Array|Iterable|Object} fns - A collection of {@link AsyncFunction}s to all - * call with the same arguments - * @param {...*} [args] - any number of separate arguments to pass to the - * function. - * @param {Function} [callback] - the final argument should be the callback, - * called when all functions have completed processing. - * @returns {Function} - If only the first argument is provided, it will return - * a function which lets you pass in the arguments as if it were a single - * function call. - */ -exports.default = (0, _applyEach2.default)(_mapSeries2.default); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/asyncify.js b/node_modules/async/asyncify.js deleted file mode 100644 index 5e3fc91..0000000 --- a/node_modules/async/asyncify.js +++ /dev/null @@ -1,110 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = asyncify; - -var _isObject = require('lodash/isObject'); - -var _isObject2 = _interopRequireDefault(_isObject); - -var _initialParams = require('./internal/initialParams'); - -var _initialParams2 = _interopRequireDefault(_initialParams); - -var _setImmediate = require('./internal/setImmediate'); - -var _setImmediate2 = _interopRequireDefault(_setImmediate); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Take a sync function and make it async, passing its return value to a - * callback. This is useful for plugging sync functions into a waterfall, - * series, or other async functions. Any arguments passed to the generated - * function will be passed to the wrapped function (except for the final - * callback argument). Errors thrown will be passed to the callback. - * - * If the function passed to `asyncify` returns a Promise, that promises's - * resolved/rejected state will be used to call the callback, rather than simply - * the synchronous return value. - * - * This also means you can asyncify ES2017 `async` functions. - * - * @name asyncify - * @static - * @memberOf module:Utils - * @method - * @alias wrapSync - * @category Util - * @param {Function} func - The synchronous function, or Promise-returning - * function to convert to an {@link AsyncFunction}. - * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be - * invoked with `(args..., callback)`. - * @example - * - * // passing a regular synchronous function - * async.waterfall([ - * async.apply(fs.readFile, filename, "utf8"), - * async.asyncify(JSON.parse), - * function (data, next) { - * // data is the result of parsing the text. - * // If there was a parsing error, it would have been caught. - * } - * ], callback); - * - * // passing a function returning a promise - * async.waterfall([ - * async.apply(fs.readFile, filename, "utf8"), - * async.asyncify(function (contents) { - * return db.model.create(contents); - * }), - * function (model, next) { - * // `model` is the instantiated model object. - * // If there was an error, this function would be skipped. - * } - * ], callback); - * - * // es2017 example, though `asyncify` is not needed if your JS environment - * // supports async functions out of the box - * var q = async.queue(async.asyncify(async function(file) { - * var intermediateStep = await processFile(file); - * return await somePromise(intermediateStep) - * })); - * - * q.push(files); - */ -function asyncify(func) { - return (0, _initialParams2.default)(function (args, callback) { - var result; - try { - result = func.apply(this, args); - } catch (e) { - return callback(e); - } - // if result is Promise object - if ((0, _isObject2.default)(result) && typeof result.then === 'function') { - result.then(function (value) { - invokeCallback(callback, null, value); - }, function (err) { - invokeCallback(callback, err.message ? err : new Error(err)); - }); - } else { - callback(null, result); - } - }); -} - -function invokeCallback(callback, error, value) { - try { - callback(error, value); - } catch (e) { - (0, _setImmediate2.default)(rethrow, e); - } -} - -function rethrow(error) { - throw error; -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/auto.js b/node_modules/async/auto.js deleted file mode 100644 index 26c1d56..0000000 --- a/node_modules/async/auto.js +++ /dev/null @@ -1,289 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -exports.default = function (tasks, concurrency, callback) { - if (typeof concurrency === 'function') { - // concurrency is optional, shift the args. - callback = concurrency; - concurrency = null; - } - callback = (0, _once2.default)(callback || _noop2.default); - var keys = (0, _keys2.default)(tasks); - var numTasks = keys.length; - if (!numTasks) { - return callback(null); - } - if (!concurrency) { - concurrency = numTasks; - } - - var results = {}; - var runningTasks = 0; - var hasError = false; - - var listeners = Object.create(null); - - var readyTasks = []; - - // for cycle detection: - var readyToCheck = []; // tasks that have been identified as reachable - // without the possibility of returning to an ancestor task - var uncheckedDependencies = {}; - - (0, _baseForOwn2.default)(tasks, function (task, key) { - if (!(0, _isArray2.default)(task)) { - // no dependencies - enqueueTask(key, [task]); - readyToCheck.push(key); - return; - } - - var dependencies = task.slice(0, task.length - 1); - var remainingDependencies = dependencies.length; - if (remainingDependencies === 0) { - enqueueTask(key, task); - readyToCheck.push(key); - return; - } - uncheckedDependencies[key] = remainingDependencies; - - (0, _arrayEach2.default)(dependencies, function (dependencyName) { - if (!tasks[dependencyName]) { - throw new Error('async.auto task `' + key + '` has a non-existent dependency `' + dependencyName + '` in ' + dependencies.join(', ')); - } - addListener(dependencyName, function () { - remainingDependencies--; - if (remainingDependencies === 0) { - enqueueTask(key, task); - } - }); - }); - }); - - checkForDeadlocks(); - processQueue(); - - function enqueueTask(key, task) { - readyTasks.push(function () { - runTask(key, task); - }); - } - - function processQueue() { - if (readyTasks.length === 0 && runningTasks === 0) { - return callback(null, results); - } - while (readyTasks.length && runningTasks < concurrency) { - var run = readyTasks.shift(); - run(); - } - } - - function addListener(taskName, fn) { - var taskListeners = listeners[taskName]; - if (!taskListeners) { - taskListeners = listeners[taskName] = []; - } - - taskListeners.push(fn); - } - - function taskComplete(taskName) { - var taskListeners = listeners[taskName] || []; - (0, _arrayEach2.default)(taskListeners, function (fn) { - fn(); - }); - processQueue(); - } - - function runTask(key, task) { - if (hasError) return; - - var taskCallback = (0, _onlyOnce2.default)(function (err, result) { - runningTasks--; - if (arguments.length > 2) { - result = (0, _slice2.default)(arguments, 1); - } - if (err) { - var safeResults = {}; - (0, _baseForOwn2.default)(results, function (val, rkey) { - safeResults[rkey] = val; - }); - safeResults[key] = result; - hasError = true; - listeners = Object.create(null); - - callback(err, safeResults); - } else { - results[key] = result; - taskComplete(key); - } - }); - - runningTasks++; - var taskFn = (0, _wrapAsync2.default)(task[task.length - 1]); - if (task.length > 1) { - taskFn(results, taskCallback); - } else { - taskFn(taskCallback); - } - } - - function checkForDeadlocks() { - // Kahn's algorithm - // https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm - // http://connalle.blogspot.com/2013/10/topological-sortingkahn-algorithm.html - var currentTask; - var counter = 0; - while (readyToCheck.length) { - currentTask = readyToCheck.pop(); - counter++; - (0, _arrayEach2.default)(getDependents(currentTask), function (dependent) { - if (--uncheckedDependencies[dependent] === 0) { - readyToCheck.push(dependent); - } - }); - } - - if (counter !== numTasks) { - throw new Error('async.auto cannot execute tasks due to a recursive dependency'); - } - } - - function getDependents(taskName) { - var result = []; - (0, _baseForOwn2.default)(tasks, function (task, key) { - if ((0, _isArray2.default)(task) && (0, _baseIndexOf2.default)(task, taskName, 0) >= 0) { - result.push(key); - } - }); - return result; - } -}; - -var _arrayEach = require('lodash/_arrayEach'); - -var _arrayEach2 = _interopRequireDefault(_arrayEach); - -var _baseForOwn = require('lodash/_baseForOwn'); - -var _baseForOwn2 = _interopRequireDefault(_baseForOwn); - -var _baseIndexOf = require('lodash/_baseIndexOf'); - -var _baseIndexOf2 = _interopRequireDefault(_baseIndexOf); - -var _isArray = require('lodash/isArray'); - -var _isArray2 = _interopRequireDefault(_isArray); - -var _keys = require('lodash/keys'); - -var _keys2 = _interopRequireDefault(_keys); - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _slice = require('./internal/slice'); - -var _slice2 = _interopRequireDefault(_slice); - -var _once = require('./internal/once'); - -var _once2 = _interopRequireDefault(_once); - -var _onlyOnce = require('./internal/onlyOnce'); - -var _onlyOnce2 = _interopRequireDefault(_onlyOnce); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -module.exports = exports['default']; - -/** - * Determines the best order for running the {@link AsyncFunction}s in `tasks`, based on - * their requirements. Each function can optionally depend on other functions - * being completed first, and each function is run as soon as its requirements - * are satisfied. - * - * If any of the {@link AsyncFunction}s pass an error to their callback, the `auto` sequence - * will stop. Further tasks will not execute (so any other functions depending - * on it will not run), and the main `callback` is immediately called with the - * error. - * - * {@link AsyncFunction}s also receive an object containing the results of functions which - * have completed so far as the first argument, if they have dependencies. If a - * task function has no dependencies, it will only be passed a callback. - * - * @name auto - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {Object} tasks - An object. Each of its properties is either a - * function or an array of requirements, with the {@link AsyncFunction} itself the last item - * in the array. The object's key of a property serves as the name of the task - * defined by that property, i.e. can be used when specifying requirements for - * other tasks. The function receives one or two arguments: - * * a `results` object, containing the results of the previously executed - * functions, only passed if the task has any dependencies, - * * a `callback(err, result)` function, which must be called when finished, - * passing an `error` (which can be `null`) and the result of the function's - * execution. - * @param {number} [concurrency=Infinity] - An optional `integer` for - * determining the maximum number of tasks that can be run in parallel. By - * default, as many as possible. - * @param {Function} [callback] - An optional callback which is called when all - * the tasks have been completed. It receives the `err` argument if any `tasks` - * pass an error to their callback. Results are always returned; however, if an - * error occurs, no further `tasks` will be performed, and the results object - * will only contain partial results. Invoked with (err, results). - * @returns undefined - * @example - * - * async.auto({ - * // this function will just be passed a callback - * readData: async.apply(fs.readFile, 'data.txt', 'utf-8'), - * showData: ['readData', function(results, cb) { - * // results.readData is the file's contents - * // ... - * }] - * }, callback); - * - * async.auto({ - * get_data: function(callback) { - * console.log('in get_data'); - * // async code to get some data - * callback(null, 'data', 'converted to array'); - * }, - * make_folder: function(callback) { - * console.log('in make_folder'); - * // async code to create a directory to store a file in - * // this is run at the same time as getting the data - * callback(null, 'folder'); - * }, - * write_file: ['get_data', 'make_folder', function(results, callback) { - * console.log('in write_file', JSON.stringify(results)); - * // once there is some data and the directory exists, - * // write the data to a file in the directory - * callback(null, 'filename'); - * }], - * email_link: ['write_file', function(results, callback) { - * console.log('in email_link', JSON.stringify(results)); - * // once the file is written let's email a link to it... - * // results.write_file contains the filename returned by write_file. - * callback(null, {'file':results.write_file, 'email':'user@example.com'}); - * }] - * }, function(err, results) { - * console.log('err = ', err); - * console.log('results = ', results); - * }); - */ \ No newline at end of file diff --git a/node_modules/async/autoInject.js b/node_modules/async/autoInject.js deleted file mode 100644 index bfbe7e8..0000000 --- a/node_modules/async/autoInject.js +++ /dev/null @@ -1,170 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = autoInject; - -var _auto = require('./auto'); - -var _auto2 = _interopRequireDefault(_auto); - -var _baseForOwn = require('lodash/_baseForOwn'); - -var _baseForOwn2 = _interopRequireDefault(_baseForOwn); - -var _arrayMap = require('lodash/_arrayMap'); - -var _arrayMap2 = _interopRequireDefault(_arrayMap); - -var _isArray = require('lodash/isArray'); - -var _isArray2 = _interopRequireDefault(_isArray); - -var _trim = require('lodash/trim'); - -var _trim2 = _interopRequireDefault(_trim); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var FN_ARGS = /^(?:async\s+)?(function)?\s*[^\(]*\(\s*([^\)]*)\)/m; -var FN_ARG_SPLIT = /,/; -var FN_ARG = /(=.+)?(\s*)$/; -var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg; - -function parseParams(func) { - func = func.toString().replace(STRIP_COMMENTS, ''); - func = func.match(FN_ARGS)[2].replace(' ', ''); - func = func ? func.split(FN_ARG_SPLIT) : []; - func = func.map(function (arg) { - return (0, _trim2.default)(arg.replace(FN_ARG, '')); - }); - return func; -} - -/** - * A dependency-injected version of the [async.auto]{@link module:ControlFlow.auto} function. Dependent - * tasks are specified as parameters to the function, after the usual callback - * parameter, with the parameter names matching the names of the tasks it - * depends on. This can provide even more readable task graphs which can be - * easier to maintain. - * - * If a final callback is specified, the task results are similarly injected, - * specified as named parameters after the initial error parameter. - * - * The autoInject function is purely syntactic sugar and its semantics are - * otherwise equivalent to [async.auto]{@link module:ControlFlow.auto}. - * - * @name autoInject - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.auto]{@link module:ControlFlow.auto} - * @category Control Flow - * @param {Object} tasks - An object, each of whose properties is an {@link AsyncFunction} of - * the form 'func([dependencies...], callback). The object's key of a property - * serves as the name of the task defined by that property, i.e. can be used - * when specifying requirements for other tasks. - * * The `callback` parameter is a `callback(err, result)` which must be called - * when finished, passing an `error` (which can be `null`) and the result of - * the function's execution. The remaining parameters name other tasks on - * which the task is dependent, and the results from those tasks are the - * arguments of those parameters. - * @param {Function} [callback] - An optional callback which is called when all - * the tasks have been completed. It receives the `err` argument if any `tasks` - * pass an error to their callback, and a `results` object with any completed - * task results, similar to `auto`. - * @example - * - * // The example from `auto` can be rewritten as follows: - * async.autoInject({ - * get_data: function(callback) { - * // async code to get some data - * callback(null, 'data', 'converted to array'); - * }, - * make_folder: function(callback) { - * // async code to create a directory to store a file in - * // this is run at the same time as getting the data - * callback(null, 'folder'); - * }, - * write_file: function(get_data, make_folder, callback) { - * // once there is some data and the directory exists, - * // write the data to a file in the directory - * callback(null, 'filename'); - * }, - * email_link: function(write_file, callback) { - * // once the file is written let's email a link to it... - * // write_file contains the filename returned by write_file. - * callback(null, {'file':write_file, 'email':'user@example.com'}); - * } - * }, function(err, results) { - * console.log('err = ', err); - * console.log('email_link = ', results.email_link); - * }); - * - * // If you are using a JS minifier that mangles parameter names, `autoInject` - * // will not work with plain functions, since the parameter names will be - * // collapsed to a single letter identifier. To work around this, you can - * // explicitly specify the names of the parameters your task function needs - * // in an array, similar to Angular.js dependency injection. - * - * // This still has an advantage over plain `auto`, since the results a task - * // depends on are still spread into arguments. - * async.autoInject({ - * //... - * write_file: ['get_data', 'make_folder', function(get_data, make_folder, callback) { - * callback(null, 'filename'); - * }], - * email_link: ['write_file', function(write_file, callback) { - * callback(null, {'file':write_file, 'email':'user@example.com'}); - * }] - * //... - * }, function(err, results) { - * console.log('err = ', err); - * console.log('email_link = ', results.email_link); - * }); - */ -function autoInject(tasks, callback) { - var newTasks = {}; - - (0, _baseForOwn2.default)(tasks, function (taskFn, key) { - var params; - var fnIsAsync = (0, _wrapAsync.isAsync)(taskFn); - var hasNoDeps = !fnIsAsync && taskFn.length === 1 || fnIsAsync && taskFn.length === 0; - - if ((0, _isArray2.default)(taskFn)) { - params = taskFn.slice(0, -1); - taskFn = taskFn[taskFn.length - 1]; - - newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn); - } else if (hasNoDeps) { - // no dependencies, use the function as-is - newTasks[key] = taskFn; - } else { - params = parseParams(taskFn); - if (taskFn.length === 0 && !fnIsAsync && params.length === 0) { - throw new Error("autoInject task functions require explicit parameters."); - } - - // remove callback param - if (!fnIsAsync) params.pop(); - - newTasks[key] = params.concat(newTask); - } - - function newTask(results, taskCb) { - var newArgs = (0, _arrayMap2.default)(params, function (name) { - return results[name]; - }); - newArgs.push(taskCb); - (0, _wrapAsync2.default)(taskFn).apply(null, newArgs); - } - }); - - (0, _auto2.default)(newTasks, callback); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/bower.json b/node_modules/async/bower.json deleted file mode 100644 index 7dbeb14..0000000 --- a/node_modules/async/bower.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "async", - "main": "dist/async.js", - "ignore": [ - "bower_components", - "lib", - "mocha_test", - "node_modules", - "perf", - "support", - "**/.*", - "*.config.js", - "*.json", - "index.js", - "Makefile" - ] -} diff --git a/node_modules/async/cargo.js b/node_modules/async/cargo.js deleted file mode 100644 index c7e59c7..0000000 --- a/node_modules/async/cargo.js +++ /dev/null @@ -1,94 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = cargo; - -var _queue = require('./internal/queue'); - -var _queue2 = _interopRequireDefault(_queue); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * A cargo of tasks for the worker function to complete. Cargo inherits all of - * the same methods and event callbacks as [`queue`]{@link module:ControlFlow.queue}. - * @typedef {Object} CargoObject - * @memberOf module:ControlFlow - * @property {Function} length - A function returning the number of items - * waiting to be processed. Invoke like `cargo.length()`. - * @property {number} payload - An `integer` for determining how many tasks - * should be process per round. This property can be changed after a `cargo` is - * created to alter the payload on-the-fly. - * @property {Function} push - Adds `task` to the `queue`. The callback is - * called once the `worker` has finished processing the task. Instead of a - * single task, an array of `tasks` can be submitted. The respective callback is - * used for every task in the list. Invoke like `cargo.push(task, [callback])`. - * @property {Function} saturated - A callback that is called when the - * `queue.length()` hits the concurrency and further tasks will be queued. - * @property {Function} empty - A callback that is called when the last item - * from the `queue` is given to a `worker`. - * @property {Function} drain - A callback that is called when the last item - * from the `queue` has returned from the `worker`. - * @property {Function} idle - a function returning false if there are items - * waiting or being processed, or true if not. Invoke like `cargo.idle()`. - * @property {Function} pause - a function that pauses the processing of tasks - * until `resume()` is called. Invoke like `cargo.pause()`. - * @property {Function} resume - a function that resumes the processing of - * queued tasks when the queue is paused. Invoke like `cargo.resume()`. - * @property {Function} kill - a function that removes the `drain` callback and - * empties remaining tasks from the queue forcing it to go idle. Invoke like `cargo.kill()`. - */ - -/** - * Creates a `cargo` object with the specified payload. Tasks added to the - * cargo will be processed altogether (up to the `payload` limit). If the - * `worker` is in progress, the task is queued until it becomes available. Once - * the `worker` has completed some tasks, each callback of those tasks is - * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) - * for how `cargo` and `queue` work. - * - * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers - * at a time, cargo passes an array of tasks to a single worker, repeating - * when the worker is finished. - * - * @name cargo - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.queue]{@link module:ControlFlow.queue} - * @category Control Flow - * @param {AsyncFunction} worker - An asynchronous function for processing an array - * of queued tasks. Invoked with `(tasks, callback)`. - * @param {number} [payload=Infinity] - An optional `integer` for determining - * how many tasks should be processed per round; if omitted, the default is - * unlimited. - * @returns {module:ControlFlow.CargoObject} A cargo object to manage the tasks. Callbacks can - * attached as certain properties to listen for specific events during the - * lifecycle of the cargo and inner queue. - * @example - * - * // create a cargo object with payload 2 - * var cargo = async.cargo(function(tasks, callback) { - * for (var i=0; i async.dir(hello, 'world'); - * {hello: 'world'} - */ -exports.default = (0, _consoleFunc2.default)('dir'); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/dist/async.js b/node_modules/async/dist/async.js deleted file mode 100644 index 72264cc..0000000 --- a/node_modules/async/dist/async.js +++ /dev/null @@ -1,5609 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (factory((global.async = global.async || {}))); -}(this, (function (exports) { 'use strict'; - -function slice(arrayLike, start) { - start = start|0; - var newLen = Math.max(arrayLike.length - start, 0); - var newArr = Array(newLen); - for(var idx = 0; idx < newLen; idx++) { - newArr[idx] = arrayLike[start + idx]; - } - return newArr; -} - -/** - * Creates a continuation function with some arguments already applied. - * - * Useful as a shorthand when combined with other control flow functions. Any - * arguments passed to the returned function are added to the arguments - * originally passed to apply. - * - * @name apply - * @static - * @memberOf module:Utils - * @method - * @category Util - * @param {Function} fn - The function you want to eventually apply all - * arguments to. Invokes with (arguments...). - * @param {...*} arguments... - Any number of arguments to automatically apply - * when the continuation is called. - * @returns {Function} the partially-applied function - * @example - * - * // using apply - * async.parallel([ - * async.apply(fs.writeFile, 'testfile1', 'test1'), - * async.apply(fs.writeFile, 'testfile2', 'test2') - * ]); - * - * - * // the same process without using apply - * async.parallel([ - * function(callback) { - * fs.writeFile('testfile1', 'test1', callback); - * }, - * function(callback) { - * fs.writeFile('testfile2', 'test2', callback); - * } - * ]); - * - * // It's possible to pass any number of additional arguments when calling the - * // continuation: - * - * node> var fn = async.apply(sys.puts, 'one'); - * node> fn('two', 'three'); - * one - * two - * three - */ -var apply = function(fn/*, ...args*/) { - var args = slice(arguments, 1); - return function(/*callArgs*/) { - var callArgs = slice(arguments); - return fn.apply(null, args.concat(callArgs)); - }; -}; - -var initialParams = function (fn) { - return function (/*...args, callback*/) { - var args = slice(arguments); - var callback = args.pop(); - fn.call(this, args, callback); - }; -}; - -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); -} - -var hasSetImmediate = typeof setImmediate === 'function' && setImmediate; -var hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function'; - -function fallback(fn) { - setTimeout(fn, 0); -} - -function wrap(defer) { - return function (fn/*, ...args*/) { - var args = slice(arguments, 1); - defer(function () { - fn.apply(null, args); - }); - }; -} - -var _defer; - -if (hasSetImmediate) { - _defer = setImmediate; -} else if (hasNextTick) { - _defer = process.nextTick; -} else { - _defer = fallback; -} - -var setImmediate$1 = wrap(_defer); - -/** - * Take a sync function and make it async, passing its return value to a - * callback. This is useful for plugging sync functions into a waterfall, - * series, or other async functions. Any arguments passed to the generated - * function will be passed to the wrapped function (except for the final - * callback argument). Errors thrown will be passed to the callback. - * - * If the function passed to `asyncify` returns a Promise, that promises's - * resolved/rejected state will be used to call the callback, rather than simply - * the synchronous return value. - * - * This also means you can asyncify ES2017 `async` functions. - * - * @name asyncify - * @static - * @memberOf module:Utils - * @method - * @alias wrapSync - * @category Util - * @param {Function} func - The synchronous function, or Promise-returning - * function to convert to an {@link AsyncFunction}. - * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be - * invoked with `(args..., callback)`. - * @example - * - * // passing a regular synchronous function - * async.waterfall([ - * async.apply(fs.readFile, filename, "utf8"), - * async.asyncify(JSON.parse), - * function (data, next) { - * // data is the result of parsing the text. - * // If there was a parsing error, it would have been caught. - * } - * ], callback); - * - * // passing a function returning a promise - * async.waterfall([ - * async.apply(fs.readFile, filename, "utf8"), - * async.asyncify(function (contents) { - * return db.model.create(contents); - * }), - * function (model, next) { - * // `model` is the instantiated model object. - * // If there was an error, this function would be skipped. - * } - * ], callback); - * - * // es2017 example, though `asyncify` is not needed if your JS environment - * // supports async functions out of the box - * var q = async.queue(async.asyncify(async function(file) { - * var intermediateStep = await processFile(file); - * return await somePromise(intermediateStep) - * })); - * - * q.push(files); - */ -function asyncify(func) { - return initialParams(function (args, callback) { - var result; - try { - result = func.apply(this, args); - } catch (e) { - return callback(e); - } - // if result is Promise object - if (isObject(result) && typeof result.then === 'function') { - result.then(function(value) { - invokeCallback(callback, null, value); - }, function(err) { - invokeCallback(callback, err.message ? err : new Error(err)); - }); - } else { - callback(null, result); - } - }); -} - -function invokeCallback(callback, error, value) { - try { - callback(error, value); - } catch (e) { - setImmediate$1(rethrow, e); - } -} - -function rethrow(error) { - throw error; -} - -var supportsSymbol = typeof Symbol === 'function'; - -function isAsync(fn) { - return supportsSymbol && fn[Symbol.toStringTag] === 'AsyncFunction'; -} - -function wrapAsync(asyncFn) { - return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn; -} - -function applyEach$1(eachfn) { - return function(fns/*, ...args*/) { - var args = slice(arguments, 1); - var go = initialParams(function(args, callback) { - var that = this; - return eachfn(fns, function (fn, cb) { - wrapAsync(fn).apply(that, args.concat(cb)); - }, callback); - }); - if (args.length) { - return go.apply(this, args); - } - else { - return go; - } - }; -} - -/** Detect free variable `global` from Node.js. */ -var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; - -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); - -/** Built-in value references. */ -var Symbol$1 = root.Symbol; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString = objectProto.toString; - -/** Built-in value references. */ -var symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : undefined; - -/** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ -function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag$1), - tag = value[symToStringTag$1]; - - try { - value[symToStringTag$1] = undefined; - var unmasked = true; - } catch (e) {} - - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag$1] = tag; - } else { - delete value[symToStringTag$1]; - } - } - return result; -} - -/** Used for built-in method references. */ -var objectProto$1 = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString$1 = objectProto$1.toString; - -/** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ -function objectToString(value) { - return nativeObjectToString$1.call(value); -} - -/** `Object#toString` result references. */ -var nullTag = '[object Null]'; -var undefinedTag = '[object Undefined]'; - -/** Built-in value references. */ -var symToStringTag = Symbol$1 ? Symbol$1.toStringTag : undefined; - -/** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; - } - return (symToStringTag && symToStringTag in Object(value)) - ? getRawTag(value) - : objectToString(value); -} - -/** `Object#toString` result references. */ -var asyncTag = '[object AsyncFunction]'; -var funcTag = '[object Function]'; -var genTag = '[object GeneratorFunction]'; -var proxyTag = '[object Proxy]'; - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - if (!isObject(value)) { - return false; - } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; -} - -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ -function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} - -/** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ -function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); -} - -// A temporary value used to identify if the loop should be broken. -// See #1064, #1293 -var breakLoop = {}; - -/** - * This method returns `undefined`. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Util - * @example - * - * _.times(2, _.noop); - * // => [undefined, undefined] - */ -function noop() { - // No operation performed. -} - -function once(fn) { - return function () { - if (fn === null) return; - var callFn = fn; - fn = null; - callFn.apply(this, arguments); - }; -} - -var iteratorSymbol = typeof Symbol === 'function' && Symbol.iterator; - -var getIterator = function (coll) { - return iteratorSymbol && coll[iteratorSymbol] && coll[iteratorSymbol](); -}; - -/** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ -function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; -} - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return value != null && typeof value == 'object'; -} - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]'; - -/** - * The base implementation of `_.isArguments`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - */ -function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; -} - -/** Used for built-in method references. */ -var objectProto$3 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$2 = objectProto$3.hasOwnProperty; - -/** Built-in value references. */ -var propertyIsEnumerable = objectProto$3.propertyIsEnumerable; - -/** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ -var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty$2.call(value, 'callee') && - !propertyIsEnumerable.call(value, 'callee'); -}; - -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; - -/** - * This method returns `false`. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {boolean} Returns `false`. - * @example - * - * _.times(2, _.stubFalse); - * // => [false, false] - */ -function stubFalse() { - return false; -} - -/** Detect free variable `exports`. */ -var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - -/** Detect free variable `module`. */ -var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; - -/** Built-in value references. */ -var Buffer = moduleExports ? root.Buffer : undefined; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; - -/** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false - */ -var isBuffer = nativeIsBuffer || stubFalse; - -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER$1 = 9007199254740991; - -/** Used to detect unsigned integer values. */ -var reIsUint = /^(?:0|[1-9]\d*)$/; - -/** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ -function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER$1 : length; - - return !!length && - (type == 'number' || - (type != 'symbol' && reIsUint.test(value))) && - (value > -1 && value % 1 == 0 && value < length); -} - -/** `Object#toString` result references. */ -var argsTag$1 = '[object Arguments]'; -var arrayTag = '[object Array]'; -var boolTag = '[object Boolean]'; -var dateTag = '[object Date]'; -var errorTag = '[object Error]'; -var funcTag$1 = '[object Function]'; -var mapTag = '[object Map]'; -var numberTag = '[object Number]'; -var objectTag = '[object Object]'; -var regexpTag = '[object RegExp]'; -var setTag = '[object Set]'; -var stringTag = '[object String]'; -var weakMapTag = '[object WeakMap]'; - -var arrayBufferTag = '[object ArrayBuffer]'; -var dataViewTag = '[object DataView]'; -var float32Tag = '[object Float32Array]'; -var float64Tag = '[object Float64Array]'; -var int8Tag = '[object Int8Array]'; -var int16Tag = '[object Int16Array]'; -var int32Tag = '[object Int32Array]'; -var uint8Tag = '[object Uint8Array]'; -var uint8ClampedTag = '[object Uint8ClampedArray]'; -var uint16Tag = '[object Uint16Array]'; -var uint32Tag = '[object Uint32Array]'; - -/** Used to identify `toStringTag` values of typed arrays. */ -var typedArrayTags = {}; -typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = -typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = -typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = -typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = -typedArrayTags[uint32Tag] = true; -typedArrayTags[argsTag$1] = typedArrayTags[arrayTag] = -typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = -typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = -typedArrayTags[errorTag] = typedArrayTags[funcTag$1] = -typedArrayTags[mapTag] = typedArrayTags[numberTag] = -typedArrayTags[objectTag] = typedArrayTags[regexpTag] = -typedArrayTags[setTag] = typedArrayTags[stringTag] = -typedArrayTags[weakMapTag] = false; - -/** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ -function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; -} - -/** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ -function baseUnary(func) { - return function(value) { - return func(value); - }; -} - -/** Detect free variable `exports`. */ -var freeExports$1 = typeof exports == 'object' && exports && !exports.nodeType && exports; - -/** Detect free variable `module`. */ -var freeModule$1 = freeExports$1 && typeof module == 'object' && module && !module.nodeType && module; - -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1; - -/** Detect free variable `process` from Node.js. */ -var freeProcess = moduleExports$1 && freeGlobal.process; - -/** Used to access faster Node.js helpers. */ -var nodeUtil = (function() { - try { - // Use `util.types` for Node.js 10+. - var types = freeModule$1 && freeModule$1.require && freeModule$1.require('util').types; - - if (types) { - return types; - } - - // Legacy `process.binding('util')` for Node.js < 10. - return freeProcess && freeProcess.binding && freeProcess.binding('util'); - } catch (e) {} -}()); - -/* Node.js helper references. */ -var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - -/** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ -var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - -/** Used for built-in method references. */ -var objectProto$2 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$1 = objectProto$2.hasOwnProperty; - -/** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ -function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), - isArg = !isArr && isArguments(value), - isBuff = !isArr && !isArg && isBuffer(value), - isType = !isArr && !isArg && !isBuff && isTypedArray(value), - skipIndexes = isArr || isArg || isBuff || isType, - result = skipIndexes ? baseTimes(value.length, String) : [], - length = result.length; - - for (var key in value) { - if ((inherited || hasOwnProperty$1.call(value, key)) && - !(skipIndexes && ( - // Safari 9 has enumerable `arguments.length` in strict mode. - key == 'length' || - // Node.js 0.10 has enumerable non-index properties on buffers. - (isBuff && (key == 'offset' || key == 'parent')) || - // PhantomJS 2 has enumerable non-index properties on typed arrays. - (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || - // Skip index properties. - isIndex(key, length) - ))) { - result.push(key); - } - } - return result; -} - -/** Used for built-in method references. */ -var objectProto$5 = Object.prototype; - -/** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ -function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$5; - - return value === proto; -} - -/** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ -function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; -} - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeKeys = overArg(Object.keys, Object); - -/** Used for built-in method references. */ -var objectProto$4 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$3 = objectProto$4.hasOwnProperty; - -/** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty$3.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; -} - -/** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ -function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); -} - -function createArrayIterator(coll) { - var i = -1; - var len = coll.length; - return function next() { - return ++i < len ? {value: coll[i], key: i} : null; - } -} - -function createES2015Iterator(iterator) { - var i = -1; - return function next() { - var item = iterator.next(); - if (item.done) - return null; - i++; - return {value: item.value, key: i}; - } -} - -function createObjectIterator(obj) { - var okeys = keys(obj); - var i = -1; - var len = okeys.length; - return function next() { - var key = okeys[++i]; - return i < len ? {value: obj[key], key: key} : null; - }; -} - -function iterator(coll) { - if (isArrayLike(coll)) { - return createArrayIterator(coll); - } - - var iterator = getIterator(coll); - return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll); -} - -function onlyOnce(fn) { - return function() { - if (fn === null) throw new Error("Callback was already called."); - var callFn = fn; - fn = null; - callFn.apply(this, arguments); - }; -} - -function _eachOfLimit(limit) { - return function (obj, iteratee, callback) { - callback = once(callback || noop); - if (limit <= 0 || !obj) { - return callback(null); - } - var nextElem = iterator(obj); - var done = false; - var running = 0; - var looping = false; - - function iterateeCallback(err, value) { - running -= 1; - if (err) { - done = true; - callback(err); - } - else if (value === breakLoop || (done && running <= 0)) { - done = true; - return callback(null); - } - else if (!looping) { - replenish(); - } - } - - function replenish () { - looping = true; - while (running < limit && !done) { - var elem = nextElem(); - if (elem === null) { - done = true; - if (running <= 0) { - callback(null); - } - return; - } - running += 1; - iteratee(elem.value, elem.key, onlyOnce(iterateeCallback)); - } - looping = false; - } - - replenish(); - }; -} - -/** - * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a - * time. - * - * @name eachOfLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.eachOf]{@link module:Collections.eachOf} - * @alias forEachOfLimit - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async function to apply to each - * item in `coll`. The `key` is the item's key, or index in the case of an - * array. - * Invoked with (item, key, callback). - * @param {Function} [callback] - A callback which is called when all - * `iteratee` functions have finished, or an error occurs. Invoked with (err). - */ -function eachOfLimit(coll, limit, iteratee, callback) { - _eachOfLimit(limit)(coll, wrapAsync(iteratee), callback); -} - -function doLimit(fn, limit) { - return function (iterable, iteratee, callback) { - return fn(iterable, limit, iteratee, callback); - }; -} - -// eachOf implementation optimized for array-likes -function eachOfArrayLike(coll, iteratee, callback) { - callback = once(callback || noop); - var index = 0, - completed = 0, - length = coll.length; - if (length === 0) { - callback(null); - } - - function iteratorCallback(err, value) { - if (err) { - callback(err); - } else if ((++completed === length) || value === breakLoop) { - callback(null); - } - } - - for (; index < length; index++) { - iteratee(coll[index], index, onlyOnce(iteratorCallback)); - } -} - -// a generic version of eachOf which can handle array, object, and iterator cases. -var eachOfGeneric = doLimit(eachOfLimit, Infinity); - -/** - * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument - * to the iteratee. - * - * @name eachOf - * @static - * @memberOf module:Collections - * @method - * @alias forEachOf - * @category Collection - * @see [async.each]{@link module:Collections.each} - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - A function to apply to each - * item in `coll`. - * The `key` is the item's key, or index in the case of an array. - * Invoked with (item, key, callback). - * @param {Function} [callback] - A callback which is called when all - * `iteratee` functions have finished, or an error occurs. Invoked with (err). - * @example - * - * var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"}; - * var configs = {}; - * - * async.forEachOf(obj, function (value, key, callback) { - * fs.readFile(__dirname + value, "utf8", function (err, data) { - * if (err) return callback(err); - * try { - * configs[key] = JSON.parse(data); - * } catch (e) { - * return callback(e); - * } - * callback(); - * }); - * }, function (err) { - * if (err) console.error(err.message); - * // configs is now a map of JSON data - * doSomethingWith(configs); - * }); - */ -var eachOf = function(coll, iteratee, callback) { - var eachOfImplementation = isArrayLike(coll) ? eachOfArrayLike : eachOfGeneric; - eachOfImplementation(coll, wrapAsync(iteratee), callback); -}; - -function doParallel(fn) { - return function (obj, iteratee, callback) { - return fn(eachOf, obj, wrapAsync(iteratee), callback); - }; -} - -function _asyncMap(eachfn, arr, iteratee, callback) { - callback = callback || noop; - arr = arr || []; - var results = []; - var counter = 0; - var _iteratee = wrapAsync(iteratee); - - eachfn(arr, function (value, _, callback) { - var index = counter++; - _iteratee(value, function (err, v) { - results[index] = v; - callback(err); - }); - }, function (err) { - callback(err, results); - }); -} - -/** - * Produces a new collection of values by mapping each value in `coll` through - * the `iteratee` function. The `iteratee` is called with an item from `coll` - * and a callback for when it has finished processing. Each of these callback - * takes 2 arguments: an `error`, and the transformed item from `coll`. If - * `iteratee` passes an error to its callback, the main `callback` (for the - * `map` function) is immediately called with the error. - * - * Note, that since this function applies the `iteratee` to each item in - * parallel, there is no guarantee that the `iteratee` functions will complete - * in order. However, the results array will be in the same order as the - * original `coll`. - * - * If `map` is passed an Object, the results will be an Array. The results - * will roughly be in the order of the original Objects' keys (but this can - * vary across JavaScript engines). - * - * @name map - * @static - * @memberOf module:Collections - * @method - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The iteratee should complete with the transformed item. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. Results is an Array of the - * transformed items from the `coll`. Invoked with (err, results). - * @example - * - * async.map(['file1','file2','file3'], fs.stat, function(err, results) { - * // results is now an array of stats for each file - * }); - */ -var map = doParallel(_asyncMap); - -/** - * Applies the provided arguments to each function in the array, calling - * `callback` after all functions have completed. If you only provide the first - * argument, `fns`, then it will return a function which lets you pass in the - * arguments as if it were a single function call. If more arguments are - * provided, `callback` is required while `args` is still optional. - * - * @name applyEach - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {Array|Iterable|Object} fns - A collection of {@link AsyncFunction}s - * to all call with the same arguments - * @param {...*} [args] - any number of separate arguments to pass to the - * function. - * @param {Function} [callback] - the final argument should be the callback, - * called when all functions have completed processing. - * @returns {Function} - If only the first argument, `fns`, is provided, it will - * return a function which lets you pass in the arguments as if it were a single - * function call. The signature is `(..args, callback)`. If invoked with any - * arguments, `callback` is required. - * @example - * - * async.applyEach([enableSearch, updateSchema], 'bucket', callback); - * - * // partial application example: - * async.each( - * buckets, - * async.applyEach([enableSearch, updateSchema]), - * callback - * ); - */ -var applyEach = applyEach$1(map); - -function doParallelLimit(fn) { - return function (obj, limit, iteratee, callback) { - return fn(_eachOfLimit(limit), obj, wrapAsync(iteratee), callback); - }; -} - -/** - * The same as [`map`]{@link module:Collections.map} but runs a maximum of `limit` async operations at a time. - * - * @name mapLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.map]{@link module:Collections.map} - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The iteratee should complete with the transformed item. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. Results is an array of the - * transformed items from the `coll`. Invoked with (err, results). - */ -var mapLimit = doParallelLimit(_asyncMap); - -/** - * The same as [`map`]{@link module:Collections.map} but runs only a single async operation at a time. - * - * @name mapSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.map]{@link module:Collections.map} - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The iteratee should complete with the transformed item. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. Results is an array of the - * transformed items from the `coll`. Invoked with (err, results). - */ -var mapSeries = doLimit(mapLimit, 1); - -/** - * The same as [`applyEach`]{@link module:ControlFlow.applyEach} but runs only a single async operation at a time. - * - * @name applyEachSeries - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.applyEach]{@link module:ControlFlow.applyEach} - * @category Control Flow - * @param {Array|Iterable|Object} fns - A collection of {@link AsyncFunction}s to all - * call with the same arguments - * @param {...*} [args] - any number of separate arguments to pass to the - * function. - * @param {Function} [callback] - the final argument should be the callback, - * called when all functions have completed processing. - * @returns {Function} - If only the first argument is provided, it will return - * a function which lets you pass in the arguments as if it were a single - * function call. - */ -var applyEachSeries = applyEach$1(mapSeries); - -/** - * A specialized version of `_.forEach` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ -function arrayEach(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - return array; -} - -/** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ -function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; -} - -/** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ -var baseFor = createBaseFor(); - -/** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ -function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); -} - -/** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; -} - -/** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ -function baseIsNaN(value) { - return value !== value; -} - -/** - * A specialized version of `_.indexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function strictIndexOf(array, value, fromIndex) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; -} - -/** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseIndexOf(array, value, fromIndex) { - return value === value - ? strictIndexOf(array, value, fromIndex) - : baseFindIndex(array, baseIsNaN, fromIndex); -} - -/** - * Determines the best order for running the {@link AsyncFunction}s in `tasks`, based on - * their requirements. Each function can optionally depend on other functions - * being completed first, and each function is run as soon as its requirements - * are satisfied. - * - * If any of the {@link AsyncFunction}s pass an error to their callback, the `auto` sequence - * will stop. Further tasks will not execute (so any other functions depending - * on it will not run), and the main `callback` is immediately called with the - * error. - * - * {@link AsyncFunction}s also receive an object containing the results of functions which - * have completed so far as the first argument, if they have dependencies. If a - * task function has no dependencies, it will only be passed a callback. - * - * @name auto - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {Object} tasks - An object. Each of its properties is either a - * function or an array of requirements, with the {@link AsyncFunction} itself the last item - * in the array. The object's key of a property serves as the name of the task - * defined by that property, i.e. can be used when specifying requirements for - * other tasks. The function receives one or two arguments: - * * a `results` object, containing the results of the previously executed - * functions, only passed if the task has any dependencies, - * * a `callback(err, result)` function, which must be called when finished, - * passing an `error` (which can be `null`) and the result of the function's - * execution. - * @param {number} [concurrency=Infinity] - An optional `integer` for - * determining the maximum number of tasks that can be run in parallel. By - * default, as many as possible. - * @param {Function} [callback] - An optional callback which is called when all - * the tasks have been completed. It receives the `err` argument if any `tasks` - * pass an error to their callback. Results are always returned; however, if an - * error occurs, no further `tasks` will be performed, and the results object - * will only contain partial results. Invoked with (err, results). - * @returns undefined - * @example - * - * async.auto({ - * // this function will just be passed a callback - * readData: async.apply(fs.readFile, 'data.txt', 'utf-8'), - * showData: ['readData', function(results, cb) { - * // results.readData is the file's contents - * // ... - * }] - * }, callback); - * - * async.auto({ - * get_data: function(callback) { - * console.log('in get_data'); - * // async code to get some data - * callback(null, 'data', 'converted to array'); - * }, - * make_folder: function(callback) { - * console.log('in make_folder'); - * // async code to create a directory to store a file in - * // this is run at the same time as getting the data - * callback(null, 'folder'); - * }, - * write_file: ['get_data', 'make_folder', function(results, callback) { - * console.log('in write_file', JSON.stringify(results)); - * // once there is some data and the directory exists, - * // write the data to a file in the directory - * callback(null, 'filename'); - * }], - * email_link: ['write_file', function(results, callback) { - * console.log('in email_link', JSON.stringify(results)); - * // once the file is written let's email a link to it... - * // results.write_file contains the filename returned by write_file. - * callback(null, {'file':results.write_file, 'email':'user@example.com'}); - * }] - * }, function(err, results) { - * console.log('err = ', err); - * console.log('results = ', results); - * }); - */ -var auto = function (tasks, concurrency, callback) { - if (typeof concurrency === 'function') { - // concurrency is optional, shift the args. - callback = concurrency; - concurrency = null; - } - callback = once(callback || noop); - var keys$$1 = keys(tasks); - var numTasks = keys$$1.length; - if (!numTasks) { - return callback(null); - } - if (!concurrency) { - concurrency = numTasks; - } - - var results = {}; - var runningTasks = 0; - var hasError = false; - - var listeners = Object.create(null); - - var readyTasks = []; - - // for cycle detection: - var readyToCheck = []; // tasks that have been identified as reachable - // without the possibility of returning to an ancestor task - var uncheckedDependencies = {}; - - baseForOwn(tasks, function (task, key) { - if (!isArray(task)) { - // no dependencies - enqueueTask(key, [task]); - readyToCheck.push(key); - return; - } - - var dependencies = task.slice(0, task.length - 1); - var remainingDependencies = dependencies.length; - if (remainingDependencies === 0) { - enqueueTask(key, task); - readyToCheck.push(key); - return; - } - uncheckedDependencies[key] = remainingDependencies; - - arrayEach(dependencies, function (dependencyName) { - if (!tasks[dependencyName]) { - throw new Error('async.auto task `' + key + - '` has a non-existent dependency `' + - dependencyName + '` in ' + - dependencies.join(', ')); - } - addListener(dependencyName, function () { - remainingDependencies--; - if (remainingDependencies === 0) { - enqueueTask(key, task); - } - }); - }); - }); - - checkForDeadlocks(); - processQueue(); - - function enqueueTask(key, task) { - readyTasks.push(function () { - runTask(key, task); - }); - } - - function processQueue() { - if (readyTasks.length === 0 && runningTasks === 0) { - return callback(null, results); - } - while(readyTasks.length && runningTasks < concurrency) { - var run = readyTasks.shift(); - run(); - } - - } - - function addListener(taskName, fn) { - var taskListeners = listeners[taskName]; - if (!taskListeners) { - taskListeners = listeners[taskName] = []; - } - - taskListeners.push(fn); - } - - function taskComplete(taskName) { - var taskListeners = listeners[taskName] || []; - arrayEach(taskListeners, function (fn) { - fn(); - }); - processQueue(); - } - - - function runTask(key, task) { - if (hasError) return; - - var taskCallback = onlyOnce(function(err, result) { - runningTasks--; - if (arguments.length > 2) { - result = slice(arguments, 1); - } - if (err) { - var safeResults = {}; - baseForOwn(results, function(val, rkey) { - safeResults[rkey] = val; - }); - safeResults[key] = result; - hasError = true; - listeners = Object.create(null); - - callback(err, safeResults); - } else { - results[key] = result; - taskComplete(key); - } - }); - - runningTasks++; - var taskFn = wrapAsync(task[task.length - 1]); - if (task.length > 1) { - taskFn(results, taskCallback); - } else { - taskFn(taskCallback); - } - } - - function checkForDeadlocks() { - // Kahn's algorithm - // https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm - // http://connalle.blogspot.com/2013/10/topological-sortingkahn-algorithm.html - var currentTask; - var counter = 0; - while (readyToCheck.length) { - currentTask = readyToCheck.pop(); - counter++; - arrayEach(getDependents(currentTask), function (dependent) { - if (--uncheckedDependencies[dependent] === 0) { - readyToCheck.push(dependent); - } - }); - } - - if (counter !== numTasks) { - throw new Error( - 'async.auto cannot execute tasks due to a recursive dependency' - ); - } - } - - function getDependents(taskName) { - var result = []; - baseForOwn(tasks, function (task, key) { - if (isArray(task) && baseIndexOf(task, taskName, 0) >= 0) { - result.push(key); - } - }); - return result; - } -}; - -/** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ -function arrayMap(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; -} - -/** `Object#toString` result references. */ -var symbolTag = '[object Symbol]'; - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && baseGetTag(value) == symbolTag); -} - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol$1 ? Symbol$1.prototype : undefined; -var symbolToString = symbolProto ? symbolProto.toString : undefined; - -/** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isArray(value)) { - // Recursively convert values (susceptible to call stack limits). - return arrayMap(value, baseToString) + ''; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -/** - * The base implementation of `_.slice` without an iteratee call guard. - * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ -function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; - } - return result; -} - -/** - * Casts `array` to a slice if it's needed. - * - * @private - * @param {Array} array The array to inspect. - * @param {number} start The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the cast slice. - */ -function castSlice(array, start, end) { - var length = array.length; - end = end === undefined ? length : end; - return (!start && end >= length) ? array : baseSlice(array, start, end); -} - -/** - * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the last unmatched string symbol. - */ -function charsEndIndex(strSymbols, chrSymbols) { - var index = strSymbols.length; - - while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; -} - -/** - * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the first unmatched string symbol. - */ -function charsStartIndex(strSymbols, chrSymbols) { - var index = -1, - length = strSymbols.length; - - while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; -} - -/** - * Converts an ASCII `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ -function asciiToArray(string) { - return string.split(''); -} - -/** Used to compose unicode character classes. */ -var rsAstralRange = '\\ud800-\\udfff'; -var rsComboMarksRange = '\\u0300-\\u036f'; -var reComboHalfMarksRange = '\\ufe20-\\ufe2f'; -var rsComboSymbolsRange = '\\u20d0-\\u20ff'; -var rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange; -var rsVarRange = '\\ufe0e\\ufe0f'; - -/** Used to compose unicode capture groups. */ -var rsZWJ = '\\u200d'; - -/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ -var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); - -/** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ -function hasUnicode(string) { - return reHasUnicode.test(string); -} - -/** Used to compose unicode character classes. */ -var rsAstralRange$1 = '\\ud800-\\udfff'; -var rsComboMarksRange$1 = '\\u0300-\\u036f'; -var reComboHalfMarksRange$1 = '\\ufe20-\\ufe2f'; -var rsComboSymbolsRange$1 = '\\u20d0-\\u20ff'; -var rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1; -var rsVarRange$1 = '\\ufe0e\\ufe0f'; - -/** Used to compose unicode capture groups. */ -var rsAstral = '[' + rsAstralRange$1 + ']'; -var rsCombo = '[' + rsComboRange$1 + ']'; -var rsFitz = '\\ud83c[\\udffb-\\udfff]'; -var rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')'; -var rsNonAstral = '[^' + rsAstralRange$1 + ']'; -var rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}'; -var rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]'; -var rsZWJ$1 = '\\u200d'; - -/** Used to compose unicode regexes. */ -var reOptMod = rsModifier + '?'; -var rsOptVar = '[' + rsVarRange$1 + ']?'; -var rsOptJoin = '(?:' + rsZWJ$1 + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*'; -var rsSeq = rsOptVar + reOptMod + rsOptJoin; -var rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; - -/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ -var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - -/** - * Converts a Unicode `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ -function unicodeToArray(string) { - return string.match(reUnicode) || []; -} - -/** - * Converts `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ -function stringToArray(string) { - return hasUnicode(string) - ? unicodeToArray(string) - : asciiToArray(string); -} - -/** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ -function toString(value) { - return value == null ? '' : baseToString(value); -} - -/** Used to match leading and trailing whitespace. */ -var reTrim = /^\s+|\s+$/g; - -/** - * Removes leading and trailing whitespace or specified characters from `string`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to trim. - * @param {string} [chars=whitespace] The characters to trim. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {string} Returns the trimmed string. - * @example - * - * _.trim(' abc '); - * // => 'abc' - * - * _.trim('-_-abc-_-', '_-'); - * // => 'abc' - * - * _.map([' foo ', ' bar '], _.trim); - * // => ['foo', 'bar'] - */ -function trim(string, chars, guard) { - string = toString(string); - if (string && (guard || chars === undefined)) { - return string.replace(reTrim, ''); - } - if (!string || !(chars = baseToString(chars))) { - return string; - } - var strSymbols = stringToArray(string), - chrSymbols = stringToArray(chars), - start = charsStartIndex(strSymbols, chrSymbols), - end = charsEndIndex(strSymbols, chrSymbols) + 1; - - return castSlice(strSymbols, start, end).join(''); -} - -var FN_ARGS = /^(?:async\s+)?(function)?\s*[^\(]*\(\s*([^\)]*)\)/m; -var FN_ARG_SPLIT = /,/; -var FN_ARG = /(=.+)?(\s*)$/; -var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg; - -function parseParams(func) { - func = func.toString().replace(STRIP_COMMENTS, ''); - func = func.match(FN_ARGS)[2].replace(' ', ''); - func = func ? func.split(FN_ARG_SPLIT) : []; - func = func.map(function (arg){ - return trim(arg.replace(FN_ARG, '')); - }); - return func; -} - -/** - * A dependency-injected version of the [async.auto]{@link module:ControlFlow.auto} function. Dependent - * tasks are specified as parameters to the function, after the usual callback - * parameter, with the parameter names matching the names of the tasks it - * depends on. This can provide even more readable task graphs which can be - * easier to maintain. - * - * If a final callback is specified, the task results are similarly injected, - * specified as named parameters after the initial error parameter. - * - * The autoInject function is purely syntactic sugar and its semantics are - * otherwise equivalent to [async.auto]{@link module:ControlFlow.auto}. - * - * @name autoInject - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.auto]{@link module:ControlFlow.auto} - * @category Control Flow - * @param {Object} tasks - An object, each of whose properties is an {@link AsyncFunction} of - * the form 'func([dependencies...], callback). The object's key of a property - * serves as the name of the task defined by that property, i.e. can be used - * when specifying requirements for other tasks. - * * The `callback` parameter is a `callback(err, result)` which must be called - * when finished, passing an `error` (which can be `null`) and the result of - * the function's execution. The remaining parameters name other tasks on - * which the task is dependent, and the results from those tasks are the - * arguments of those parameters. - * @param {Function} [callback] - An optional callback which is called when all - * the tasks have been completed. It receives the `err` argument if any `tasks` - * pass an error to their callback, and a `results` object with any completed - * task results, similar to `auto`. - * @example - * - * // The example from `auto` can be rewritten as follows: - * async.autoInject({ - * get_data: function(callback) { - * // async code to get some data - * callback(null, 'data', 'converted to array'); - * }, - * make_folder: function(callback) { - * // async code to create a directory to store a file in - * // this is run at the same time as getting the data - * callback(null, 'folder'); - * }, - * write_file: function(get_data, make_folder, callback) { - * // once there is some data and the directory exists, - * // write the data to a file in the directory - * callback(null, 'filename'); - * }, - * email_link: function(write_file, callback) { - * // once the file is written let's email a link to it... - * // write_file contains the filename returned by write_file. - * callback(null, {'file':write_file, 'email':'user@example.com'}); - * } - * }, function(err, results) { - * console.log('err = ', err); - * console.log('email_link = ', results.email_link); - * }); - * - * // If you are using a JS minifier that mangles parameter names, `autoInject` - * // will not work with plain functions, since the parameter names will be - * // collapsed to a single letter identifier. To work around this, you can - * // explicitly specify the names of the parameters your task function needs - * // in an array, similar to Angular.js dependency injection. - * - * // This still has an advantage over plain `auto`, since the results a task - * // depends on are still spread into arguments. - * async.autoInject({ - * //... - * write_file: ['get_data', 'make_folder', function(get_data, make_folder, callback) { - * callback(null, 'filename'); - * }], - * email_link: ['write_file', function(write_file, callback) { - * callback(null, {'file':write_file, 'email':'user@example.com'}); - * }] - * //... - * }, function(err, results) { - * console.log('err = ', err); - * console.log('email_link = ', results.email_link); - * }); - */ -function autoInject(tasks, callback) { - var newTasks = {}; - - baseForOwn(tasks, function (taskFn, key) { - var params; - var fnIsAsync = isAsync(taskFn); - var hasNoDeps = - (!fnIsAsync && taskFn.length === 1) || - (fnIsAsync && taskFn.length === 0); - - if (isArray(taskFn)) { - params = taskFn.slice(0, -1); - taskFn = taskFn[taskFn.length - 1]; - - newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn); - } else if (hasNoDeps) { - // no dependencies, use the function as-is - newTasks[key] = taskFn; - } else { - params = parseParams(taskFn); - if (taskFn.length === 0 && !fnIsAsync && params.length === 0) { - throw new Error("autoInject task functions require explicit parameters."); - } - - // remove callback param - if (!fnIsAsync) params.pop(); - - newTasks[key] = params.concat(newTask); - } - - function newTask(results, taskCb) { - var newArgs = arrayMap(params, function (name) { - return results[name]; - }); - newArgs.push(taskCb); - wrapAsync(taskFn).apply(null, newArgs); - } - }); - - auto(newTasks, callback); -} - -// Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation -// used for queues. This implementation assumes that the node provided by the user can be modified -// to adjust the next and last properties. We implement only the minimal functionality -// for queue support. -function DLL() { - this.head = this.tail = null; - this.length = 0; -} - -function setInitial(dll, node) { - dll.length = 1; - dll.head = dll.tail = node; -} - -DLL.prototype.removeLink = function(node) { - if (node.prev) node.prev.next = node.next; - else this.head = node.next; - if (node.next) node.next.prev = node.prev; - else this.tail = node.prev; - - node.prev = node.next = null; - this.length -= 1; - return node; -}; - -DLL.prototype.empty = function () { - while(this.head) this.shift(); - return this; -}; - -DLL.prototype.insertAfter = function(node, newNode) { - newNode.prev = node; - newNode.next = node.next; - if (node.next) node.next.prev = newNode; - else this.tail = newNode; - node.next = newNode; - this.length += 1; -}; - -DLL.prototype.insertBefore = function(node, newNode) { - newNode.prev = node.prev; - newNode.next = node; - if (node.prev) node.prev.next = newNode; - else this.head = newNode; - node.prev = newNode; - this.length += 1; -}; - -DLL.prototype.unshift = function(node) { - if (this.head) this.insertBefore(this.head, node); - else setInitial(this, node); -}; - -DLL.prototype.push = function(node) { - if (this.tail) this.insertAfter(this.tail, node); - else setInitial(this, node); -}; - -DLL.prototype.shift = function() { - return this.head && this.removeLink(this.head); -}; - -DLL.prototype.pop = function() { - return this.tail && this.removeLink(this.tail); -}; - -DLL.prototype.toArray = function () { - var arr = Array(this.length); - var curr = this.head; - for(var idx = 0; idx < this.length; idx++) { - arr[idx] = curr.data; - curr = curr.next; - } - return arr; -}; - -DLL.prototype.remove = function (testFn) { - var curr = this.head; - while(!!curr) { - var next = curr.next; - if (testFn(curr)) { - this.removeLink(curr); - } - curr = next; - } - return this; -}; - -function queue(worker, concurrency, payload) { - if (concurrency == null) { - concurrency = 1; - } - else if(concurrency === 0) { - throw new Error('Concurrency must not be zero'); - } - - var _worker = wrapAsync(worker); - var numRunning = 0; - var workersList = []; - - var processingScheduled = false; - function _insert(data, insertAtFront, callback) { - if (callback != null && typeof callback !== 'function') { - throw new Error('task callback must be a function'); - } - q.started = true; - if (!isArray(data)) { - data = [data]; - } - if (data.length === 0 && q.idle()) { - // call drain immediately if there are no tasks - return setImmediate$1(function() { - q.drain(); - }); - } - - for (var i = 0, l = data.length; i < l; i++) { - var item = { - data: data[i], - callback: callback || noop - }; - - if (insertAtFront) { - q._tasks.unshift(item); - } else { - q._tasks.push(item); - } - } - - if (!processingScheduled) { - processingScheduled = true; - setImmediate$1(function() { - processingScheduled = false; - q.process(); - }); - } - } - - function _next(tasks) { - return function(err){ - numRunning -= 1; - - for (var i = 0, l = tasks.length; i < l; i++) { - var task = tasks[i]; - - var index = baseIndexOf(workersList, task, 0); - if (index === 0) { - workersList.shift(); - } else if (index > 0) { - workersList.splice(index, 1); - } - - task.callback.apply(task, arguments); - - if (err != null) { - q.error(err, task.data); - } - } - - if (numRunning <= (q.concurrency - q.buffer) ) { - q.unsaturated(); - } - - if (q.idle()) { - q.drain(); - } - q.process(); - }; - } - - var isProcessing = false; - var q = { - _tasks: new DLL(), - concurrency: concurrency, - payload: payload, - saturated: noop, - unsaturated:noop, - buffer: concurrency / 4, - empty: noop, - drain: noop, - error: noop, - started: false, - paused: false, - push: function (data, callback) { - _insert(data, false, callback); - }, - kill: function () { - q.drain = noop; - q._tasks.empty(); - }, - unshift: function (data, callback) { - _insert(data, true, callback); - }, - remove: function (testFn) { - q._tasks.remove(testFn); - }, - process: function () { - // Avoid trying to start too many processing operations. This can occur - // when callbacks resolve synchronously (#1267). - if (isProcessing) { - return; - } - isProcessing = true; - while(!q.paused && numRunning < q.concurrency && q._tasks.length){ - var tasks = [], data = []; - var l = q._tasks.length; - if (q.payload) l = Math.min(l, q.payload); - for (var i = 0; i < l; i++) { - var node = q._tasks.shift(); - tasks.push(node); - workersList.push(node); - data.push(node.data); - } - - numRunning += 1; - - if (q._tasks.length === 0) { - q.empty(); - } - - if (numRunning === q.concurrency) { - q.saturated(); - } - - var cb = onlyOnce(_next(tasks)); - _worker(data, cb); - } - isProcessing = false; - }, - length: function () { - return q._tasks.length; - }, - running: function () { - return numRunning; - }, - workersList: function () { - return workersList; - }, - idle: function() { - return q._tasks.length + numRunning === 0; - }, - pause: function () { - q.paused = true; - }, - resume: function () { - if (q.paused === false) { return; } - q.paused = false; - setImmediate$1(q.process); - } - }; - return q; -} - -/** - * A cargo of tasks for the worker function to complete. Cargo inherits all of - * the same methods and event callbacks as [`queue`]{@link module:ControlFlow.queue}. - * @typedef {Object} CargoObject - * @memberOf module:ControlFlow - * @property {Function} length - A function returning the number of items - * waiting to be processed. Invoke like `cargo.length()`. - * @property {number} payload - An `integer` for determining how many tasks - * should be process per round. This property can be changed after a `cargo` is - * created to alter the payload on-the-fly. - * @property {Function} push - Adds `task` to the `queue`. The callback is - * called once the `worker` has finished processing the task. Instead of a - * single task, an array of `tasks` can be submitted. The respective callback is - * used for every task in the list. Invoke like `cargo.push(task, [callback])`. - * @property {Function} saturated - A callback that is called when the - * `queue.length()` hits the concurrency and further tasks will be queued. - * @property {Function} empty - A callback that is called when the last item - * from the `queue` is given to a `worker`. - * @property {Function} drain - A callback that is called when the last item - * from the `queue` has returned from the `worker`. - * @property {Function} idle - a function returning false if there are items - * waiting or being processed, or true if not. Invoke like `cargo.idle()`. - * @property {Function} pause - a function that pauses the processing of tasks - * until `resume()` is called. Invoke like `cargo.pause()`. - * @property {Function} resume - a function that resumes the processing of - * queued tasks when the queue is paused. Invoke like `cargo.resume()`. - * @property {Function} kill - a function that removes the `drain` callback and - * empties remaining tasks from the queue forcing it to go idle. Invoke like `cargo.kill()`. - */ - -/** - * Creates a `cargo` object with the specified payload. Tasks added to the - * cargo will be processed altogether (up to the `payload` limit). If the - * `worker` is in progress, the task is queued until it becomes available. Once - * the `worker` has completed some tasks, each callback of those tasks is - * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) - * for how `cargo` and `queue` work. - * - * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers - * at a time, cargo passes an array of tasks to a single worker, repeating - * when the worker is finished. - * - * @name cargo - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.queue]{@link module:ControlFlow.queue} - * @category Control Flow - * @param {AsyncFunction} worker - An asynchronous function for processing an array - * of queued tasks. Invoked with `(tasks, callback)`. - * @param {number} [payload=Infinity] - An optional `integer` for determining - * how many tasks should be processed per round; if omitted, the default is - * unlimited. - * @returns {module:ControlFlow.CargoObject} A cargo object to manage the tasks. Callbacks can - * attached as certain properties to listen for specific events during the - * lifecycle of the cargo and inner queue. - * @example - * - * // create a cargo object with payload 2 - * var cargo = async.cargo(function(tasks, callback) { - * for (var i=0; i true - */ -function identity(value) { - return value; -} - -function _createTester(check, getResult) { - return function(eachfn, arr, iteratee, cb) { - cb = cb || noop; - var testPassed = false; - var testResult; - eachfn(arr, function(value, _, callback) { - iteratee(value, function(err, result) { - if (err) { - callback(err); - } else if (check(result) && !testResult) { - testPassed = true; - testResult = getResult(true, value); - callback(null, breakLoop); - } else { - callback(); - } - }); - }, function(err) { - if (err) { - cb(err); - } else { - cb(null, testPassed ? testResult : getResult(false)); - } - }); - }; -} - -function _findGetResult(v, x) { - return x; -} - -/** - * Returns the first value in `coll` that passes an async truth test. The - * `iteratee` is applied in parallel, meaning the first iteratee to return - * `true` will fire the detect `callback` with that result. That means the - * result might not be the first item in the original `coll` (in terms of order) - * that passes the test. - - * If order within the original `coll` is important, then look at - * [`detectSeries`]{@link module:Collections.detectSeries}. - * - * @name detect - * @static - * @memberOf module:Collections - * @method - * @alias find - * @category Collections - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. - * The iteratee must complete with a boolean value as its result. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called as soon as any - * iteratee returns `true`, or after all the `iteratee` functions have finished. - * Result will be the first item in the array that passes the truth test - * (iteratee) or the value `undefined` if none passed. Invoked with - * (err, result). - * @example - * - * async.detect(['file1','file2','file3'], function(filePath, callback) { - * fs.access(filePath, function(err) { - * callback(null, !err) - * }); - * }, function(err, result) { - * // result now equals the first file in the list that exists - * }); - */ -var detect = doParallel(_createTester(identity, _findGetResult)); - -/** - * The same as [`detect`]{@link module:Collections.detect} but runs a maximum of `limit` async operations at a - * time. - * - * @name detectLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.detect]{@link module:Collections.detect} - * @alias findLimit - * @category Collections - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. - * The iteratee must complete with a boolean value as its result. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called as soon as any - * iteratee returns `true`, or after all the `iteratee` functions have finished. - * Result will be the first item in the array that passes the truth test - * (iteratee) or the value `undefined` if none passed. Invoked with - * (err, result). - */ -var detectLimit = doParallelLimit(_createTester(identity, _findGetResult)); - -/** - * The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time. - * - * @name detectSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.detect]{@link module:Collections.detect} - * @alias findSeries - * @category Collections - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. - * The iteratee must complete with a boolean value as its result. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called as soon as any - * iteratee returns `true`, or after all the `iteratee` functions have finished. - * Result will be the first item in the array that passes the truth test - * (iteratee) or the value `undefined` if none passed. Invoked with - * (err, result). - */ -var detectSeries = doLimit(detectLimit, 1); - -function consoleFunc(name) { - return function (fn/*, ...args*/) { - var args = slice(arguments, 1); - args.push(function (err/*, ...args*/) { - var args = slice(arguments, 1); - if (typeof console === 'object') { - if (err) { - if (console.error) { - console.error(err); - } - } else if (console[name]) { - arrayEach(args, function (x) { - console[name](x); - }); - } - } - }); - wrapAsync(fn).apply(null, args); - }; -} - -/** - * Logs the result of an [`async` function]{@link AsyncFunction} to the - * `console` using `console.dir` to display the properties of the resulting object. - * Only works in Node.js or in browsers that support `console.dir` and - * `console.error` (such as FF and Chrome). - * If multiple arguments are returned from the async function, - * `console.dir` is called on each argument in order. - * - * @name dir - * @static - * @memberOf module:Utils - * @method - * @category Util - * @param {AsyncFunction} function - The function you want to eventually apply - * all arguments to. - * @param {...*} arguments... - Any number of arguments to apply to the function. - * @example - * - * // in a module - * var hello = function(name, callback) { - * setTimeout(function() { - * callback(null, {hello: name}); - * }, 1000); - * }; - * - * // in the node repl - * node> async.dir(hello, 'world'); - * {hello: 'world'} - */ -var dir = consoleFunc('dir'); - -/** - * The post-check version of [`during`]{@link module:ControlFlow.during}. To reflect the difference in - * the order of operations, the arguments `test` and `fn` are switched. - * - * Also a version of [`doWhilst`]{@link module:ControlFlow.doWhilst} with asynchronous `test` function. - * @name doDuring - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.during]{@link module:ControlFlow.during} - * @category Control Flow - * @param {AsyncFunction} fn - An async function which is called each time - * `test` passes. Invoked with (callback). - * @param {AsyncFunction} test - asynchronous truth test to perform before each - * execution of `fn`. Invoked with (...args, callback), where `...args` are the - * non-error args from the previous callback of `fn`. - * @param {Function} [callback] - A callback which is called after the test - * function has failed and repeated execution of `fn` has stopped. `callback` - * will be passed an error if one occurred, otherwise `null`. - */ -function doDuring(fn, test, callback) { - callback = onlyOnce(callback || noop); - var _fn = wrapAsync(fn); - var _test = wrapAsync(test); - - function next(err/*, ...args*/) { - if (err) return callback(err); - var args = slice(arguments, 1); - args.push(check); - _test.apply(this, args); - } - - function check(err, truth) { - if (err) return callback(err); - if (!truth) return callback(null); - _fn(next); - } - - check(null, true); - -} - -/** - * The post-check version of [`whilst`]{@link module:ControlFlow.whilst}. To reflect the difference in - * the order of operations, the arguments `test` and `iteratee` are switched. - * - * `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. - * - * @name doWhilst - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.whilst]{@link module:ControlFlow.whilst} - * @category Control Flow - * @param {AsyncFunction} iteratee - A function which is called each time `test` - * passes. Invoked with (callback). - * @param {Function} test - synchronous truth test to perform after each - * execution of `iteratee`. Invoked with any non-error callback results of - * `iteratee`. - * @param {Function} [callback] - A callback which is called after the test - * function has failed and repeated execution of `iteratee` has stopped. - * `callback` will be passed an error and any arguments passed to the final - * `iteratee`'s callback. Invoked with (err, [results]); - */ -function doWhilst(iteratee, test, callback) { - callback = onlyOnce(callback || noop); - var _iteratee = wrapAsync(iteratee); - var next = function(err/*, ...args*/) { - if (err) return callback(err); - var args = slice(arguments, 1); - if (test.apply(this, args)) return _iteratee(next); - callback.apply(null, [null].concat(args)); - }; - _iteratee(next); -} - -/** - * Like ['doWhilst']{@link module:ControlFlow.doWhilst}, except the `test` is inverted. Note the - * argument ordering differs from `until`. - * - * @name doUntil - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.doWhilst]{@link module:ControlFlow.doWhilst} - * @category Control Flow - * @param {AsyncFunction} iteratee - An async function which is called each time - * `test` fails. Invoked with (callback). - * @param {Function} test - synchronous truth test to perform after each - * execution of `iteratee`. Invoked with any non-error callback results of - * `iteratee`. - * @param {Function} [callback] - A callback which is called after the test - * function has passed and repeated execution of `iteratee` has stopped. `callback` - * will be passed an error and any arguments passed to the final `iteratee`'s - * callback. Invoked with (err, [results]); - */ -function doUntil(iteratee, test, callback) { - doWhilst(iteratee, function() { - return !test.apply(this, arguments); - }, callback); -} - -/** - * Like [`whilst`]{@link module:ControlFlow.whilst}, except the `test` is an asynchronous function that - * is passed a callback in the form of `function (err, truth)`. If error is - * passed to `test` or `fn`, the main callback is immediately called with the - * value of the error. - * - * @name during - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.whilst]{@link module:ControlFlow.whilst} - * @category Control Flow - * @param {AsyncFunction} test - asynchronous truth test to perform before each - * execution of `fn`. Invoked with (callback). - * @param {AsyncFunction} fn - An async function which is called each time - * `test` passes. Invoked with (callback). - * @param {Function} [callback] - A callback which is called after the test - * function has failed and repeated execution of `fn` has stopped. `callback` - * will be passed an error, if one occurred, otherwise `null`. - * @example - * - * var count = 0; - * - * async.during( - * function (callback) { - * return callback(null, count < 5); - * }, - * function (callback) { - * count++; - * setTimeout(callback, 1000); - * }, - * function (err) { - * // 5 seconds have passed - * } - * ); - */ -function during(test, fn, callback) { - callback = onlyOnce(callback || noop); - var _fn = wrapAsync(fn); - var _test = wrapAsync(test); - - function next(err) { - if (err) return callback(err); - _test(check); - } - - function check(err, truth) { - if (err) return callback(err); - if (!truth) return callback(null); - _fn(next); - } - - _test(check); -} - -function _withoutIndex(iteratee) { - return function (value, index, callback) { - return iteratee(value, callback); - }; -} - -/** - * Applies the function `iteratee` to each item in `coll`, in parallel. - * The `iteratee` is called with an item from the list, and a callback for when - * it has finished. If the `iteratee` passes an error to its `callback`, the - * main `callback` (for the `each` function) is immediately called with the - * error. - * - * Note, that since this function applies `iteratee` to each item in parallel, - * there is no guarantee that the iteratee functions will complete in order. - * - * @name each - * @static - * @memberOf module:Collections - * @method - * @alias forEach - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async function to apply to - * each item in `coll`. Invoked with (item, callback). - * The array index is not passed to the iteratee. - * If you need the index, use `eachOf`. - * @param {Function} [callback] - A callback which is called when all - * `iteratee` functions have finished, or an error occurs. Invoked with (err). - * @example - * - * // assuming openFiles is an array of file names and saveFile is a function - * // to save the modified contents of that file: - * - * async.each(openFiles, saveFile, function(err){ - * // if any of the saves produced an error, err would equal that error - * }); - * - * // assuming openFiles is an array of file names - * async.each(openFiles, function(file, callback) { - * - * // Perform operation on file here. - * console.log('Processing file ' + file); - * - * if( file.length > 32 ) { - * console.log('This file name is too long'); - * callback('File name too long'); - * } else { - * // Do work to process file here - * console.log('File processed'); - * callback(); - * } - * }, function(err) { - * // if any of the file processing produced an error, err would equal that error - * if( err ) { - * // One of the iterations produced an error. - * // All processing will now stop. - * console.log('A file failed to process'); - * } else { - * console.log('All files have been processed successfully'); - * } - * }); - */ -function eachLimit(coll, iteratee, callback) { - eachOf(coll, _withoutIndex(wrapAsync(iteratee)), callback); -} - -/** - * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time. - * - * @name eachLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.each]{@link module:Collections.each} - * @alias forEachLimit - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The array index is not passed to the iteratee. - * If you need the index, use `eachOfLimit`. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called when all - * `iteratee` functions have finished, or an error occurs. Invoked with (err). - */ -function eachLimit$1(coll, limit, iteratee, callback) { - _eachOfLimit(limit)(coll, _withoutIndex(wrapAsync(iteratee)), callback); -} - -/** - * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time. - * - * @name eachSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.each]{@link module:Collections.each} - * @alias forEachSeries - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async function to apply to each - * item in `coll`. - * The array index is not passed to the iteratee. - * If you need the index, use `eachOfSeries`. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called when all - * `iteratee` functions have finished, or an error occurs. Invoked with (err). - */ -var eachSeries = doLimit(eachLimit$1, 1); - -/** - * Wrap an async function and ensure it calls its callback on a later tick of - * the event loop. If the function already calls its callback on a next tick, - * no extra deferral is added. This is useful for preventing stack overflows - * (`RangeError: Maximum call stack size exceeded`) and generally keeping - * [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) - * contained. ES2017 `async` functions are returned as-is -- they are immune - * to Zalgo's corrupting influences, as they always resolve on a later tick. - * - * @name ensureAsync - * @static - * @memberOf module:Utils - * @method - * @category Util - * @param {AsyncFunction} fn - an async function, one that expects a node-style - * callback as its last argument. - * @returns {AsyncFunction} Returns a wrapped function with the exact same call - * signature as the function passed in. - * @example - * - * function sometimesAsync(arg, callback) { - * if (cache[arg]) { - * return callback(null, cache[arg]); // this would be synchronous!! - * } else { - * doSomeIO(arg, callback); // this IO would be asynchronous - * } - * } - * - * // this has a risk of stack overflows if many results are cached in a row - * async.mapSeries(args, sometimesAsync, done); - * - * // this will defer sometimesAsync's callback if necessary, - * // preventing stack overflows - * async.mapSeries(args, async.ensureAsync(sometimesAsync), done); - */ -function ensureAsync(fn) { - if (isAsync(fn)) return fn; - return initialParams(function (args, callback) { - var sync = true; - args.push(function () { - var innerArgs = arguments; - if (sync) { - setImmediate$1(function () { - callback.apply(null, innerArgs); - }); - } else { - callback.apply(null, innerArgs); - } - }); - fn.apply(this, args); - sync = false; - }); -} - -function notId(v) { - return !v; -} - -/** - * Returns `true` if every element in `coll` satisfies an async test. If any - * iteratee call returns `false`, the main `callback` is immediately called. - * - * @name every - * @static - * @memberOf module:Collections - * @method - * @alias all - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collection in parallel. - * The iteratee must complete with a boolean result value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result will be either `true` or `false` - * depending on the values of the async tests. Invoked with (err, result). - * @example - * - * async.every(['file1','file2','file3'], function(filePath, callback) { - * fs.access(filePath, function(err) { - * callback(null, !err) - * }); - * }, function(err, result) { - * // if result is true then every file exists - * }); - */ -var every = doParallel(_createTester(notId, notId)); - -/** - * The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time. - * - * @name everyLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.every]{@link module:Collections.every} - * @alias allLimit - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collection in parallel. - * The iteratee must complete with a boolean result value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result will be either `true` or `false` - * depending on the values of the async tests. Invoked with (err, result). - */ -var everyLimit = doParallelLimit(_createTester(notId, notId)); - -/** - * The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time. - * - * @name everySeries - * @static - * @memberOf module:Collections - * @method - * @see [async.every]{@link module:Collections.every} - * @alias allSeries - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collection in series. - * The iteratee must complete with a boolean result value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result will be either `true` or `false` - * depending on the values of the async tests. Invoked with (err, result). - */ -var everySeries = doLimit(everyLimit, 1); - -/** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; -} - -function filterArray(eachfn, arr, iteratee, callback) { - var truthValues = new Array(arr.length); - eachfn(arr, function (x, index, callback) { - iteratee(x, function (err, v) { - truthValues[index] = !!v; - callback(err); - }); - }, function (err) { - if (err) return callback(err); - var results = []; - for (var i = 0; i < arr.length; i++) { - if (truthValues[i]) results.push(arr[i]); - } - callback(null, results); - }); -} - -function filterGeneric(eachfn, coll, iteratee, callback) { - var results = []; - eachfn(coll, function (x, index, callback) { - iteratee(x, function (err, v) { - if (err) { - callback(err); - } else { - if (v) { - results.push({index: index, value: x}); - } - callback(); - } - }); - }, function (err) { - if (err) { - callback(err); - } else { - callback(null, arrayMap(results.sort(function (a, b) { - return a.index - b.index; - }), baseProperty('value'))); - } - }); -} - -function _filter(eachfn, coll, iteratee, callback) { - var filter = isArrayLike(coll) ? filterArray : filterGeneric; - filter(eachfn, coll, wrapAsync(iteratee), callback || noop); -} - -/** - * Returns a new array of all the values in `coll` which pass an async truth - * test. This operation is performed in parallel, but the results array will be - * in the same order as the original. - * - * @name filter - * @static - * @memberOf module:Collections - * @method - * @alias select - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A truth test to apply to each item in `coll`. - * The `iteratee` is passed a `callback(err, truthValue)`, which must be called - * with a boolean argument once it has completed. Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Invoked with (err, results). - * @example - * - * async.filter(['file1','file2','file3'], function(filePath, callback) { - * fs.access(filePath, function(err) { - * callback(null, !err) - * }); - * }, function(err, results) { - * // results now equals an array of the existing files - * }); - */ -var filter = doParallel(_filter); - -/** - * The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a - * time. - * - * @name filterLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.filter]{@link module:Collections.filter} - * @alias selectLimit - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {Function} iteratee - A truth test to apply to each item in `coll`. - * The `iteratee` is passed a `callback(err, truthValue)`, which must be called - * with a boolean argument once it has completed. Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Invoked with (err, results). - */ -var filterLimit = doParallelLimit(_filter); - -/** - * The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time. - * - * @name filterSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.filter]{@link module:Collections.filter} - * @alias selectSeries - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A truth test to apply to each item in `coll`. - * The `iteratee` is passed a `callback(err, truthValue)`, which must be called - * with a boolean argument once it has completed. Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Invoked with (err, results) - */ -var filterSeries = doLimit(filterLimit, 1); - -/** - * Calls the asynchronous function `fn` with a callback parameter that allows it - * to call itself again, in series, indefinitely. - - * If an error is passed to the callback then `errback` is called with the - * error, and execution stops, otherwise it will never be called. - * - * @name forever - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {AsyncFunction} fn - an async function to call repeatedly. - * Invoked with (next). - * @param {Function} [errback] - when `fn` passes an error to it's callback, - * this function will be called, and execution stops. Invoked with (err). - * @example - * - * async.forever( - * function(next) { - * // next is suitable for passing to things that need a callback(err [, whatever]); - * // it will result in this function being called again. - * }, - * function(err) { - * // if next is called with a value in its first parameter, it will appear - * // in here as 'err', and execution will stop. - * } - * ); - */ -function forever(fn, errback) { - var done = onlyOnce(errback || noop); - var task = wrapAsync(ensureAsync(fn)); - - function next(err) { - if (err) return done(err); - task(next); - } - next(); -} - -/** - * The same as [`groupBy`]{@link module:Collections.groupBy} but runs a maximum of `limit` async operations at a time. - * - * @name groupByLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.groupBy]{@link module:Collections.groupBy} - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The iteratee should complete with a `key` to group the value under. - * Invoked with (value, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. Result is an `Object` whoses - * properties are arrays of values which returned the corresponding key. - */ -var groupByLimit = function(coll, limit, iteratee, callback) { - callback = callback || noop; - var _iteratee = wrapAsync(iteratee); - mapLimit(coll, limit, function(val, callback) { - _iteratee(val, function(err, key) { - if (err) return callback(err); - return callback(null, {key: key, val: val}); - }); - }, function(err, mapResults) { - var result = {}; - // from MDN, handle object having an `hasOwnProperty` prop - var hasOwnProperty = Object.prototype.hasOwnProperty; - - for (var i = 0; i < mapResults.length; i++) { - if (mapResults[i]) { - var key = mapResults[i].key; - var val = mapResults[i].val; - - if (hasOwnProperty.call(result, key)) { - result[key].push(val); - } else { - result[key] = [val]; - } - } - } - - return callback(err, result); - }); -}; - -/** - * Returns a new object, where each value corresponds to an array of items, from - * `coll`, that returned the corresponding key. That is, the keys of the object - * correspond to the values passed to the `iteratee` callback. - * - * Note: Since this function applies the `iteratee` to each item in parallel, - * there is no guarantee that the `iteratee` functions will complete in order. - * However, the values for each key in the `result` will be in the same order as - * the original `coll`. For Objects, the values will roughly be in the order of - * the original Objects' keys (but this can vary across JavaScript engines). - * - * @name groupBy - * @static - * @memberOf module:Collections - * @method - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The iteratee should complete with a `key` to group the value under. - * Invoked with (value, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. Result is an `Object` whoses - * properties are arrays of values which returned the corresponding key. - * @example - * - * async.groupBy(['userId1', 'userId2', 'userId3'], function(userId, callback) { - * db.findById(userId, function(err, user) { - * if (err) return callback(err); - * return callback(null, user.age); - * }); - * }, function(err, result) { - * // result is object containing the userIds grouped by age - * // e.g. { 30: ['userId1', 'userId3'], 42: ['userId2']}; - * }); - */ -var groupBy = doLimit(groupByLimit, Infinity); - -/** - * The same as [`groupBy`]{@link module:Collections.groupBy} but runs only a single async operation at a time. - * - * @name groupBySeries - * @static - * @memberOf module:Collections - * @method - * @see [async.groupBy]{@link module:Collections.groupBy} - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The iteratee should complete with a `key` to group the value under. - * Invoked with (value, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. Result is an `Object` whoses - * properties are arrays of values which returned the corresponding key. - */ -var groupBySeries = doLimit(groupByLimit, 1); - -/** - * Logs the result of an `async` function to the `console`. Only works in - * Node.js or in browsers that support `console.log` and `console.error` (such - * as FF and Chrome). If multiple arguments are returned from the async - * function, `console.log` is called on each argument in order. - * - * @name log - * @static - * @memberOf module:Utils - * @method - * @category Util - * @param {AsyncFunction} function - The function you want to eventually apply - * all arguments to. - * @param {...*} arguments... - Any number of arguments to apply to the function. - * @example - * - * // in a module - * var hello = function(name, callback) { - * setTimeout(function() { - * callback(null, 'hello ' + name); - * }, 1000); - * }; - * - * // in the node repl - * node> async.log(hello, 'world'); - * 'hello world' - */ -var log = consoleFunc('log'); - -/** - * The same as [`mapValues`]{@link module:Collections.mapValues} but runs a maximum of `limit` async operations at a - * time. - * - * @name mapValuesLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.mapValues]{@link module:Collections.mapValues} - * @category Collection - * @param {Object} obj - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - A function to apply to each value and key - * in `coll`. - * The iteratee should complete with the transformed value as its result. - * Invoked with (value, key, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. `result` is a new object consisting - * of each key from `obj`, with each transformed value on the right-hand side. - * Invoked with (err, result). - */ -function mapValuesLimit(obj, limit, iteratee, callback) { - callback = once(callback || noop); - var newObj = {}; - var _iteratee = wrapAsync(iteratee); - eachOfLimit(obj, limit, function(val, key, next) { - _iteratee(val, key, function (err, result) { - if (err) return next(err); - newObj[key] = result; - next(); - }); - }, function (err) { - callback(err, newObj); - }); -} - -/** - * A relative of [`map`]{@link module:Collections.map}, designed for use with objects. - * - * Produces a new Object by mapping each value of `obj` through the `iteratee` - * function. The `iteratee` is called each `value` and `key` from `obj` and a - * callback for when it has finished processing. Each of these callbacks takes - * two arguments: an `error`, and the transformed item from `obj`. If `iteratee` - * passes an error to its callback, the main `callback` (for the `mapValues` - * function) is immediately called with the error. - * - * Note, the order of the keys in the result is not guaranteed. The keys will - * be roughly in the order they complete, (but this is very engine-specific) - * - * @name mapValues - * @static - * @memberOf module:Collections - * @method - * @category Collection - * @param {Object} obj - A collection to iterate over. - * @param {AsyncFunction} iteratee - A function to apply to each value and key - * in `coll`. - * The iteratee should complete with the transformed value as its result. - * Invoked with (value, key, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. `result` is a new object consisting - * of each key from `obj`, with each transformed value on the right-hand side. - * Invoked with (err, result). - * @example - * - * async.mapValues({ - * f1: 'file1', - * f2: 'file2', - * f3: 'file3' - * }, function (file, key, callback) { - * fs.stat(file, callback); - * }, function(err, result) { - * // result is now a map of stats for each file, e.g. - * // { - * // f1: [stats for file1], - * // f2: [stats for file2], - * // f3: [stats for file3] - * // } - * }); - */ - -var mapValues = doLimit(mapValuesLimit, Infinity); - -/** - * The same as [`mapValues`]{@link module:Collections.mapValues} but runs only a single async operation at a time. - * - * @name mapValuesSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.mapValues]{@link module:Collections.mapValues} - * @category Collection - * @param {Object} obj - A collection to iterate over. - * @param {AsyncFunction} iteratee - A function to apply to each value and key - * in `coll`. - * The iteratee should complete with the transformed value as its result. - * Invoked with (value, key, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. `result` is a new object consisting - * of each key from `obj`, with each transformed value on the right-hand side. - * Invoked with (err, result). - */ -var mapValuesSeries = doLimit(mapValuesLimit, 1); - -function has(obj, key) { - return key in obj; -} - -/** - * Caches the results of an async function. When creating a hash to store - * function results against, the callback is omitted from the hash and an - * optional hash function can be used. - * - * If no hash function is specified, the first argument is used as a hash key, - * which may work reasonably if it is a string or a data type that converts to a - * distinct string. Note that objects and arrays will not behave reasonably. - * Neither will cases where the other arguments are significant. In such cases, - * specify your own hash function. - * - * The cache of results is exposed as the `memo` property of the function - * returned by `memoize`. - * - * @name memoize - * @static - * @memberOf module:Utils - * @method - * @category Util - * @param {AsyncFunction} fn - The async function to proxy and cache results from. - * @param {Function} hasher - An optional function for generating a custom hash - * for storing results. It has all the arguments applied to it apart from the - * callback, and must be synchronous. - * @returns {AsyncFunction} a memoized version of `fn` - * @example - * - * var slow_fn = function(name, callback) { - * // do something - * callback(null, result); - * }; - * var fn = async.memoize(slow_fn); - * - * // fn can now be used as if it were slow_fn - * fn('some name', function() { - * // callback - * }); - */ -function memoize(fn, hasher) { - var memo = Object.create(null); - var queues = Object.create(null); - hasher = hasher || identity; - var _fn = wrapAsync(fn); - var memoized = initialParams(function memoized(args, callback) { - var key = hasher.apply(null, args); - if (has(memo, key)) { - setImmediate$1(function() { - callback.apply(null, memo[key]); - }); - } else if (has(queues, key)) { - queues[key].push(callback); - } else { - queues[key] = [callback]; - _fn.apply(null, args.concat(function(/*args*/) { - var args = slice(arguments); - memo[key] = args; - var q = queues[key]; - delete queues[key]; - for (var i = 0, l = q.length; i < l; i++) { - q[i].apply(null, args); - } - })); - } - }); - memoized.memo = memo; - memoized.unmemoized = fn; - return memoized; -} - -/** - * Calls `callback` on a later loop around the event loop. In Node.js this just - * calls `process.nextTick`. In the browser it will use `setImmediate` if - * available, otherwise `setTimeout(callback, 0)`, which means other higher - * priority events may precede the execution of `callback`. - * - * This is used internally for browser-compatibility purposes. - * - * @name nextTick - * @static - * @memberOf module:Utils - * @method - * @see [async.setImmediate]{@link module:Utils.setImmediate} - * @category Util - * @param {Function} callback - The function to call on a later loop around - * the event loop. Invoked with (args...). - * @param {...*} args... - any number of additional arguments to pass to the - * callback on the next tick. - * @example - * - * var call_order = []; - * async.nextTick(function() { - * call_order.push('two'); - * // call_order now equals ['one','two'] - * }); - * call_order.push('one'); - * - * async.setImmediate(function (a, b, c) { - * // a, b, and c equal 1, 2, and 3 - * }, 1, 2, 3); - */ -var _defer$1; - -if (hasNextTick) { - _defer$1 = process.nextTick; -} else if (hasSetImmediate) { - _defer$1 = setImmediate; -} else { - _defer$1 = fallback; -} - -var nextTick = wrap(_defer$1); - -function _parallel(eachfn, tasks, callback) { - callback = callback || noop; - var results = isArrayLike(tasks) ? [] : {}; - - eachfn(tasks, function (task, key, callback) { - wrapAsync(task)(function (err, result) { - if (arguments.length > 2) { - result = slice(arguments, 1); - } - results[key] = result; - callback(err); - }); - }, function (err) { - callback(err, results); - }); -} - -/** - * Run the `tasks` collection of functions in parallel, without waiting until - * the previous function has completed. If any of the functions pass an error to - * its callback, the main `callback` is immediately called with the value of the - * error. Once the `tasks` have completed, the results are passed to the final - * `callback` as an array. - * - * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about - * parallel execution of code. If your tasks do not use any timers or perform - * any I/O, they will actually be executed in series. Any synchronous setup - * sections for each task will happen one after the other. JavaScript remains - * single-threaded. - * - * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the - * execution of other tasks when a task fails. - * - * It is also possible to use an object instead of an array. Each property will - * be run as a function and the results will be passed to the final `callback` - * as an object instead of an array. This can be a more readable way of handling - * results from {@link async.parallel}. - * - * @name parallel - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {Array|Iterable|Object} tasks - A collection of - * [async functions]{@link AsyncFunction} to run. - * Each async function can complete with any number of optional `result` values. - * @param {Function} [callback] - An optional callback to run once all the - * functions have completed successfully. This function gets a results array - * (or object) containing all the result arguments passed to the task callbacks. - * Invoked with (err, results). - * - * @example - * async.parallel([ - * function(callback) { - * setTimeout(function() { - * callback(null, 'one'); - * }, 200); - * }, - * function(callback) { - * setTimeout(function() { - * callback(null, 'two'); - * }, 100); - * } - * ], - * // optional callback - * function(err, results) { - * // the results array will equal ['one','two'] even though - * // the second function had a shorter timeout. - * }); - * - * // an example using an object instead of an array - * async.parallel({ - * one: function(callback) { - * setTimeout(function() { - * callback(null, 1); - * }, 200); - * }, - * two: function(callback) { - * setTimeout(function() { - * callback(null, 2); - * }, 100); - * } - * }, function(err, results) { - * // results is now equals to: {one: 1, two: 2} - * }); - */ -function parallelLimit(tasks, callback) { - _parallel(eachOf, tasks, callback); -} - -/** - * The same as [`parallel`]{@link module:ControlFlow.parallel} but runs a maximum of `limit` async operations at a - * time. - * - * @name parallelLimit - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.parallel]{@link module:ControlFlow.parallel} - * @category Control Flow - * @param {Array|Iterable|Object} tasks - A collection of - * [async functions]{@link AsyncFunction} to run. - * Each async function can complete with any number of optional `result` values. - * @param {number} limit - The maximum number of async operations at a time. - * @param {Function} [callback] - An optional callback to run once all the - * functions have completed successfully. This function gets a results array - * (or object) containing all the result arguments passed to the task callbacks. - * Invoked with (err, results). - */ -function parallelLimit$1(tasks, limit, callback) { - _parallel(_eachOfLimit(limit), tasks, callback); -} - -/** - * A queue of tasks for the worker function to complete. - * @typedef {Object} QueueObject - * @memberOf module:ControlFlow - * @property {Function} length - a function returning the number of items - * waiting to be processed. Invoke with `queue.length()`. - * @property {boolean} started - a boolean indicating whether or not any - * items have been pushed and processed by the queue. - * @property {Function} running - a function returning the number of items - * currently being processed. Invoke with `queue.running()`. - * @property {Function} workersList - a function returning the array of items - * currently being processed. Invoke with `queue.workersList()`. - * @property {Function} idle - a function returning false if there are items - * waiting or being processed, or true if not. Invoke with `queue.idle()`. - * @property {number} concurrency - an integer for determining how many `worker` - * functions should be run in parallel. This property can be changed after a - * `queue` is created to alter the concurrency on-the-fly. - * @property {Function} push - add a new task to the `queue`. Calls `callback` - * once the `worker` has finished processing the task. Instead of a single task, - * a `tasks` array can be submitted. The respective callback is used for every - * task in the list. Invoke with `queue.push(task, [callback])`, - * @property {Function} unshift - add a new task to the front of the `queue`. - * Invoke with `queue.unshift(task, [callback])`. - * @property {Function} remove - remove items from the queue that match a test - * function. The test function will be passed an object with a `data` property, - * and a `priority` property, if this is a - * [priorityQueue]{@link module:ControlFlow.priorityQueue} object. - * Invoked with `queue.remove(testFn)`, where `testFn` is of the form - * `function ({data, priority}) {}` and returns a Boolean. - * @property {Function} saturated - a callback that is called when the number of - * running workers hits the `concurrency` limit, and further tasks will be - * queued. - * @property {Function} unsaturated - a callback that is called when the number - * of running workers is less than the `concurrency` & `buffer` limits, and - * further tasks will not be queued. - * @property {number} buffer - A minimum threshold buffer in order to say that - * the `queue` is `unsaturated`. - * @property {Function} empty - a callback that is called when the last item - * from the `queue` is given to a `worker`. - * @property {Function} drain - a callback that is called when the last item - * from the `queue` has returned from the `worker`. - * @property {Function} error - a callback that is called when a task errors. - * Has the signature `function(error, task)`. - * @property {boolean} paused - a boolean for determining whether the queue is - * in a paused state. - * @property {Function} pause - a function that pauses the processing of tasks - * until `resume()` is called. Invoke with `queue.pause()`. - * @property {Function} resume - a function that resumes the processing of - * queued tasks when the queue is paused. Invoke with `queue.resume()`. - * @property {Function} kill - a function that removes the `drain` callback and - * empties remaining tasks from the queue forcing it to go idle. No more tasks - * should be pushed to the queue after calling this function. Invoke with `queue.kill()`. - */ - -/** - * Creates a `queue` object with the specified `concurrency`. Tasks added to the - * `queue` are processed in parallel (up to the `concurrency` limit). If all - * `worker`s are in progress, the task is queued until one becomes available. - * Once a `worker` completes a `task`, that `task`'s callback is called. - * - * @name queue - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {AsyncFunction} worker - An async function for processing a queued task. - * If you want to handle errors from an individual task, pass a callback to - * `q.push()`. Invoked with (task, callback). - * @param {number} [concurrency=1] - An `integer` for determining how many - * `worker` functions should be run in parallel. If omitted, the concurrency - * defaults to `1`. If the concurrency is `0`, an error is thrown. - * @returns {module:ControlFlow.QueueObject} A queue object to manage the tasks. Callbacks can - * attached as certain properties to listen for specific events during the - * lifecycle of the queue. - * @example - * - * // create a queue object with concurrency 2 - * var q = async.queue(function(task, callback) { - * console.log('hello ' + task.name); - * callback(); - * }, 2); - * - * // assign a callback - * q.drain = function() { - * console.log('all items have been processed'); - * }; - * - * // add some items to the queue - * q.push({name: 'foo'}, function(err) { - * console.log('finished processing foo'); - * }); - * q.push({name: 'bar'}, function (err) { - * console.log('finished processing bar'); - * }); - * - * // add some items to the queue (batch-wise) - * q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function(err) { - * console.log('finished processing item'); - * }); - * - * // add some items to the front of the queue - * q.unshift({name: 'bar'}, function (err) { - * console.log('finished processing bar'); - * }); - */ -var queue$1 = function (worker, concurrency) { - var _worker = wrapAsync(worker); - return queue(function (items, cb) { - _worker(items[0], cb); - }, concurrency, 1); -}; - -/** - * The same as [async.queue]{@link module:ControlFlow.queue} only tasks are assigned a priority and - * completed in ascending priority order. - * - * @name priorityQueue - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.queue]{@link module:ControlFlow.queue} - * @category Control Flow - * @param {AsyncFunction} worker - An async function for processing a queued task. - * If you want to handle errors from an individual task, pass a callback to - * `q.push()`. - * Invoked with (task, callback). - * @param {number} concurrency - An `integer` for determining how many `worker` - * functions should be run in parallel. If omitted, the concurrency defaults to - * `1`. If the concurrency is `0`, an error is thrown. - * @returns {module:ControlFlow.QueueObject} A priorityQueue object to manage the tasks. There are two - * differences between `queue` and `priorityQueue` objects: - * * `push(task, priority, [callback])` - `priority` should be a number. If an - * array of `tasks` is given, all tasks will be assigned the same priority. - * * The `unshift` method was removed. - */ -var priorityQueue = function(worker, concurrency) { - // Start with a normal queue - var q = queue$1(worker, concurrency); - - // Override push to accept second parameter representing priority - q.push = function(data, priority, callback) { - if (callback == null) callback = noop; - if (typeof callback !== 'function') { - throw new Error('task callback must be a function'); - } - q.started = true; - if (!isArray(data)) { - data = [data]; - } - if (data.length === 0) { - // call drain immediately if there are no tasks - return setImmediate$1(function() { - q.drain(); - }); - } - - priority = priority || 0; - var nextNode = q._tasks.head; - while (nextNode && priority >= nextNode.priority) { - nextNode = nextNode.next; - } - - for (var i = 0, l = data.length; i < l; i++) { - var item = { - data: data[i], - priority: priority, - callback: callback - }; - - if (nextNode) { - q._tasks.insertBefore(nextNode, item); - } else { - q._tasks.push(item); - } - } - setImmediate$1(q.process); - }; - - // Remove unshift function - delete q.unshift; - - return q; -}; - -/** - * Runs the `tasks` array of functions in parallel, without waiting until the - * previous function has completed. Once any of the `tasks` complete or pass an - * error to its callback, the main `callback` is immediately called. It's - * equivalent to `Promise.race()`. - * - * @name race - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {Array} tasks - An array containing [async functions]{@link AsyncFunction} - * to run. Each function can complete with an optional `result` value. - * @param {Function} callback - A callback to run once any of the functions have - * completed. This function gets an error or result from the first function that - * completed. Invoked with (err, result). - * @returns undefined - * @example - * - * async.race([ - * function(callback) { - * setTimeout(function() { - * callback(null, 'one'); - * }, 200); - * }, - * function(callback) { - * setTimeout(function() { - * callback(null, 'two'); - * }, 100); - * } - * ], - * // main callback - * function(err, result) { - * // the result will be equal to 'two' as it finishes earlier - * }); - */ -function race(tasks, callback) { - callback = once(callback || noop); - if (!isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions')); - if (!tasks.length) return callback(); - for (var i = 0, l = tasks.length; i < l; i++) { - wrapAsync(tasks[i])(callback); - } -} - -/** - * Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order. - * - * @name reduceRight - * @static - * @memberOf module:Collections - * @method - * @see [async.reduce]{@link module:Collections.reduce} - * @alias foldr - * @category Collection - * @param {Array} array - A collection to iterate over. - * @param {*} memo - The initial state of the reduction. - * @param {AsyncFunction} iteratee - A function applied to each item in the - * array to produce the next step in the reduction. - * The `iteratee` should complete with the next state of the reduction. - * If the iteratee complete with an error, the reduction is stopped and the - * main `callback` is immediately called with the error. - * Invoked with (memo, item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result is the reduced value. Invoked with - * (err, result). - */ -function reduceRight (array, memo, iteratee, callback) { - var reversed = slice(array).reverse(); - reduce(reversed, memo, iteratee, callback); -} - -/** - * Wraps the async function in another function that always completes with a - * result object, even when it errors. - * - * The result object has either the property `error` or `value`. - * - * @name reflect - * @static - * @memberOf module:Utils - * @method - * @category Util - * @param {AsyncFunction} fn - The async function you want to wrap - * @returns {Function} - A function that always passes null to it's callback as - * the error. The second argument to the callback will be an `object` with - * either an `error` or a `value` property. - * @example - * - * async.parallel([ - * async.reflect(function(callback) { - * // do some stuff ... - * callback(null, 'one'); - * }), - * async.reflect(function(callback) { - * // do some more stuff but error ... - * callback('bad stuff happened'); - * }), - * async.reflect(function(callback) { - * // do some more stuff ... - * callback(null, 'two'); - * }) - * ], - * // optional callback - * function(err, results) { - * // values - * // results[0].value = 'one' - * // results[1].error = 'bad stuff happened' - * // results[2].value = 'two' - * }); - */ -function reflect(fn) { - var _fn = wrapAsync(fn); - return initialParams(function reflectOn(args, reflectCallback) { - args.push(function callback(error, cbArg) { - if (error) { - reflectCallback(null, { error: error }); - } else { - var value; - if (arguments.length <= 2) { - value = cbArg; - } else { - value = slice(arguments, 1); - } - reflectCallback(null, { value: value }); - } - }); - - return _fn.apply(this, args); - }); -} - -/** - * A helper function that wraps an array or an object of functions with `reflect`. - * - * @name reflectAll - * @static - * @memberOf module:Utils - * @method - * @see [async.reflect]{@link module:Utils.reflect} - * @category Util - * @param {Array|Object|Iterable} tasks - The collection of - * [async functions]{@link AsyncFunction} to wrap in `async.reflect`. - * @returns {Array} Returns an array of async functions, each wrapped in - * `async.reflect` - * @example - * - * let tasks = [ - * function(callback) { - * setTimeout(function() { - * callback(null, 'one'); - * }, 200); - * }, - * function(callback) { - * // do some more stuff but error ... - * callback(new Error('bad stuff happened')); - * }, - * function(callback) { - * setTimeout(function() { - * callback(null, 'two'); - * }, 100); - * } - * ]; - * - * async.parallel(async.reflectAll(tasks), - * // optional callback - * function(err, results) { - * // values - * // results[0].value = 'one' - * // results[1].error = Error('bad stuff happened') - * // results[2].value = 'two' - * }); - * - * // an example using an object instead of an array - * let tasks = { - * one: function(callback) { - * setTimeout(function() { - * callback(null, 'one'); - * }, 200); - * }, - * two: function(callback) { - * callback('two'); - * }, - * three: function(callback) { - * setTimeout(function() { - * callback(null, 'three'); - * }, 100); - * } - * }; - * - * async.parallel(async.reflectAll(tasks), - * // optional callback - * function(err, results) { - * // values - * // results.one.value = 'one' - * // results.two.error = 'two' - * // results.three.value = 'three' - * }); - */ -function reflectAll(tasks) { - var results; - if (isArray(tasks)) { - results = arrayMap(tasks, reflect); - } else { - results = {}; - baseForOwn(tasks, function(task, key) { - results[key] = reflect.call(this, task); - }); - } - return results; -} - -function reject$1(eachfn, arr, iteratee, callback) { - _filter(eachfn, arr, function(value, cb) { - iteratee(value, function(err, v) { - cb(err, !v); - }); - }, callback); -} - -/** - * The opposite of [`filter`]{@link module:Collections.filter}. Removes values that pass an `async` truth test. - * - * @name reject - * @static - * @memberOf module:Collections - * @method - * @see [async.filter]{@link module:Collections.filter} - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - An async truth test to apply to each item in - * `coll`. - * The should complete with a boolean value as its `result`. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Invoked with (err, results). - * @example - * - * async.reject(['file1','file2','file3'], function(filePath, callback) { - * fs.access(filePath, function(err) { - * callback(null, !err) - * }); - * }, function(err, results) { - * // results now equals an array of missing files - * createFiles(results); - * }); - */ -var reject = doParallel(reject$1); - -/** - * The same as [`reject`]{@link module:Collections.reject} but runs a maximum of `limit` async operations at a - * time. - * - * @name rejectLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.reject]{@link module:Collections.reject} - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {Function} iteratee - An async truth test to apply to each item in - * `coll`. - * The should complete with a boolean value as its `result`. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Invoked with (err, results). - */ -var rejectLimit = doParallelLimit(reject$1); - -/** - * The same as [`reject`]{@link module:Collections.reject} but runs only a single async operation at a time. - * - * @name rejectSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.reject]{@link module:Collections.reject} - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - An async truth test to apply to each item in - * `coll`. - * The should complete with a boolean value as its `result`. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Invoked with (err, results). - */ -var rejectSeries = doLimit(rejectLimit, 1); - -/** - * Creates a function that returns `value`. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {*} value The value to return from the new function. - * @returns {Function} Returns the new constant function. - * @example - * - * var objects = _.times(2, _.constant({ 'a': 1 })); - * - * console.log(objects); - * // => [{ 'a': 1 }, { 'a': 1 }] - * - * console.log(objects[0] === objects[1]); - * // => true - */ -function constant$1(value) { - return function() { - return value; - }; -} - -/** - * Attempts to get a successful response from `task` no more than `times` times - * before returning an error. If the task is successful, the `callback` will be - * passed the result of the successful task. If all attempts fail, the callback - * will be passed the error and result (if any) of the final attempt. - * - * @name retry - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @see [async.retryable]{@link module:ControlFlow.retryable} - * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - Can be either an - * object with `times` and `interval` or a number. - * * `times` - The number of attempts to make before giving up. The default - * is `5`. - * * `interval` - The time to wait between retries, in milliseconds. The - * default is `0`. The interval may also be specified as a function of the - * retry count (see example). - * * `errorFilter` - An optional synchronous function that is invoked on - * erroneous result. If it returns `true` the retry attempts will continue; - * if the function returns `false` the retry flow is aborted with the current - * attempt's error and result being returned to the final callback. - * Invoked with (err). - * * If `opts` is a number, the number specifies the number of times to retry, - * with the default interval of `0`. - * @param {AsyncFunction} task - An async function to retry. - * Invoked with (callback). - * @param {Function} [callback] - An optional callback which is called when the - * task has succeeded, or after the final failed attempt. It receives the `err` - * and `result` arguments of the last attempt at completing the `task`. Invoked - * with (err, results). - * - * @example - * - * // The `retry` function can be used as a stand-alone control flow by passing - * // a callback, as shown below: - * - * // try calling apiMethod 3 times - * async.retry(3, apiMethod, function(err, result) { - * // do something with the result - * }); - * - * // try calling apiMethod 3 times, waiting 200 ms between each retry - * async.retry({times: 3, interval: 200}, apiMethod, function(err, result) { - * // do something with the result - * }); - * - * // try calling apiMethod 10 times with exponential backoff - * // (i.e. intervals of 100, 200, 400, 800, 1600, ... milliseconds) - * async.retry({ - * times: 10, - * interval: function(retryCount) { - * return 50 * Math.pow(2, retryCount); - * } - * }, apiMethod, function(err, result) { - * // do something with the result - * }); - * - * // try calling apiMethod the default 5 times no delay between each retry - * async.retry(apiMethod, function(err, result) { - * // do something with the result - * }); - * - * // try calling apiMethod only when error condition satisfies, all other - * // errors will abort the retry control flow and return to final callback - * async.retry({ - * errorFilter: function(err) { - * return err.message === 'Temporary error'; // only retry on a specific error - * } - * }, apiMethod, function(err, result) { - * // do something with the result - * }); - * - * // to retry individual methods that are not as reliable within other - * // control flow functions, use the `retryable` wrapper: - * async.auto({ - * users: api.getUsers.bind(api), - * payments: async.retryable(3, api.getPayments.bind(api)) - * }, function(err, results) { - * // do something with the results - * }); - * - */ -function retry(opts, task, callback) { - var DEFAULT_TIMES = 5; - var DEFAULT_INTERVAL = 0; - - var options = { - times: DEFAULT_TIMES, - intervalFunc: constant$1(DEFAULT_INTERVAL) - }; - - function parseTimes(acc, t) { - if (typeof t === 'object') { - acc.times = +t.times || DEFAULT_TIMES; - - acc.intervalFunc = typeof t.interval === 'function' ? - t.interval : - constant$1(+t.interval || DEFAULT_INTERVAL); - - acc.errorFilter = t.errorFilter; - } else if (typeof t === 'number' || typeof t === 'string') { - acc.times = +t || DEFAULT_TIMES; - } else { - throw new Error("Invalid arguments for async.retry"); - } - } - - if (arguments.length < 3 && typeof opts === 'function') { - callback = task || noop; - task = opts; - } else { - parseTimes(options, opts); - callback = callback || noop; - } - - if (typeof task !== 'function') { - throw new Error("Invalid arguments for async.retry"); - } - - var _task = wrapAsync(task); - - var attempt = 1; - function retryAttempt() { - _task(function(err) { - if (err && attempt++ < options.times && - (typeof options.errorFilter != 'function' || - options.errorFilter(err))) { - setTimeout(retryAttempt, options.intervalFunc(attempt)); - } else { - callback.apply(null, arguments); - } - }); - } - - retryAttempt(); -} - -/** - * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method - * wraps a task and makes it retryable, rather than immediately calling it - * with retries. - * - * @name retryable - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.retry]{@link module:ControlFlow.retry} - * @category Control Flow - * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional - * options, exactly the same as from `retry` - * @param {AsyncFunction} task - the asynchronous function to wrap. - * This function will be passed any arguments passed to the returned wrapper. - * Invoked with (...args, callback). - * @returns {AsyncFunction} The wrapped function, which when invoked, will - * retry on an error, based on the parameters specified in `opts`. - * This function will accept the same parameters as `task`. - * @example - * - * async.auto({ - * dep1: async.retryable(3, getFromFlakyService), - * process: ["dep1", async.retryable(3, function (results, cb) { - * maybeProcessData(results.dep1, cb); - * })] - * }, callback); - */ -var retryable = function (opts, task) { - if (!task) { - task = opts; - opts = null; - } - var _task = wrapAsync(task); - return initialParams(function (args, callback) { - function taskFn(cb) { - _task.apply(null, args.concat(cb)); - } - - if (opts) retry(opts, taskFn, callback); - else retry(taskFn, callback); - - }); -}; - -/** - * Run the functions in the `tasks` collection in series, each one running once - * the previous function has completed. If any functions in the series pass an - * error to its callback, no more functions are run, and `callback` is - * immediately called with the value of the error. Otherwise, `callback` - * receives an array of results when `tasks` have completed. - * - * It is also possible to use an object instead of an array. Each property will - * be run as a function, and the results will be passed to the final `callback` - * as an object instead of an array. This can be a more readable way of handling - * results from {@link async.series}. - * - * **Note** that while many implementations preserve the order of object - * properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) - * explicitly states that - * - * > The mechanics and order of enumerating the properties is not specified. - * - * So if you rely on the order in which your series of functions are executed, - * and want this to work on all platforms, consider using an array. - * - * @name series - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {Array|Iterable|Object} tasks - A collection containing - * [async functions]{@link AsyncFunction} to run in series. - * Each function can complete with any number of optional `result` values. - * @param {Function} [callback] - An optional callback to run once all the - * functions have completed. This function gets a results array (or object) - * containing all the result arguments passed to the `task` callbacks. Invoked - * with (err, result). - * @example - * async.series([ - * function(callback) { - * // do some stuff ... - * callback(null, 'one'); - * }, - * function(callback) { - * // do some more stuff ... - * callback(null, 'two'); - * } - * ], - * // optional callback - * function(err, results) { - * // results is now equal to ['one', 'two'] - * }); - * - * async.series({ - * one: function(callback) { - * setTimeout(function() { - * callback(null, 1); - * }, 200); - * }, - * two: function(callback){ - * setTimeout(function() { - * callback(null, 2); - * }, 100); - * } - * }, function(err, results) { - * // results is now equal to: {one: 1, two: 2} - * }); - */ -function series(tasks, callback) { - _parallel(eachOfSeries, tasks, callback); -} - -/** - * Returns `true` if at least one element in the `coll` satisfies an async test. - * If any iteratee call returns `true`, the main `callback` is immediately - * called. - * - * @name some - * @static - * @memberOf module:Collections - * @method - * @alias any - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collections in parallel. - * The iteratee should complete with a boolean `result` value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called as soon as any - * iteratee returns `true`, or after all the iteratee functions have finished. - * Result will be either `true` or `false` depending on the values of the async - * tests. Invoked with (err, result). - * @example - * - * async.some(['file1','file2','file3'], function(filePath, callback) { - * fs.access(filePath, function(err) { - * callback(null, !err) - * }); - * }, function(err, result) { - * // if result is true then at least one of the files exists - * }); - */ -var some = doParallel(_createTester(Boolean, identity)); - -/** - * The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time. - * - * @name someLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.some]{@link module:Collections.some} - * @alias anyLimit - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collections in parallel. - * The iteratee should complete with a boolean `result` value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called as soon as any - * iteratee returns `true`, or after all the iteratee functions have finished. - * Result will be either `true` or `false` depending on the values of the async - * tests. Invoked with (err, result). - */ -var someLimit = doParallelLimit(_createTester(Boolean, identity)); - -/** - * The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time. - * - * @name someSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.some]{@link module:Collections.some} - * @alias anySeries - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collections in series. - * The iteratee should complete with a boolean `result` value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called as soon as any - * iteratee returns `true`, or after all the iteratee functions have finished. - * Result will be either `true` or `false` depending on the values of the async - * tests. Invoked with (err, result). - */ -var someSeries = doLimit(someLimit, 1); - -/** - * Sorts a list by the results of running each `coll` value through an async - * `iteratee`. - * - * @name sortBy - * @static - * @memberOf module:Collections - * @method - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The iteratee should complete with a value to use as the sort criteria as - * its `result`. - * Invoked with (item, callback). - * @param {Function} callback - A callback which is called after all the - * `iteratee` functions have finished, or an error occurs. Results is the items - * from the original `coll` sorted by the values returned by the `iteratee` - * calls. Invoked with (err, results). - * @example - * - * async.sortBy(['file1','file2','file3'], function(file, callback) { - * fs.stat(file, function(err, stats) { - * callback(err, stats.mtime); - * }); - * }, function(err, results) { - * // results is now the original array of files sorted by - * // modified date - * }); - * - * // By modifying the callback parameter the - * // sorting order can be influenced: - * - * // ascending order - * async.sortBy([1,9,3,5], function(x, callback) { - * callback(null, x); - * }, function(err,result) { - * // result callback - * }); - * - * // descending order - * async.sortBy([1,9,3,5], function(x, callback) { - * callback(null, x*-1); //<- x*-1 instead of x, turns the order around - * }, function(err,result) { - * // result callback - * }); - */ -function sortBy (coll, iteratee, callback) { - var _iteratee = wrapAsync(iteratee); - map(coll, function (x, callback) { - _iteratee(x, function (err, criteria) { - if (err) return callback(err); - callback(null, {value: x, criteria: criteria}); - }); - }, function (err, results) { - if (err) return callback(err); - callback(null, arrayMap(results.sort(comparator), baseProperty('value'))); - }); - - function comparator(left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - } -} - -/** - * Sets a time limit on an asynchronous function. If the function does not call - * its callback within the specified milliseconds, it will be called with a - * timeout error. The code property for the error object will be `'ETIMEDOUT'`. - * - * @name timeout - * @static - * @memberOf module:Utils - * @method - * @category Util - * @param {AsyncFunction} asyncFn - The async function to limit in time. - * @param {number} milliseconds - The specified time limit. - * @param {*} [info] - Any variable you want attached (`string`, `object`, etc) - * to timeout Error for more information.. - * @returns {AsyncFunction} Returns a wrapped function that can be used with any - * of the control flow functions. - * Invoke this function with the same parameters as you would `asyncFunc`. - * @example - * - * function myFunction(foo, callback) { - * doAsyncTask(foo, function(err, data) { - * // handle errors - * if (err) return callback(err); - * - * // do some stuff ... - * - * // return processed data - * return callback(null, data); - * }); - * } - * - * var wrapped = async.timeout(myFunction, 1000); - * - * // call `wrapped` as you would `myFunction` - * wrapped({ bar: 'bar' }, function(err, data) { - * // if `myFunction` takes < 1000 ms to execute, `err` - * // and `data` will have their expected values - * - * // else `err` will be an Error with the code 'ETIMEDOUT' - * }); - */ -function timeout(asyncFn, milliseconds, info) { - var fn = wrapAsync(asyncFn); - - return initialParams(function (args, callback) { - var timedOut = false; - var timer; - - function timeoutCallback() { - var name = asyncFn.name || 'anonymous'; - var error = new Error('Callback function "' + name + '" timed out.'); - error.code = 'ETIMEDOUT'; - if (info) { - error.info = info; - } - timedOut = true; - callback(error); - } - - args.push(function () { - if (!timedOut) { - callback.apply(null, arguments); - clearTimeout(timer); - } - }); - - // setup timer and call original function - timer = setTimeout(timeoutCallback, milliseconds); - fn.apply(null, args); - }); -} - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeCeil = Math.ceil; -var nativeMax = Math.max; - -/** - * The base implementation of `_.range` and `_.rangeRight` which doesn't - * coerce arguments. - * - * @private - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @param {number} step The value to increment or decrement by. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the range of numbers. - */ -function baseRange(start, end, step, fromRight) { - var index = -1, - length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), - result = Array(length); - - while (length--) { - result[fromRight ? length : ++index] = start; - start += step; - } - return result; -} - -/** - * The same as [times]{@link module:ControlFlow.times} but runs a maximum of `limit` async operations at a - * time. - * - * @name timesLimit - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.times]{@link module:ControlFlow.times} - * @category Control Flow - * @param {number} count - The number of times to run the function. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - The async function to call `n` times. - * Invoked with the iteration index and a callback: (n, next). - * @param {Function} callback - see [async.map]{@link module:Collections.map}. - */ -function timeLimit(count, limit, iteratee, callback) { - var _iteratee = wrapAsync(iteratee); - mapLimit(baseRange(0, count, 1), limit, _iteratee, callback); -} - -/** - * Calls the `iteratee` function `n` times, and accumulates results in the same - * manner you would use with [map]{@link module:Collections.map}. - * - * @name times - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.map]{@link module:Collections.map} - * @category Control Flow - * @param {number} n - The number of times to run the function. - * @param {AsyncFunction} iteratee - The async function to call `n` times. - * Invoked with the iteration index and a callback: (n, next). - * @param {Function} callback - see {@link module:Collections.map}. - * @example - * - * // Pretend this is some complicated async factory - * var createUser = function(id, callback) { - * callback(null, { - * id: 'user' + id - * }); - * }; - * - * // generate 5 users - * async.times(5, function(n, next) { - * createUser(n, function(err, user) { - * next(err, user); - * }); - * }, function(err, users) { - * // we should now have 5 users - * }); - */ -var times = doLimit(timeLimit, Infinity); - -/** - * The same as [times]{@link module:ControlFlow.times} but runs only a single async operation at a time. - * - * @name timesSeries - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.times]{@link module:ControlFlow.times} - * @category Control Flow - * @param {number} n - The number of times to run the function. - * @param {AsyncFunction} iteratee - The async function to call `n` times. - * Invoked with the iteration index and a callback: (n, next). - * @param {Function} callback - see {@link module:Collections.map}. - */ -var timesSeries = doLimit(timeLimit, 1); - -/** - * A relative of `reduce`. Takes an Object or Array, and iterates over each - * element in series, each step potentially mutating an `accumulator` value. - * The type of the accumulator defaults to the type of collection passed in. - * - * @name transform - * @static - * @memberOf module:Collections - * @method - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {*} [accumulator] - The initial state of the transform. If omitted, - * it will default to an empty Object or Array, depending on the type of `coll` - * @param {AsyncFunction} iteratee - A function applied to each item in the - * collection that potentially modifies the accumulator. - * Invoked with (accumulator, item, key, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result is the transformed accumulator. - * Invoked with (err, result). - * @example - * - * async.transform([1,2,3], function(acc, item, index, callback) { - * // pointless async: - * process.nextTick(function() { - * acc.push(item * 2) - * callback(null) - * }); - * }, function(err, result) { - * // result is now equal to [2, 4, 6] - * }); - * - * @example - * - * async.transform({a: 1, b: 2, c: 3}, function (obj, val, key, callback) { - * setImmediate(function () { - * obj[key] = val * 2; - * callback(); - * }) - * }, function (err, result) { - * // result is equal to {a: 2, b: 4, c: 6} - * }) - */ -function transform (coll, accumulator, iteratee, callback) { - if (arguments.length <= 3) { - callback = iteratee; - iteratee = accumulator; - accumulator = isArray(coll) ? [] : {}; - } - callback = once(callback || noop); - var _iteratee = wrapAsync(iteratee); - - eachOf(coll, function(v, k, cb) { - _iteratee(accumulator, v, k, cb); - }, function(err) { - callback(err, accumulator); - }); -} - -/** - * It runs each task in series but stops whenever any of the functions were - * successful. If one of the tasks were successful, the `callback` will be - * passed the result of the successful task. If all tasks fail, the callback - * will be passed the error and result (if any) of the final attempt. - * - * @name tryEach - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {Array|Iterable|Object} tasks - A collection containing functions to - * run, each function is passed a `callback(err, result)` it must call on - * completion with an error `err` (which can be `null`) and an optional `result` - * value. - * @param {Function} [callback] - An optional callback which is called when one - * of the tasks has succeeded, or all have failed. It receives the `err` and - * `result` arguments of the last attempt at completing the `task`. Invoked with - * (err, results). - * @example - * async.tryEach([ - * function getDataFromFirstWebsite(callback) { - * // Try getting the data from the first website - * callback(err, data); - * }, - * function getDataFromSecondWebsite(callback) { - * // First website failed, - * // Try getting the data from the backup website - * callback(err, data); - * } - * ], - * // optional callback - * function(err, results) { - * Now do something with the data. - * }); - * - */ -function tryEach(tasks, callback) { - var error = null; - var result; - callback = callback || noop; - eachSeries(tasks, function(task, callback) { - wrapAsync(task)(function (err, res/*, ...args*/) { - if (arguments.length > 2) { - result = slice(arguments, 1); - } else { - result = res; - } - error = err; - callback(!err); - }); - }, function () { - callback(error, result); - }); -} - -/** - * Undoes a [memoize]{@link module:Utils.memoize}d function, reverting it to the original, - * unmemoized form. Handy for testing. - * - * @name unmemoize - * @static - * @memberOf module:Utils - * @method - * @see [async.memoize]{@link module:Utils.memoize} - * @category Util - * @param {AsyncFunction} fn - the memoized function - * @returns {AsyncFunction} a function that calls the original unmemoized function - */ -function unmemoize(fn) { - return function () { - return (fn.unmemoized || fn).apply(null, arguments); - }; -} - -/** - * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when - * stopped, or an error occurs. - * - * @name whilst - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {Function} test - synchronous truth test to perform before each - * execution of `iteratee`. Invoked with (). - * @param {AsyncFunction} iteratee - An async function which is called each time - * `test` passes. Invoked with (callback). - * @param {Function} [callback] - A callback which is called after the test - * function has failed and repeated execution of `iteratee` has stopped. `callback` - * will be passed an error and any arguments passed to the final `iteratee`'s - * callback. Invoked with (err, [results]); - * @returns undefined - * @example - * - * var count = 0; - * async.whilst( - * function() { return count < 5; }, - * function(callback) { - * count++; - * setTimeout(function() { - * callback(null, count); - * }, 1000); - * }, - * function (err, n) { - * // 5 seconds have passed, n = 5 - * } - * ); - */ -function whilst(test, iteratee, callback) { - callback = onlyOnce(callback || noop); - var _iteratee = wrapAsync(iteratee); - if (!test()) return callback(null); - var next = function(err/*, ...args*/) { - if (err) return callback(err); - if (test()) return _iteratee(next); - var args = slice(arguments, 1); - callback.apply(null, [null].concat(args)); - }; - _iteratee(next); -} - -/** - * Repeatedly call `iteratee` until `test` returns `true`. Calls `callback` when - * stopped, or an error occurs. `callback` will be passed an error and any - * arguments passed to the final `iteratee`'s callback. - * - * The inverse of [whilst]{@link module:ControlFlow.whilst}. - * - * @name until - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.whilst]{@link module:ControlFlow.whilst} - * @category Control Flow - * @param {Function} test - synchronous truth test to perform before each - * execution of `iteratee`. Invoked with (). - * @param {AsyncFunction} iteratee - An async function which is called each time - * `test` fails. Invoked with (callback). - * @param {Function} [callback] - A callback which is called after the test - * function has passed and repeated execution of `iteratee` has stopped. `callback` - * will be passed an error and any arguments passed to the final `iteratee`'s - * callback. Invoked with (err, [results]); - */ -function until(test, iteratee, callback) { - whilst(function() { - return !test.apply(this, arguments); - }, iteratee, callback); -} - -/** - * Runs the `tasks` array of functions in series, each passing their results to - * the next in the array. However, if any of the `tasks` pass an error to their - * own callback, the next function is not executed, and the main `callback` is - * immediately called with the error. - * - * @name waterfall - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {Array} tasks - An array of [async functions]{@link AsyncFunction} - * to run. - * Each function should complete with any number of `result` values. - * The `result` values will be passed as arguments, in order, to the next task. - * @param {Function} [callback] - An optional callback to run once all the - * functions have completed. This will be passed the results of the last task's - * callback. Invoked with (err, [results]). - * @returns undefined - * @example - * - * async.waterfall([ - * function(callback) { - * callback(null, 'one', 'two'); - * }, - * function(arg1, arg2, callback) { - * // arg1 now equals 'one' and arg2 now equals 'two' - * callback(null, 'three'); - * }, - * function(arg1, callback) { - * // arg1 now equals 'three' - * callback(null, 'done'); - * } - * ], function (err, result) { - * // result now equals 'done' - * }); - * - * // Or, with named functions: - * async.waterfall([ - * myFirstFunction, - * mySecondFunction, - * myLastFunction, - * ], function (err, result) { - * // result now equals 'done' - * }); - * function myFirstFunction(callback) { - * callback(null, 'one', 'two'); - * } - * function mySecondFunction(arg1, arg2, callback) { - * // arg1 now equals 'one' and arg2 now equals 'two' - * callback(null, 'three'); - * } - * function myLastFunction(arg1, callback) { - * // arg1 now equals 'three' - * callback(null, 'done'); - * } - */ -var waterfall = function(tasks, callback) { - callback = once(callback || noop); - if (!isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions')); - if (!tasks.length) return callback(); - var taskIndex = 0; - - function nextTask(args) { - var task = wrapAsync(tasks[taskIndex++]); - args.push(onlyOnce(next)); - task.apply(null, args); - } - - function next(err/*, ...args*/) { - if (err || taskIndex === tasks.length) { - return callback.apply(null, arguments); - } - nextTask(slice(arguments, 1)); - } - - nextTask([]); -}; - -/** - * An "async function" in the context of Async is an asynchronous function with - * a variable number of parameters, with the final parameter being a callback. - * (`function (arg1, arg2, ..., callback) {}`) - * The final callback is of the form `callback(err, results...)`, which must be - * called once the function is completed. The callback should be called with a - * Error as its first argument to signal that an error occurred. - * Otherwise, if no error occurred, it should be called with `null` as the first - * argument, and any additional `result` arguments that may apply, to signal - * successful completion. - * The callback must be called exactly once, ideally on a later tick of the - * JavaScript event loop. - * - * This type of function is also referred to as a "Node-style async function", - * or a "continuation passing-style function" (CPS). Most of the methods of this - * library are themselves CPS/Node-style async functions, or functions that - * return CPS/Node-style async functions. - * - * Wherever we accept a Node-style async function, we also directly accept an - * [ES2017 `async` function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function}. - * In this case, the `async` function will not be passed a final callback - * argument, and any thrown error will be used as the `err` argument of the - * implicit callback, and the return value will be used as the `result` value. - * (i.e. a `rejected` of the returned Promise becomes the `err` callback - * argument, and a `resolved` value becomes the `result`.) - * - * Note, due to JavaScript limitations, we can only detect native `async` - * functions and not transpilied implementations. - * Your environment must have `async`/`await` support for this to work. - * (e.g. Node > v7.6, or a recent version of a modern browser). - * If you are using `async` functions through a transpiler (e.g. Babel), you - * must still wrap the function with [asyncify]{@link module:Utils.asyncify}, - * because the `async function` will be compiled to an ordinary function that - * returns a promise. - * - * @typedef {Function} AsyncFunction - * @static - */ - -/** - * Async is a utility module which provides straight-forward, powerful functions - * for working with asynchronous JavaScript. Although originally designed for - * use with [Node.js](http://nodejs.org) and installable via - * `npm install --save async`, it can also be used directly in the browser. - * @module async - * @see AsyncFunction - */ - - -/** - * A collection of `async` functions for manipulating collections, such as - * arrays and objects. - * @module Collections - */ - -/** - * A collection of `async` functions for controlling the flow through a script. - * @module ControlFlow - */ - -/** - * A collection of `async` utility functions. - * @module Utils - */ - -var index = { - apply: apply, - applyEach: applyEach, - applyEachSeries: applyEachSeries, - asyncify: asyncify, - auto: auto, - autoInject: autoInject, - cargo: cargo, - compose: compose, - concat: concat, - concatLimit: concatLimit, - concatSeries: concatSeries, - constant: constant, - detect: detect, - detectLimit: detectLimit, - detectSeries: detectSeries, - dir: dir, - doDuring: doDuring, - doUntil: doUntil, - doWhilst: doWhilst, - during: during, - each: eachLimit, - eachLimit: eachLimit$1, - eachOf: eachOf, - eachOfLimit: eachOfLimit, - eachOfSeries: eachOfSeries, - eachSeries: eachSeries, - ensureAsync: ensureAsync, - every: every, - everyLimit: everyLimit, - everySeries: everySeries, - filter: filter, - filterLimit: filterLimit, - filterSeries: filterSeries, - forever: forever, - groupBy: groupBy, - groupByLimit: groupByLimit, - groupBySeries: groupBySeries, - log: log, - map: map, - mapLimit: mapLimit, - mapSeries: mapSeries, - mapValues: mapValues, - mapValuesLimit: mapValuesLimit, - mapValuesSeries: mapValuesSeries, - memoize: memoize, - nextTick: nextTick, - parallel: parallelLimit, - parallelLimit: parallelLimit$1, - priorityQueue: priorityQueue, - queue: queue$1, - race: race, - reduce: reduce, - reduceRight: reduceRight, - reflect: reflect, - reflectAll: reflectAll, - reject: reject, - rejectLimit: rejectLimit, - rejectSeries: rejectSeries, - retry: retry, - retryable: retryable, - seq: seq, - series: series, - setImmediate: setImmediate$1, - some: some, - someLimit: someLimit, - someSeries: someSeries, - sortBy: sortBy, - timeout: timeout, - times: times, - timesLimit: timeLimit, - timesSeries: timesSeries, - transform: transform, - tryEach: tryEach, - unmemoize: unmemoize, - until: until, - waterfall: waterfall, - whilst: whilst, - - // aliases - all: every, - allLimit: everyLimit, - allSeries: everySeries, - any: some, - anyLimit: someLimit, - anySeries: someSeries, - find: detect, - findLimit: detectLimit, - findSeries: detectSeries, - forEach: eachLimit, - forEachSeries: eachSeries, - forEachLimit: eachLimit$1, - forEachOf: eachOf, - forEachOfSeries: eachOfSeries, - forEachOfLimit: eachOfLimit, - inject: reduce, - foldl: reduce, - foldr: reduceRight, - select: filter, - selectLimit: filterLimit, - selectSeries: filterSeries, - wrapSync: asyncify -}; - -exports['default'] = index; -exports.apply = apply; -exports.applyEach = applyEach; -exports.applyEachSeries = applyEachSeries; -exports.asyncify = asyncify; -exports.auto = auto; -exports.autoInject = autoInject; -exports.cargo = cargo; -exports.compose = compose; -exports.concat = concat; -exports.concatLimit = concatLimit; -exports.concatSeries = concatSeries; -exports.constant = constant; -exports.detect = detect; -exports.detectLimit = detectLimit; -exports.detectSeries = detectSeries; -exports.dir = dir; -exports.doDuring = doDuring; -exports.doUntil = doUntil; -exports.doWhilst = doWhilst; -exports.during = during; -exports.each = eachLimit; -exports.eachLimit = eachLimit$1; -exports.eachOf = eachOf; -exports.eachOfLimit = eachOfLimit; -exports.eachOfSeries = eachOfSeries; -exports.eachSeries = eachSeries; -exports.ensureAsync = ensureAsync; -exports.every = every; -exports.everyLimit = everyLimit; -exports.everySeries = everySeries; -exports.filter = filter; -exports.filterLimit = filterLimit; -exports.filterSeries = filterSeries; -exports.forever = forever; -exports.groupBy = groupBy; -exports.groupByLimit = groupByLimit; -exports.groupBySeries = groupBySeries; -exports.log = log; -exports.map = map; -exports.mapLimit = mapLimit; -exports.mapSeries = mapSeries; -exports.mapValues = mapValues; -exports.mapValuesLimit = mapValuesLimit; -exports.mapValuesSeries = mapValuesSeries; -exports.memoize = memoize; -exports.nextTick = nextTick; -exports.parallel = parallelLimit; -exports.parallelLimit = parallelLimit$1; -exports.priorityQueue = priorityQueue; -exports.queue = queue$1; -exports.race = race; -exports.reduce = reduce; -exports.reduceRight = reduceRight; -exports.reflect = reflect; -exports.reflectAll = reflectAll; -exports.reject = reject; -exports.rejectLimit = rejectLimit; -exports.rejectSeries = rejectSeries; -exports.retry = retry; -exports.retryable = retryable; -exports.seq = seq; -exports.series = series; -exports.setImmediate = setImmediate$1; -exports.some = some; -exports.someLimit = someLimit; -exports.someSeries = someSeries; -exports.sortBy = sortBy; -exports.timeout = timeout; -exports.times = times; -exports.timesLimit = timeLimit; -exports.timesSeries = timesSeries; -exports.transform = transform; -exports.tryEach = tryEach; -exports.unmemoize = unmemoize; -exports.until = until; -exports.waterfall = waterfall; -exports.whilst = whilst; -exports.all = every; -exports.allLimit = everyLimit; -exports.allSeries = everySeries; -exports.any = some; -exports.anyLimit = someLimit; -exports.anySeries = someSeries; -exports.find = detect; -exports.findLimit = detectLimit; -exports.findSeries = detectSeries; -exports.forEach = eachLimit; -exports.forEachSeries = eachSeries; -exports.forEachLimit = eachLimit$1; -exports.forEachOf = eachOf; -exports.forEachOfSeries = eachOfSeries; -exports.forEachOfLimit = eachOfLimit; -exports.inject = reduce; -exports.foldl = reduce; -exports.foldr = reduceRight; -exports.select = filter; -exports.selectLimit = filterLimit; -exports.selectSeries = filterSeries; -exports.wrapSync = asyncify; - -Object.defineProperty(exports, '__esModule', { value: true }); - -}))); diff --git a/node_modules/async/dist/async.min.js b/node_modules/async/dist/async.min.js deleted file mode 100644 index 013f194..0000000 --- a/node_modules/async/dist/async.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.async=n.async||{})}(this,function(n){"use strict";function t(n,t){t|=0;for(var e=Math.max(n.length-t,0),r=Array(e),u=0;u-1&&n%1==0&&n<=Tt}function d(n){return null!=n&&v(n.length)&&!y(n)}function m(){}function g(n){return function(){if(null!==n){var t=n;n=null,t.apply(this,arguments)}}}function b(n,t){for(var e=-1,r=Array(n);++e-1&&n%1==0&&nu?0:u+t),e=e>u?u:e,e<0&&(e+=u),u=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(u);++r=r?n:Z(n,t,e)}function tn(n,t){for(var e=n.length;e--&&J(t,n[e],0)>-1;);return e}function en(n,t){for(var e=-1,r=n.length;++e-1;);return e}function rn(n){return n.split("")}function un(n){return Xe.test(n)}function on(n){return n.match(mr)||[]}function cn(n){return un(n)?on(n):rn(n)}function fn(n){return null==n?"":Y(n)}function an(n,t,e){if(n=fn(n),n&&(e||void 0===t))return n.replace(gr,"");if(!n||!(t=Y(t)))return n;var r=cn(n),u=cn(t),i=en(r,u),o=tn(r,u)+1;return nn(r,i,o).join("")}function ln(n){return n=n.toString().replace(kr,""),n=n.match(br)[2].replace(" ",""),n=n?n.split(jr):[],n=n.map(function(n){return an(n.replace(Sr,""))})}function sn(n,t){var e={};N(n,function(n,t){function r(t,e){var r=K(u,function(n){return t[n]});r.push(e),a(n).apply(null,r)}var u,i=f(n),o=!i&&1===n.length||i&&0===n.length;if(Pt(n))u=n.slice(0,-1),n=n[n.length-1],e[t]=u.concat(u.length>0?r:n);else if(o)e[t]=n;else{if(u=ln(n),0===n.length&&!i&&0===u.length)throw new Error("autoInject task functions require explicit parameters.");i||u.pop(),e[t]=u.concat(r)}}),Ve(e,t)}function pn(){this.head=this.tail=null,this.length=0}function hn(n,t){n.length=1,n.head=n.tail=t}function yn(n,t,e){function r(n,t,e){if(null!=e&&"function"!=typeof e)throw new Error("task callback must be a function");if(s.started=!0,Pt(n)||(n=[n]),0===n.length&&s.idle())return lt(function(){s.drain()});for(var r=0,u=n.length;r0&&c.splice(i,1),u.callback.apply(u,arguments),null!=t&&s.error(t,u.data)}o<=s.concurrency-s.buffer&&s.unsaturated(),s.idle()&&s.drain(),s.process()}}if(null==t)t=1;else if(0===t)throw new Error("Concurrency must not be zero");var i=a(n),o=0,c=[],f=!1,l=!1,s={_tasks:new pn,concurrency:t,payload:e,saturated:m,unsaturated:m,buffer:t/4,empty:m,drain:m,error:m,started:!1,paused:!1,push:function(n,t){r(n,!1,t)},kill:function(){s.drain=m,s._tasks.empty()},unshift:function(n,t){r(n,!0,t)},remove:function(n){s._tasks.remove(n)},process:function(){if(!l){for(l=!0;!s.paused&&o2&&(i=t(arguments,1)),u[e]=i,r(n)})},function(n){r(n,u)})}function Dn(n,t){Vn(Ie,n,t)}function Rn(n,t,e){Vn(q(t),n,e)}function Cn(n,t){if(t=g(t||m),!Pt(n))return t(new TypeError("First argument to race must be an array of functions"));if(!n.length)return t();for(var e=0,r=n.length;er?1:0}var u=a(t);_e(n,function(n,t){u(n,function(e,r){return e?t(e):void t(null,{value:n,criteria:r})})},function(n,t){return n?e(n):void e(null,K(t.sort(r),Fn("value")))})}function Xn(n,t,e){var r=a(n);return ct(function(u,i){function o(){var t=n.name||"anonymous",r=new Error('Callback function "'+t+'" timed out.');r.code="ETIMEDOUT",e&&(r.info=e),f=!0,i(r)}var c,f=!1;u.push(function(){f||(i.apply(null,arguments),clearTimeout(c))}),c=setTimeout(o,t),r.apply(null,u)})}function Yn(n,t,e,r){for(var u=-1,i=iu(uu((t-n)/(e||1)),0),o=Array(i);i--;)o[r?i:++u]=n,n+=e;return o}function Zn(n,t,e,r){var u=a(e);Ue(Yn(0,n,1),t,u,r)}function nt(n,t,e,r){arguments.length<=3&&(r=e,e=t,t=Pt(n)?[]:{}),r=g(r||m);var u=a(e);Ie(n,function(n,e,r){u(t,n,e,r)},function(n){r(n,t)})}function tt(n,e){var r,u=null;e=e||m,Ur(n,function(n,e){a(n)(function(n,i){r=arguments.length>2?t(arguments,1):i,u=n,e(!n)})},function(){e(u,r)})}function et(n){return function(){return(n.unmemoized||n).apply(null,arguments)}}function rt(n,e,r){r=U(r||m);var u=a(e);if(!n())return r(null);var i=function(e){if(e)return r(e);if(n())return u(i);var o=t(arguments,1);r.apply(null,[null].concat(o))};u(i)}function ut(n,t,e){rt(function(){return!n.apply(this,arguments)},t,e)}var it,ot=function(n){var e=t(arguments,1);return function(){var r=t(arguments);return n.apply(null,e.concat(r))}},ct=function(n){return function(){var e=t(arguments),r=e.pop();n.call(this,e,r)}},ft="function"==typeof setImmediate&&setImmediate,at="object"==typeof process&&"function"==typeof process.nextTick;it=ft?setImmediate:at?process.nextTick:r;var lt=u(it),st="function"==typeof Symbol,pt="object"==typeof global&&global&&global.Object===Object&&global,ht="object"==typeof self&&self&&self.Object===Object&&self,yt=pt||ht||Function("return this")(),vt=yt.Symbol,dt=Object.prototype,mt=dt.hasOwnProperty,gt=dt.toString,bt=vt?vt.toStringTag:void 0,jt=Object.prototype,St=jt.toString,kt="[object Null]",Lt="[object Undefined]",Ot=vt?vt.toStringTag:void 0,wt="[object AsyncFunction]",xt="[object Function]",Et="[object GeneratorFunction]",At="[object Proxy]",Tt=9007199254740991,Bt={},Ft="function"==typeof Symbol&&Symbol.iterator,It=function(n){return Ft&&n[Ft]&&n[Ft]()},_t="[object Arguments]",Mt=Object.prototype,Ut=Mt.hasOwnProperty,qt=Mt.propertyIsEnumerable,zt=S(function(){return arguments}())?S:function(n){return j(n)&&Ut.call(n,"callee")&&!qt.call(n,"callee")},Pt=Array.isArray,Vt="object"==typeof n&&n&&!n.nodeType&&n,Dt=Vt&&"object"==typeof module&&module&&!module.nodeType&&module,Rt=Dt&&Dt.exports===Vt,Ct=Rt?yt.Buffer:void 0,$t=Ct?Ct.isBuffer:void 0,Wt=$t||k,Nt=9007199254740991,Qt=/^(?:0|[1-9]\d*)$/,Gt="[object Arguments]",Ht="[object Array]",Jt="[object Boolean]",Kt="[object Date]",Xt="[object Error]",Yt="[object Function]",Zt="[object Map]",ne="[object Number]",te="[object Object]",ee="[object RegExp]",re="[object Set]",ue="[object String]",ie="[object WeakMap]",oe="[object ArrayBuffer]",ce="[object DataView]",fe="[object Float32Array]",ae="[object Float64Array]",le="[object Int8Array]",se="[object Int16Array]",pe="[object Int32Array]",he="[object Uint8Array]",ye="[object Uint8ClampedArray]",ve="[object Uint16Array]",de="[object Uint32Array]",me={};me[fe]=me[ae]=me[le]=me[se]=me[pe]=me[he]=me[ye]=me[ve]=me[de]=!0,me[Gt]=me[Ht]=me[oe]=me[Jt]=me[ce]=me[Kt]=me[Xt]=me[Yt]=me[Zt]=me[ne]=me[te]=me[ee]=me[re]=me[ue]=me[ie]=!1;var ge="object"==typeof n&&n&&!n.nodeType&&n,be=ge&&"object"==typeof module&&module&&!module.nodeType&&module,je=be&&be.exports===ge,Se=je&&pt.process,ke=function(){try{var n=be&&be.require&&be.require("util").types;return n?n:Se&&Se.binding&&Se.binding("util")}catch(n){}}(),Le=ke&&ke.isTypedArray,Oe=Le?w(Le):O,we=Object.prototype,xe=we.hasOwnProperty,Ee=Object.prototype,Ae=A(Object.keys,Object),Te=Object.prototype,Be=Te.hasOwnProperty,Fe=P(z,1/0),Ie=function(n,t,e){var r=d(n)?V:Fe;r(n,a(t),e)},_e=D(R),Me=l(_e),Ue=C(R),qe=P(Ue,1),ze=l(qe),Pe=W(),Ve=function(n,e,r){function u(n,t){j.push(function(){f(n,t)})}function i(){if(0===j.length&&0===v)return r(null,y);for(;j.length&&v2&&(u=t(arguments,1)),e){var i={};N(y,function(n,t){i[t]=n}),i[n]=u,d=!0,b=Object.create(null),r(e,i)}else y[n]=u,c(n)});v++;var i=a(e[e.length-1]);e.length>1?i(y,u):i(u)}}function l(){for(var n,t=0;S.length;)n=S.pop(),t++,$(s(n),function(n){0===--k[n]&&S.push(n)});if(t!==h)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}function s(t){var e=[];return N(n,function(n,r){Pt(n)&&J(n,t,0)>=0&&e.push(r)}),e}"function"==typeof e&&(r=e,e=null),r=g(r||m);var p=B(n),h=p.length;if(!h)return r(null);e||(e=h);var y={},v=0,d=!1,b=Object.create(null),j=[],S=[],k={};N(n,function(t,e){if(!Pt(t))return u(e,[t]),void S.push(e);var r=t.slice(0,t.length-1),i=r.length;return 0===i?(u(e,t),void S.push(e)):(k[e]=i,void $(r,function(c){if(!n[c])throw new Error("async.auto task `"+e+"` has a non-existent dependency `"+c+"` in "+r.join(", "));o(c,function(){i--,0===i&&u(e,t)})}))}),l(),i()},De="[object Symbol]",Re=1/0,Ce=vt?vt.prototype:void 0,$e=Ce?Ce.toString:void 0,We="\\ud800-\\udfff",Ne="\\u0300-\\u036f",Qe="\\ufe20-\\ufe2f",Ge="\\u20d0-\\u20ff",He=Ne+Qe+Ge,Je="\\ufe0e\\ufe0f",Ke="\\u200d",Xe=RegExp("["+Ke+We+He+Je+"]"),Ye="\\ud800-\\udfff",Ze="\\u0300-\\u036f",nr="\\ufe20-\\ufe2f",tr="\\u20d0-\\u20ff",er=Ze+nr+tr,rr="\\ufe0e\\ufe0f",ur="["+Ye+"]",ir="["+er+"]",or="\\ud83c[\\udffb-\\udfff]",cr="(?:"+ir+"|"+or+")",fr="[^"+Ye+"]",ar="(?:\\ud83c[\\udde6-\\uddff]){2}",lr="[\\ud800-\\udbff][\\udc00-\\udfff]",sr="\\u200d",pr=cr+"?",hr="["+rr+"]?",yr="(?:"+sr+"(?:"+[fr,ar,lr].join("|")+")"+hr+pr+")*",vr=hr+pr+yr,dr="(?:"+[fr+ir+"?",ir,ar,lr,ur].join("|")+")",mr=RegExp(or+"(?="+or+")|"+dr+vr,"g"),gr=/^\s+|\s+$/g,br=/^(?:async\s+)?(function)?\s*[^\(]*\(\s*([^\)]*)\)/m,jr=/,/,Sr=/(=.+)?(\s*)$/,kr=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;pn.prototype.removeLink=function(n){return n.prev?n.prev.next=n.next:this.head=n.next,n.next?n.next.prev=n.prev:this.tail=n.prev,n.prev=n.next=null,this.length-=1,n},pn.prototype.empty=function(){for(;this.head;)this.shift();return this},pn.prototype.insertAfter=function(n,t){t.prev=n,t.next=n.next,n.next?n.next.prev=t:this.tail=t,n.next=t,this.length+=1},pn.prototype.insertBefore=function(n,t){t.prev=n.prev,t.next=n,n.prev?n.prev.next=t:this.head=t,n.prev=t,this.length+=1},pn.prototype.unshift=function(n){this.head?this.insertBefore(this.head,n):hn(this,n)},pn.prototype.push=function(n){this.tail?this.insertAfter(this.tail,n):hn(this,n)},pn.prototype.shift=function(){return this.head&&this.removeLink(this.head)},pn.prototype.pop=function(){return this.tail&&this.removeLink(this.tail)},pn.prototype.toArray=function(){for(var n=Array(this.length),t=this.head,e=0;e=u.priority;)u=u.next;for(var i=0,o=n.length;i 32 ) { - * console.log('This file name is too long'); - * callback('File name too long'); - * } else { - * // Do work to process file here - * console.log('File processed'); - * callback(); - * } - * }, function(err) { - * // if any of the file processing produced an error, err would equal that error - * if( err ) { - * // One of the iterations produced an error. - * // All processing will now stop. - * console.log('A file failed to process'); - * } else { - * console.log('All files have been processed successfully'); - * } - * }); - */ -function eachLimit(coll, iteratee, callback) { - (0, _eachOf2.default)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/eachLimit.js b/node_modules/async/eachLimit.js deleted file mode 100644 index fff721b..0000000 --- a/node_modules/async/eachLimit.js +++ /dev/null @@ -1,45 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = eachLimit; - -var _eachOfLimit = require('./internal/eachOfLimit'); - -var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); - -var _withoutIndex = require('./internal/withoutIndex'); - -var _withoutIndex2 = _interopRequireDefault(_withoutIndex); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time. - * - * @name eachLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.each]{@link module:Collections.each} - * @alias forEachLimit - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The array index is not passed to the iteratee. - * If you need the index, use `eachOfLimit`. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called when all - * `iteratee` functions have finished, or an error occurs. Invoked with (err). - */ -function eachLimit(coll, limit, iteratee, callback) { - (0, _eachOfLimit2.default)(limit)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/eachOf.js b/node_modules/async/eachOf.js deleted file mode 100644 index 055b9bd..0000000 --- a/node_modules/async/eachOf.js +++ /dev/null @@ -1,111 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -exports.default = function (coll, iteratee, callback) { - var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric; - eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback); -}; - -var _isArrayLike = require('lodash/isArrayLike'); - -var _isArrayLike2 = _interopRequireDefault(_isArrayLike); - -var _breakLoop = require('./internal/breakLoop'); - -var _breakLoop2 = _interopRequireDefault(_breakLoop); - -var _eachOfLimit = require('./eachOfLimit'); - -var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _once = require('./internal/once'); - -var _once2 = _interopRequireDefault(_once); - -var _onlyOnce = require('./internal/onlyOnce'); - -var _onlyOnce2 = _interopRequireDefault(_onlyOnce); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// eachOf implementation optimized for array-likes -function eachOfArrayLike(coll, iteratee, callback) { - callback = (0, _once2.default)(callback || _noop2.default); - var index = 0, - completed = 0, - length = coll.length; - if (length === 0) { - callback(null); - } - - function iteratorCallback(err, value) { - if (err) { - callback(err); - } else if (++completed === length || value === _breakLoop2.default) { - callback(null); - } - } - - for (; index < length; index++) { - iteratee(coll[index], index, (0, _onlyOnce2.default)(iteratorCallback)); - } -} - -// a generic version of eachOf which can handle array, object, and iterator cases. -var eachOfGeneric = (0, _doLimit2.default)(_eachOfLimit2.default, Infinity); - -/** - * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument - * to the iteratee. - * - * @name eachOf - * @static - * @memberOf module:Collections - * @method - * @alias forEachOf - * @category Collection - * @see [async.each]{@link module:Collections.each} - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - A function to apply to each - * item in `coll`. - * The `key` is the item's key, or index in the case of an array. - * Invoked with (item, key, callback). - * @param {Function} [callback] - A callback which is called when all - * `iteratee` functions have finished, or an error occurs. Invoked with (err). - * @example - * - * var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"}; - * var configs = {}; - * - * async.forEachOf(obj, function (value, key, callback) { - * fs.readFile(__dirname + value, "utf8", function (err, data) { - * if (err) return callback(err); - * try { - * configs[key] = JSON.parse(data); - * } catch (e) { - * return callback(e); - * } - * callback(); - * }); - * }, function (err) { - * if (err) console.error(err.message); - * // configs is now a map of JSON data - * doSomethingWith(configs); - * }); - */ -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/eachOfLimit.js b/node_modules/async/eachOfLimit.js deleted file mode 100644 index 30a1329..0000000 --- a/node_modules/async/eachOfLimit.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = eachOfLimit; - -var _eachOfLimit2 = require('./internal/eachOfLimit'); - -var _eachOfLimit3 = _interopRequireDefault(_eachOfLimit2); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a - * time. - * - * @name eachOfLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.eachOf]{@link module:Collections.eachOf} - * @alias forEachOfLimit - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async function to apply to each - * item in `coll`. The `key` is the item's key, or index in the case of an - * array. - * Invoked with (item, key, callback). - * @param {Function} [callback] - A callback which is called when all - * `iteratee` functions have finished, or an error occurs. Invoked with (err). - */ -function eachOfLimit(coll, limit, iteratee, callback) { - (0, _eachOfLimit3.default)(limit)(coll, (0, _wrapAsync2.default)(iteratee), callback); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/eachOfSeries.js b/node_modules/async/eachOfSeries.js deleted file mode 100644 index 9dfd711..0000000 --- a/node_modules/async/eachOfSeries.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _eachOfLimit = require('./eachOfLimit'); - -var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time. - * - * @name eachOfSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.eachOf]{@link module:Collections.eachOf} - * @alias forEachOfSeries - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * Invoked with (item, key, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. Invoked with (err). - */ -exports.default = (0, _doLimit2.default)(_eachOfLimit2.default, 1); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/eachSeries.js b/node_modules/async/eachSeries.js deleted file mode 100644 index 55c7840..0000000 --- a/node_modules/async/eachSeries.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _eachLimit = require('./eachLimit'); - -var _eachLimit2 = _interopRequireDefault(_eachLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time. - * - * @name eachSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.each]{@link module:Collections.each} - * @alias forEachSeries - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async function to apply to each - * item in `coll`. - * The array index is not passed to the iteratee. - * If you need the index, use `eachOfSeries`. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called when all - * `iteratee` functions have finished, or an error occurs. Invoked with (err). - */ -exports.default = (0, _doLimit2.default)(_eachLimit2.default, 1); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/ensureAsync.js b/node_modules/async/ensureAsync.js deleted file mode 100644 index 1f57aec..0000000 --- a/node_modules/async/ensureAsync.js +++ /dev/null @@ -1,73 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = ensureAsync; - -var _setImmediate = require('./internal/setImmediate'); - -var _setImmediate2 = _interopRequireDefault(_setImmediate); - -var _initialParams = require('./internal/initialParams'); - -var _initialParams2 = _interopRequireDefault(_initialParams); - -var _wrapAsync = require('./internal/wrapAsync'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Wrap an async function and ensure it calls its callback on a later tick of - * the event loop. If the function already calls its callback on a next tick, - * no extra deferral is added. This is useful for preventing stack overflows - * (`RangeError: Maximum call stack size exceeded`) and generally keeping - * [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) - * contained. ES2017 `async` functions are returned as-is -- they are immune - * to Zalgo's corrupting influences, as they always resolve on a later tick. - * - * @name ensureAsync - * @static - * @memberOf module:Utils - * @method - * @category Util - * @param {AsyncFunction} fn - an async function, one that expects a node-style - * callback as its last argument. - * @returns {AsyncFunction} Returns a wrapped function with the exact same call - * signature as the function passed in. - * @example - * - * function sometimesAsync(arg, callback) { - * if (cache[arg]) { - * return callback(null, cache[arg]); // this would be synchronous!! - * } else { - * doSomeIO(arg, callback); // this IO would be asynchronous - * } - * } - * - * // this has a risk of stack overflows if many results are cached in a row - * async.mapSeries(args, sometimesAsync, done); - * - * // this will defer sometimesAsync's callback if necessary, - * // preventing stack overflows - * async.mapSeries(args, async.ensureAsync(sometimesAsync), done); - */ -function ensureAsync(fn) { - if ((0, _wrapAsync.isAsync)(fn)) return fn; - return (0, _initialParams2.default)(function (args, callback) { - var sync = true; - args.push(function () { - var innerArgs = arguments; - if (sync) { - (0, _setImmediate2.default)(function () { - callback.apply(null, innerArgs); - }); - } else { - callback.apply(null, innerArgs); - } - }); - fn.apply(this, args); - sync = false; - }); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/every.js b/node_modules/async/every.js deleted file mode 100644 index d0565b0..0000000 --- a/node_modules/async/every.js +++ /dev/null @@ -1,50 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createTester = require('./internal/createTester'); - -var _createTester2 = _interopRequireDefault(_createTester); - -var _doParallel = require('./internal/doParallel'); - -var _doParallel2 = _interopRequireDefault(_doParallel); - -var _notId = require('./internal/notId'); - -var _notId2 = _interopRequireDefault(_notId); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Returns `true` if every element in `coll` satisfies an async test. If any - * iteratee call returns `false`, the main `callback` is immediately called. - * - * @name every - * @static - * @memberOf module:Collections - * @method - * @alias all - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collection in parallel. - * The iteratee must complete with a boolean result value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result will be either `true` or `false` - * depending on the values of the async tests. Invoked with (err, result). - * @example - * - * async.every(['file1','file2','file3'], function(filePath, callback) { - * fs.access(filePath, function(err) { - * callback(null, !err) - * }); - * }, function(err, result) { - * // if result is true then every file exists - * }); - */ -exports.default = (0, _doParallel2.default)((0, _createTester2.default)(_notId2.default, _notId2.default)); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/everyLimit.js b/node_modules/async/everyLimit.js deleted file mode 100644 index a1a759a..0000000 --- a/node_modules/async/everyLimit.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createTester = require('./internal/createTester'); - -var _createTester2 = _interopRequireDefault(_createTester); - -var _doParallelLimit = require('./internal/doParallelLimit'); - -var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit); - -var _notId = require('./internal/notId'); - -var _notId2 = _interopRequireDefault(_notId); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time. - * - * @name everyLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.every]{@link module:Collections.every} - * @alias allLimit - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collection in parallel. - * The iteratee must complete with a boolean result value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result will be either `true` or `false` - * depending on the values of the async tests. Invoked with (err, result). - */ -exports.default = (0, _doParallelLimit2.default)((0, _createTester2.default)(_notId2.default, _notId2.default)); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/everySeries.js b/node_modules/async/everySeries.js deleted file mode 100644 index 23bfebb..0000000 --- a/node_modules/async/everySeries.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _everyLimit = require('./everyLimit'); - -var _everyLimit2 = _interopRequireDefault(_everyLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time. - * - * @name everySeries - * @static - * @memberOf module:Collections - * @method - * @see [async.every]{@link module:Collections.every} - * @alias allSeries - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collection in series. - * The iteratee must complete with a boolean result value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result will be either `true` or `false` - * depending on the values of the async tests. Invoked with (err, result). - */ -exports.default = (0, _doLimit2.default)(_everyLimit2.default, 1); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/filter.js b/node_modules/async/filter.js deleted file mode 100644 index 54772d5..0000000 --- a/node_modules/async/filter.js +++ /dev/null @@ -1,45 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _filter = require('./internal/filter'); - -var _filter2 = _interopRequireDefault(_filter); - -var _doParallel = require('./internal/doParallel'); - -var _doParallel2 = _interopRequireDefault(_doParallel); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Returns a new array of all the values in `coll` which pass an async truth - * test. This operation is performed in parallel, but the results array will be - * in the same order as the original. - * - * @name filter - * @static - * @memberOf module:Collections - * @method - * @alias select - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A truth test to apply to each item in `coll`. - * The `iteratee` is passed a `callback(err, truthValue)`, which must be called - * with a boolean argument once it has completed. Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Invoked with (err, results). - * @example - * - * async.filter(['file1','file2','file3'], function(filePath, callback) { - * fs.access(filePath, function(err) { - * callback(null, !err) - * }); - * }, function(err, results) { - * // results now equals an array of the existing files - * }); - */ -exports.default = (0, _doParallel2.default)(_filter2.default); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/filterLimit.js b/node_modules/async/filterLimit.js deleted file mode 100644 index 06216f7..0000000 --- a/node_modules/async/filterLimit.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _filter = require('./internal/filter'); - -var _filter2 = _interopRequireDefault(_filter); - -var _doParallelLimit = require('./internal/doParallelLimit'); - -var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a - * time. - * - * @name filterLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.filter]{@link module:Collections.filter} - * @alias selectLimit - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {Function} iteratee - A truth test to apply to each item in `coll`. - * The `iteratee` is passed a `callback(err, truthValue)`, which must be called - * with a boolean argument once it has completed. Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Invoked with (err, results). - */ -exports.default = (0, _doParallelLimit2.default)(_filter2.default); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/filterSeries.js b/node_modules/async/filterSeries.js deleted file mode 100644 index e48d966..0000000 --- a/node_modules/async/filterSeries.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _filterLimit = require('./filterLimit'); - -var _filterLimit2 = _interopRequireDefault(_filterLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time. - * - * @name filterSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.filter]{@link module:Collections.filter} - * @alias selectSeries - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A truth test to apply to each item in `coll`. - * The `iteratee` is passed a `callback(err, truthValue)`, which must be called - * with a boolean argument once it has completed. Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Invoked with (err, results) - */ -exports.default = (0, _doLimit2.default)(_filterLimit2.default, 1); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/find.js b/node_modules/async/find.js deleted file mode 100644 index db46783..0000000 --- a/node_modules/async/find.js +++ /dev/null @@ -1,61 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _identity = require('lodash/identity'); - -var _identity2 = _interopRequireDefault(_identity); - -var _createTester = require('./internal/createTester'); - -var _createTester2 = _interopRequireDefault(_createTester); - -var _doParallel = require('./internal/doParallel'); - -var _doParallel2 = _interopRequireDefault(_doParallel); - -var _findGetResult = require('./internal/findGetResult'); - -var _findGetResult2 = _interopRequireDefault(_findGetResult); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Returns the first value in `coll` that passes an async truth test. The - * `iteratee` is applied in parallel, meaning the first iteratee to return - * `true` will fire the detect `callback` with that result. That means the - * result might not be the first item in the original `coll` (in terms of order) - * that passes the test. - - * If order within the original `coll` is important, then look at - * [`detectSeries`]{@link module:Collections.detectSeries}. - * - * @name detect - * @static - * @memberOf module:Collections - * @method - * @alias find - * @category Collections - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. - * The iteratee must complete with a boolean value as its result. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called as soon as any - * iteratee returns `true`, or after all the `iteratee` functions have finished. - * Result will be the first item in the array that passes the truth test - * (iteratee) or the value `undefined` if none passed. Invoked with - * (err, result). - * @example - * - * async.detect(['file1','file2','file3'], function(filePath, callback) { - * fs.access(filePath, function(err) { - * callback(null, !err) - * }); - * }, function(err, result) { - * // result now equals the first file in the list that exists - * }); - */ -exports.default = (0, _doParallel2.default)((0, _createTester2.default)(_identity2.default, _findGetResult2.default)); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/findLimit.js b/node_modules/async/findLimit.js deleted file mode 100644 index 6bf6560..0000000 --- a/node_modules/async/findLimit.js +++ /dev/null @@ -1,48 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _identity = require('lodash/identity'); - -var _identity2 = _interopRequireDefault(_identity); - -var _createTester = require('./internal/createTester'); - -var _createTester2 = _interopRequireDefault(_createTester); - -var _doParallelLimit = require('./internal/doParallelLimit'); - -var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit); - -var _findGetResult = require('./internal/findGetResult'); - -var _findGetResult2 = _interopRequireDefault(_findGetResult); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`detect`]{@link module:Collections.detect} but runs a maximum of `limit` async operations at a - * time. - * - * @name detectLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.detect]{@link module:Collections.detect} - * @alias findLimit - * @category Collections - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. - * The iteratee must complete with a boolean value as its result. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called as soon as any - * iteratee returns `true`, or after all the `iteratee` functions have finished. - * Result will be the first item in the array that passes the truth test - * (iteratee) or the value `undefined` if none passed. Invoked with - * (err, result). - */ -exports.default = (0, _doParallelLimit2.default)((0, _createTester2.default)(_identity2.default, _findGetResult2.default)); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/findSeries.js b/node_modules/async/findSeries.js deleted file mode 100644 index 6fe16c9..0000000 --- a/node_modules/async/findSeries.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _detectLimit = require('./detectLimit'); - -var _detectLimit2 = _interopRequireDefault(_detectLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time. - * - * @name detectSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.detect]{@link module:Collections.detect} - * @alias findSeries - * @category Collections - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. - * The iteratee must complete with a boolean value as its result. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called as soon as any - * iteratee returns `true`, or after all the `iteratee` functions have finished. - * Result will be the first item in the array that passes the truth test - * (iteratee) or the value `undefined` if none passed. Invoked with - * (err, result). - */ -exports.default = (0, _doLimit2.default)(_detectLimit2.default, 1); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/foldl.js b/node_modules/async/foldl.js deleted file mode 100644 index 3fb8019..0000000 --- a/node_modules/async/foldl.js +++ /dev/null @@ -1,78 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = reduce; - -var _eachOfSeries = require('./eachOfSeries'); - -var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _once = require('./internal/once'); - -var _once2 = _interopRequireDefault(_once); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Reduces `coll` into a single value using an async `iteratee` to return each - * successive step. `memo` is the initial state of the reduction. This function - * only operates in series. - * - * For performance reasons, it may make sense to split a call to this function - * into a parallel map, and then use the normal `Array.prototype.reduce` on the - * results. This function is for situations where each step in the reduction - * needs to be async; if you can get the data before reducing it, then it's - * probably a good idea to do so. - * - * @name reduce - * @static - * @memberOf module:Collections - * @method - * @alias inject - * @alias foldl - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {*} memo - The initial state of the reduction. - * @param {AsyncFunction} iteratee - A function applied to each item in the - * array to produce the next step in the reduction. - * The `iteratee` should complete with the next state of the reduction. - * If the iteratee complete with an error, the reduction is stopped and the - * main `callback` is immediately called with the error. - * Invoked with (memo, item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result is the reduced value. Invoked with - * (err, result). - * @example - * - * async.reduce([1,2,3], 0, function(memo, item, callback) { - * // pointless async: - * process.nextTick(function() { - * callback(null, memo + item) - * }); - * }, function(err, result) { - * // result is now equal to the last value of memo, which is 6 - * }); - */ -function reduce(coll, memo, iteratee, callback) { - callback = (0, _once2.default)(callback || _noop2.default); - var _iteratee = (0, _wrapAsync2.default)(iteratee); - (0, _eachOfSeries2.default)(coll, function (x, i, callback) { - _iteratee(memo, x, function (err, v) { - memo = v; - callback(err); - }); - }, function (err) { - callback(err, memo); - }); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/foldr.js b/node_modules/async/foldr.js deleted file mode 100644 index 3d17d32..0000000 --- a/node_modules/async/foldr.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = reduceRight; - -var _reduce = require('./reduce'); - -var _reduce2 = _interopRequireDefault(_reduce); - -var _slice = require('./internal/slice'); - -var _slice2 = _interopRequireDefault(_slice); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order. - * - * @name reduceRight - * @static - * @memberOf module:Collections - * @method - * @see [async.reduce]{@link module:Collections.reduce} - * @alias foldr - * @category Collection - * @param {Array} array - A collection to iterate over. - * @param {*} memo - The initial state of the reduction. - * @param {AsyncFunction} iteratee - A function applied to each item in the - * array to produce the next step in the reduction. - * The `iteratee` should complete with the next state of the reduction. - * If the iteratee complete with an error, the reduction is stopped and the - * main `callback` is immediately called with the error. - * Invoked with (memo, item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result is the reduced value. Invoked with - * (err, result). - */ -function reduceRight(array, memo, iteratee, callback) { - var reversed = (0, _slice2.default)(array).reverse(); - (0, _reduce2.default)(reversed, memo, iteratee, callback); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/forEach.js b/node_modules/async/forEach.js deleted file mode 100644 index 4b20af3..0000000 --- a/node_modules/async/forEach.js +++ /dev/null @@ -1,82 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = eachLimit; - -var _eachOf = require('./eachOf'); - -var _eachOf2 = _interopRequireDefault(_eachOf); - -var _withoutIndex = require('./internal/withoutIndex'); - -var _withoutIndex2 = _interopRequireDefault(_withoutIndex); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Applies the function `iteratee` to each item in `coll`, in parallel. - * The `iteratee` is called with an item from the list, and a callback for when - * it has finished. If the `iteratee` passes an error to its `callback`, the - * main `callback` (for the `each` function) is immediately called with the - * error. - * - * Note, that since this function applies `iteratee` to each item in parallel, - * there is no guarantee that the iteratee functions will complete in order. - * - * @name each - * @static - * @memberOf module:Collections - * @method - * @alias forEach - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async function to apply to - * each item in `coll`. Invoked with (item, callback). - * The array index is not passed to the iteratee. - * If you need the index, use `eachOf`. - * @param {Function} [callback] - A callback which is called when all - * `iteratee` functions have finished, or an error occurs. Invoked with (err). - * @example - * - * // assuming openFiles is an array of file names and saveFile is a function - * // to save the modified contents of that file: - * - * async.each(openFiles, saveFile, function(err){ - * // if any of the saves produced an error, err would equal that error - * }); - * - * // assuming openFiles is an array of file names - * async.each(openFiles, function(file, callback) { - * - * // Perform operation on file here. - * console.log('Processing file ' + file); - * - * if( file.length > 32 ) { - * console.log('This file name is too long'); - * callback('File name too long'); - * } else { - * // Do work to process file here - * console.log('File processed'); - * callback(); - * } - * }, function(err) { - * // if any of the file processing produced an error, err would equal that error - * if( err ) { - * // One of the iterations produced an error. - * // All processing will now stop. - * console.log('A file failed to process'); - * } else { - * console.log('All files have been processed successfully'); - * } - * }); - */ -function eachLimit(coll, iteratee, callback) { - (0, _eachOf2.default)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/forEachLimit.js b/node_modules/async/forEachLimit.js deleted file mode 100644 index fff721b..0000000 --- a/node_modules/async/forEachLimit.js +++ /dev/null @@ -1,45 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = eachLimit; - -var _eachOfLimit = require('./internal/eachOfLimit'); - -var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); - -var _withoutIndex = require('./internal/withoutIndex'); - -var _withoutIndex2 = _interopRequireDefault(_withoutIndex); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time. - * - * @name eachLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.each]{@link module:Collections.each} - * @alias forEachLimit - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The array index is not passed to the iteratee. - * If you need the index, use `eachOfLimit`. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called when all - * `iteratee` functions have finished, or an error occurs. Invoked with (err). - */ -function eachLimit(coll, limit, iteratee, callback) { - (0, _eachOfLimit2.default)(limit)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/forEachOf.js b/node_modules/async/forEachOf.js deleted file mode 100644 index 055b9bd..0000000 --- a/node_modules/async/forEachOf.js +++ /dev/null @@ -1,111 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -exports.default = function (coll, iteratee, callback) { - var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric; - eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback); -}; - -var _isArrayLike = require('lodash/isArrayLike'); - -var _isArrayLike2 = _interopRequireDefault(_isArrayLike); - -var _breakLoop = require('./internal/breakLoop'); - -var _breakLoop2 = _interopRequireDefault(_breakLoop); - -var _eachOfLimit = require('./eachOfLimit'); - -var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _once = require('./internal/once'); - -var _once2 = _interopRequireDefault(_once); - -var _onlyOnce = require('./internal/onlyOnce'); - -var _onlyOnce2 = _interopRequireDefault(_onlyOnce); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// eachOf implementation optimized for array-likes -function eachOfArrayLike(coll, iteratee, callback) { - callback = (0, _once2.default)(callback || _noop2.default); - var index = 0, - completed = 0, - length = coll.length; - if (length === 0) { - callback(null); - } - - function iteratorCallback(err, value) { - if (err) { - callback(err); - } else if (++completed === length || value === _breakLoop2.default) { - callback(null); - } - } - - for (; index < length; index++) { - iteratee(coll[index], index, (0, _onlyOnce2.default)(iteratorCallback)); - } -} - -// a generic version of eachOf which can handle array, object, and iterator cases. -var eachOfGeneric = (0, _doLimit2.default)(_eachOfLimit2.default, Infinity); - -/** - * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument - * to the iteratee. - * - * @name eachOf - * @static - * @memberOf module:Collections - * @method - * @alias forEachOf - * @category Collection - * @see [async.each]{@link module:Collections.each} - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - A function to apply to each - * item in `coll`. - * The `key` is the item's key, or index in the case of an array. - * Invoked with (item, key, callback). - * @param {Function} [callback] - A callback which is called when all - * `iteratee` functions have finished, or an error occurs. Invoked with (err). - * @example - * - * var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"}; - * var configs = {}; - * - * async.forEachOf(obj, function (value, key, callback) { - * fs.readFile(__dirname + value, "utf8", function (err, data) { - * if (err) return callback(err); - * try { - * configs[key] = JSON.parse(data); - * } catch (e) { - * return callback(e); - * } - * callback(); - * }); - * }, function (err) { - * if (err) console.error(err.message); - * // configs is now a map of JSON data - * doSomethingWith(configs); - * }); - */ -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/forEachOfLimit.js b/node_modules/async/forEachOfLimit.js deleted file mode 100644 index 30a1329..0000000 --- a/node_modules/async/forEachOfLimit.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = eachOfLimit; - -var _eachOfLimit2 = require('./internal/eachOfLimit'); - -var _eachOfLimit3 = _interopRequireDefault(_eachOfLimit2); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a - * time. - * - * @name eachOfLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.eachOf]{@link module:Collections.eachOf} - * @alias forEachOfLimit - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async function to apply to each - * item in `coll`. The `key` is the item's key, or index in the case of an - * array. - * Invoked with (item, key, callback). - * @param {Function} [callback] - A callback which is called when all - * `iteratee` functions have finished, or an error occurs. Invoked with (err). - */ -function eachOfLimit(coll, limit, iteratee, callback) { - (0, _eachOfLimit3.default)(limit)(coll, (0, _wrapAsync2.default)(iteratee), callback); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/forEachOfSeries.js b/node_modules/async/forEachOfSeries.js deleted file mode 100644 index 9dfd711..0000000 --- a/node_modules/async/forEachOfSeries.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _eachOfLimit = require('./eachOfLimit'); - -var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time. - * - * @name eachOfSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.eachOf]{@link module:Collections.eachOf} - * @alias forEachOfSeries - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * Invoked with (item, key, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. Invoked with (err). - */ -exports.default = (0, _doLimit2.default)(_eachOfLimit2.default, 1); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/forEachSeries.js b/node_modules/async/forEachSeries.js deleted file mode 100644 index 55c7840..0000000 --- a/node_modules/async/forEachSeries.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _eachLimit = require('./eachLimit'); - -var _eachLimit2 = _interopRequireDefault(_eachLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time. - * - * @name eachSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.each]{@link module:Collections.each} - * @alias forEachSeries - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async function to apply to each - * item in `coll`. - * The array index is not passed to the iteratee. - * If you need the index, use `eachOfSeries`. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called when all - * `iteratee` functions have finished, or an error occurs. Invoked with (err). - */ -exports.default = (0, _doLimit2.default)(_eachLimit2.default, 1); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/forever.js b/node_modules/async/forever.js deleted file mode 100644 index 6c7b8a4..0000000 --- a/node_modules/async/forever.js +++ /dev/null @@ -1,65 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = forever; - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _onlyOnce = require('./internal/onlyOnce'); - -var _onlyOnce2 = _interopRequireDefault(_onlyOnce); - -var _ensureAsync = require('./ensureAsync'); - -var _ensureAsync2 = _interopRequireDefault(_ensureAsync); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Calls the asynchronous function `fn` with a callback parameter that allows it - * to call itself again, in series, indefinitely. - - * If an error is passed to the callback then `errback` is called with the - * error, and execution stops, otherwise it will never be called. - * - * @name forever - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {AsyncFunction} fn - an async function to call repeatedly. - * Invoked with (next). - * @param {Function} [errback] - when `fn` passes an error to it's callback, - * this function will be called, and execution stops. Invoked with (err). - * @example - * - * async.forever( - * function(next) { - * // next is suitable for passing to things that need a callback(err [, whatever]); - * // it will result in this function being called again. - * }, - * function(err) { - * // if next is called with a value in its first parameter, it will appear - * // in here as 'err', and execution will stop. - * } - * ); - */ -function forever(fn, errback) { - var done = (0, _onlyOnce2.default)(errback || _noop2.default); - var task = (0, _wrapAsync2.default)((0, _ensureAsync2.default)(fn)); - - function next(err) { - if (err) return done(err); - task(next); - } - next(); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/groupBy.js b/node_modules/async/groupBy.js deleted file mode 100644 index 755cba7..0000000 --- a/node_modules/async/groupBy.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -var _groupByLimit = require('./groupByLimit'); - -var _groupByLimit2 = _interopRequireDefault(_groupByLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Returns a new object, where each value corresponds to an array of items, from - * `coll`, that returned the corresponding key. That is, the keys of the object - * correspond to the values passed to the `iteratee` callback. - * - * Note: Since this function applies the `iteratee` to each item in parallel, - * there is no guarantee that the `iteratee` functions will complete in order. - * However, the values for each key in the `result` will be in the same order as - * the original `coll`. For Objects, the values will roughly be in the order of - * the original Objects' keys (but this can vary across JavaScript engines). - * - * @name groupBy - * @static - * @memberOf module:Collections - * @method - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The iteratee should complete with a `key` to group the value under. - * Invoked with (value, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. Result is an `Object` whoses - * properties are arrays of values which returned the corresponding key. - * @example - * - * async.groupBy(['userId1', 'userId2', 'userId3'], function(userId, callback) { - * db.findById(userId, function(err, user) { - * if (err) return callback(err); - * return callback(null, user.age); - * }); - * }, function(err, result) { - * // result is object containing the userIds grouped by age - * // e.g. { 30: ['userId1', 'userId3'], 42: ['userId2']}; - * }); - */ -exports.default = (0, _doLimit2.default)(_groupByLimit2.default, Infinity); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/groupByLimit.js b/node_modules/async/groupByLimit.js deleted file mode 100644 index fec13f8..0000000 --- a/node_modules/async/groupByLimit.js +++ /dev/null @@ -1,71 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -exports.default = function (coll, limit, iteratee, callback) { - callback = callback || _noop2.default; - var _iteratee = (0, _wrapAsync2.default)(iteratee); - (0, _mapLimit2.default)(coll, limit, function (val, callback) { - _iteratee(val, function (err, key) { - if (err) return callback(err); - return callback(null, { key: key, val: val }); - }); - }, function (err, mapResults) { - var result = {}; - // from MDN, handle object having an `hasOwnProperty` prop - var hasOwnProperty = Object.prototype.hasOwnProperty; - - for (var i = 0; i < mapResults.length; i++) { - if (mapResults[i]) { - var key = mapResults[i].key; - var val = mapResults[i].val; - - if (hasOwnProperty.call(result, key)) { - result[key].push(val); - } else { - result[key] = [val]; - } - } - } - - return callback(err, result); - }); -}; - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _mapLimit = require('./mapLimit'); - -var _mapLimit2 = _interopRequireDefault(_mapLimit); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -; -/** - * The same as [`groupBy`]{@link module:Collections.groupBy} but runs a maximum of `limit` async operations at a time. - * - * @name groupByLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.groupBy]{@link module:Collections.groupBy} - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The iteratee should complete with a `key` to group the value under. - * Invoked with (value, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. Result is an `Object` whoses - * properties are arrays of values which returned the corresponding key. - */ -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/groupBySeries.js b/node_modules/async/groupBySeries.js deleted file mode 100644 index b94805e..0000000 --- a/node_modules/async/groupBySeries.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -var _groupByLimit = require('./groupByLimit'); - -var _groupByLimit2 = _interopRequireDefault(_groupByLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`groupBy`]{@link module:Collections.groupBy} but runs only a single async operation at a time. - * - * @name groupBySeries - * @static - * @memberOf module:Collections - * @method - * @see [async.groupBy]{@link module:Collections.groupBy} - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The iteratee should complete with a `key` to group the value under. - * Invoked with (value, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. Result is an `Object` whoses - * properties are arrays of values which returned the corresponding key. - */ -exports.default = (0, _doLimit2.default)(_groupByLimit2.default, 1); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/index.js b/node_modules/async/index.js deleted file mode 100644 index c39d8d8..0000000 --- a/node_modules/async/index.js +++ /dev/null @@ -1,582 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.wrapSync = exports.selectSeries = exports.selectLimit = exports.select = exports.foldr = exports.foldl = exports.inject = exports.forEachOfLimit = exports.forEachOfSeries = exports.forEachOf = exports.forEachLimit = exports.forEachSeries = exports.forEach = exports.findSeries = exports.findLimit = exports.find = exports.anySeries = exports.anyLimit = exports.any = exports.allSeries = exports.allLimit = exports.all = exports.whilst = exports.waterfall = exports.until = exports.unmemoize = exports.tryEach = exports.transform = exports.timesSeries = exports.timesLimit = exports.times = exports.timeout = exports.sortBy = exports.someSeries = exports.someLimit = exports.some = exports.setImmediate = exports.series = exports.seq = exports.retryable = exports.retry = exports.rejectSeries = exports.rejectLimit = exports.reject = exports.reflectAll = exports.reflect = exports.reduceRight = exports.reduce = exports.race = exports.queue = exports.priorityQueue = exports.parallelLimit = exports.parallel = exports.nextTick = exports.memoize = exports.mapValuesSeries = exports.mapValuesLimit = exports.mapValues = exports.mapSeries = exports.mapLimit = exports.map = exports.log = exports.groupBySeries = exports.groupByLimit = exports.groupBy = exports.forever = exports.filterSeries = exports.filterLimit = exports.filter = exports.everySeries = exports.everyLimit = exports.every = exports.ensureAsync = exports.eachSeries = exports.eachOfSeries = exports.eachOfLimit = exports.eachOf = exports.eachLimit = exports.each = exports.during = exports.doWhilst = exports.doUntil = exports.doDuring = exports.dir = exports.detectSeries = exports.detectLimit = exports.detect = exports.constant = exports.concatSeries = exports.concatLimit = exports.concat = exports.compose = exports.cargo = exports.autoInject = exports.auto = exports.asyncify = exports.applyEachSeries = exports.applyEach = exports.apply = undefined; - -var _apply = require('./apply'); - -var _apply2 = _interopRequireDefault(_apply); - -var _applyEach = require('./applyEach'); - -var _applyEach2 = _interopRequireDefault(_applyEach); - -var _applyEachSeries = require('./applyEachSeries'); - -var _applyEachSeries2 = _interopRequireDefault(_applyEachSeries); - -var _asyncify = require('./asyncify'); - -var _asyncify2 = _interopRequireDefault(_asyncify); - -var _auto = require('./auto'); - -var _auto2 = _interopRequireDefault(_auto); - -var _autoInject = require('./autoInject'); - -var _autoInject2 = _interopRequireDefault(_autoInject); - -var _cargo = require('./cargo'); - -var _cargo2 = _interopRequireDefault(_cargo); - -var _compose = require('./compose'); - -var _compose2 = _interopRequireDefault(_compose); - -var _concat = require('./concat'); - -var _concat2 = _interopRequireDefault(_concat); - -var _concatLimit = require('./concatLimit'); - -var _concatLimit2 = _interopRequireDefault(_concatLimit); - -var _concatSeries = require('./concatSeries'); - -var _concatSeries2 = _interopRequireDefault(_concatSeries); - -var _constant = require('./constant'); - -var _constant2 = _interopRequireDefault(_constant); - -var _detect = require('./detect'); - -var _detect2 = _interopRequireDefault(_detect); - -var _detectLimit = require('./detectLimit'); - -var _detectLimit2 = _interopRequireDefault(_detectLimit); - -var _detectSeries = require('./detectSeries'); - -var _detectSeries2 = _interopRequireDefault(_detectSeries); - -var _dir = require('./dir'); - -var _dir2 = _interopRequireDefault(_dir); - -var _doDuring = require('./doDuring'); - -var _doDuring2 = _interopRequireDefault(_doDuring); - -var _doUntil = require('./doUntil'); - -var _doUntil2 = _interopRequireDefault(_doUntil); - -var _doWhilst = require('./doWhilst'); - -var _doWhilst2 = _interopRequireDefault(_doWhilst); - -var _during = require('./during'); - -var _during2 = _interopRequireDefault(_during); - -var _each = require('./each'); - -var _each2 = _interopRequireDefault(_each); - -var _eachLimit = require('./eachLimit'); - -var _eachLimit2 = _interopRequireDefault(_eachLimit); - -var _eachOf = require('./eachOf'); - -var _eachOf2 = _interopRequireDefault(_eachOf); - -var _eachOfLimit = require('./eachOfLimit'); - -var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); - -var _eachOfSeries = require('./eachOfSeries'); - -var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); - -var _eachSeries = require('./eachSeries'); - -var _eachSeries2 = _interopRequireDefault(_eachSeries); - -var _ensureAsync = require('./ensureAsync'); - -var _ensureAsync2 = _interopRequireDefault(_ensureAsync); - -var _every = require('./every'); - -var _every2 = _interopRequireDefault(_every); - -var _everyLimit = require('./everyLimit'); - -var _everyLimit2 = _interopRequireDefault(_everyLimit); - -var _everySeries = require('./everySeries'); - -var _everySeries2 = _interopRequireDefault(_everySeries); - -var _filter = require('./filter'); - -var _filter2 = _interopRequireDefault(_filter); - -var _filterLimit = require('./filterLimit'); - -var _filterLimit2 = _interopRequireDefault(_filterLimit); - -var _filterSeries = require('./filterSeries'); - -var _filterSeries2 = _interopRequireDefault(_filterSeries); - -var _forever = require('./forever'); - -var _forever2 = _interopRequireDefault(_forever); - -var _groupBy = require('./groupBy'); - -var _groupBy2 = _interopRequireDefault(_groupBy); - -var _groupByLimit = require('./groupByLimit'); - -var _groupByLimit2 = _interopRequireDefault(_groupByLimit); - -var _groupBySeries = require('./groupBySeries'); - -var _groupBySeries2 = _interopRequireDefault(_groupBySeries); - -var _log = require('./log'); - -var _log2 = _interopRequireDefault(_log); - -var _map = require('./map'); - -var _map2 = _interopRequireDefault(_map); - -var _mapLimit = require('./mapLimit'); - -var _mapLimit2 = _interopRequireDefault(_mapLimit); - -var _mapSeries = require('./mapSeries'); - -var _mapSeries2 = _interopRequireDefault(_mapSeries); - -var _mapValues = require('./mapValues'); - -var _mapValues2 = _interopRequireDefault(_mapValues); - -var _mapValuesLimit = require('./mapValuesLimit'); - -var _mapValuesLimit2 = _interopRequireDefault(_mapValuesLimit); - -var _mapValuesSeries = require('./mapValuesSeries'); - -var _mapValuesSeries2 = _interopRequireDefault(_mapValuesSeries); - -var _memoize = require('./memoize'); - -var _memoize2 = _interopRequireDefault(_memoize); - -var _nextTick = require('./nextTick'); - -var _nextTick2 = _interopRequireDefault(_nextTick); - -var _parallel = require('./parallel'); - -var _parallel2 = _interopRequireDefault(_parallel); - -var _parallelLimit = require('./parallelLimit'); - -var _parallelLimit2 = _interopRequireDefault(_parallelLimit); - -var _priorityQueue = require('./priorityQueue'); - -var _priorityQueue2 = _interopRequireDefault(_priorityQueue); - -var _queue = require('./queue'); - -var _queue2 = _interopRequireDefault(_queue); - -var _race = require('./race'); - -var _race2 = _interopRequireDefault(_race); - -var _reduce = require('./reduce'); - -var _reduce2 = _interopRequireDefault(_reduce); - -var _reduceRight = require('./reduceRight'); - -var _reduceRight2 = _interopRequireDefault(_reduceRight); - -var _reflect = require('./reflect'); - -var _reflect2 = _interopRequireDefault(_reflect); - -var _reflectAll = require('./reflectAll'); - -var _reflectAll2 = _interopRequireDefault(_reflectAll); - -var _reject = require('./reject'); - -var _reject2 = _interopRequireDefault(_reject); - -var _rejectLimit = require('./rejectLimit'); - -var _rejectLimit2 = _interopRequireDefault(_rejectLimit); - -var _rejectSeries = require('./rejectSeries'); - -var _rejectSeries2 = _interopRequireDefault(_rejectSeries); - -var _retry = require('./retry'); - -var _retry2 = _interopRequireDefault(_retry); - -var _retryable = require('./retryable'); - -var _retryable2 = _interopRequireDefault(_retryable); - -var _seq = require('./seq'); - -var _seq2 = _interopRequireDefault(_seq); - -var _series = require('./series'); - -var _series2 = _interopRequireDefault(_series); - -var _setImmediate = require('./setImmediate'); - -var _setImmediate2 = _interopRequireDefault(_setImmediate); - -var _some = require('./some'); - -var _some2 = _interopRequireDefault(_some); - -var _someLimit = require('./someLimit'); - -var _someLimit2 = _interopRequireDefault(_someLimit); - -var _someSeries = require('./someSeries'); - -var _someSeries2 = _interopRequireDefault(_someSeries); - -var _sortBy = require('./sortBy'); - -var _sortBy2 = _interopRequireDefault(_sortBy); - -var _timeout = require('./timeout'); - -var _timeout2 = _interopRequireDefault(_timeout); - -var _times = require('./times'); - -var _times2 = _interopRequireDefault(_times); - -var _timesLimit = require('./timesLimit'); - -var _timesLimit2 = _interopRequireDefault(_timesLimit); - -var _timesSeries = require('./timesSeries'); - -var _timesSeries2 = _interopRequireDefault(_timesSeries); - -var _transform = require('./transform'); - -var _transform2 = _interopRequireDefault(_transform); - -var _tryEach = require('./tryEach'); - -var _tryEach2 = _interopRequireDefault(_tryEach); - -var _unmemoize = require('./unmemoize'); - -var _unmemoize2 = _interopRequireDefault(_unmemoize); - -var _until = require('./until'); - -var _until2 = _interopRequireDefault(_until); - -var _waterfall = require('./waterfall'); - -var _waterfall2 = _interopRequireDefault(_waterfall); - -var _whilst = require('./whilst'); - -var _whilst2 = _interopRequireDefault(_whilst); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = { - apply: _apply2.default, - applyEach: _applyEach2.default, - applyEachSeries: _applyEachSeries2.default, - asyncify: _asyncify2.default, - auto: _auto2.default, - autoInject: _autoInject2.default, - cargo: _cargo2.default, - compose: _compose2.default, - concat: _concat2.default, - concatLimit: _concatLimit2.default, - concatSeries: _concatSeries2.default, - constant: _constant2.default, - detect: _detect2.default, - detectLimit: _detectLimit2.default, - detectSeries: _detectSeries2.default, - dir: _dir2.default, - doDuring: _doDuring2.default, - doUntil: _doUntil2.default, - doWhilst: _doWhilst2.default, - during: _during2.default, - each: _each2.default, - eachLimit: _eachLimit2.default, - eachOf: _eachOf2.default, - eachOfLimit: _eachOfLimit2.default, - eachOfSeries: _eachOfSeries2.default, - eachSeries: _eachSeries2.default, - ensureAsync: _ensureAsync2.default, - every: _every2.default, - everyLimit: _everyLimit2.default, - everySeries: _everySeries2.default, - filter: _filter2.default, - filterLimit: _filterLimit2.default, - filterSeries: _filterSeries2.default, - forever: _forever2.default, - groupBy: _groupBy2.default, - groupByLimit: _groupByLimit2.default, - groupBySeries: _groupBySeries2.default, - log: _log2.default, - map: _map2.default, - mapLimit: _mapLimit2.default, - mapSeries: _mapSeries2.default, - mapValues: _mapValues2.default, - mapValuesLimit: _mapValuesLimit2.default, - mapValuesSeries: _mapValuesSeries2.default, - memoize: _memoize2.default, - nextTick: _nextTick2.default, - parallel: _parallel2.default, - parallelLimit: _parallelLimit2.default, - priorityQueue: _priorityQueue2.default, - queue: _queue2.default, - race: _race2.default, - reduce: _reduce2.default, - reduceRight: _reduceRight2.default, - reflect: _reflect2.default, - reflectAll: _reflectAll2.default, - reject: _reject2.default, - rejectLimit: _rejectLimit2.default, - rejectSeries: _rejectSeries2.default, - retry: _retry2.default, - retryable: _retryable2.default, - seq: _seq2.default, - series: _series2.default, - setImmediate: _setImmediate2.default, - some: _some2.default, - someLimit: _someLimit2.default, - someSeries: _someSeries2.default, - sortBy: _sortBy2.default, - timeout: _timeout2.default, - times: _times2.default, - timesLimit: _timesLimit2.default, - timesSeries: _timesSeries2.default, - transform: _transform2.default, - tryEach: _tryEach2.default, - unmemoize: _unmemoize2.default, - until: _until2.default, - waterfall: _waterfall2.default, - whilst: _whilst2.default, - - // aliases - all: _every2.default, - allLimit: _everyLimit2.default, - allSeries: _everySeries2.default, - any: _some2.default, - anyLimit: _someLimit2.default, - anySeries: _someSeries2.default, - find: _detect2.default, - findLimit: _detectLimit2.default, - findSeries: _detectSeries2.default, - forEach: _each2.default, - forEachSeries: _eachSeries2.default, - forEachLimit: _eachLimit2.default, - forEachOf: _eachOf2.default, - forEachOfSeries: _eachOfSeries2.default, - forEachOfLimit: _eachOfLimit2.default, - inject: _reduce2.default, - foldl: _reduce2.default, - foldr: _reduceRight2.default, - select: _filter2.default, - selectLimit: _filterLimit2.default, - selectSeries: _filterSeries2.default, - wrapSync: _asyncify2.default -}; /** - * An "async function" in the context of Async is an asynchronous function with - * a variable number of parameters, with the final parameter being a callback. - * (`function (arg1, arg2, ..., callback) {}`) - * The final callback is of the form `callback(err, results...)`, which must be - * called once the function is completed. The callback should be called with a - * Error as its first argument to signal that an error occurred. - * Otherwise, if no error occurred, it should be called with `null` as the first - * argument, and any additional `result` arguments that may apply, to signal - * successful completion. - * The callback must be called exactly once, ideally on a later tick of the - * JavaScript event loop. - * - * This type of function is also referred to as a "Node-style async function", - * or a "continuation passing-style function" (CPS). Most of the methods of this - * library are themselves CPS/Node-style async functions, or functions that - * return CPS/Node-style async functions. - * - * Wherever we accept a Node-style async function, we also directly accept an - * [ES2017 `async` function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function}. - * In this case, the `async` function will not be passed a final callback - * argument, and any thrown error will be used as the `err` argument of the - * implicit callback, and the return value will be used as the `result` value. - * (i.e. a `rejected` of the returned Promise becomes the `err` callback - * argument, and a `resolved` value becomes the `result`.) - * - * Note, due to JavaScript limitations, we can only detect native `async` - * functions and not transpilied implementations. - * Your environment must have `async`/`await` support for this to work. - * (e.g. Node > v7.6, or a recent version of a modern browser). - * If you are using `async` functions through a transpiler (e.g. Babel), you - * must still wrap the function with [asyncify]{@link module:Utils.asyncify}, - * because the `async function` will be compiled to an ordinary function that - * returns a promise. - * - * @typedef {Function} AsyncFunction - * @static - */ - -/** - * Async is a utility module which provides straight-forward, powerful functions - * for working with asynchronous JavaScript. Although originally designed for - * use with [Node.js](http://nodejs.org) and installable via - * `npm install --save async`, it can also be used directly in the browser. - * @module async - * @see AsyncFunction - */ - -/** - * A collection of `async` functions for manipulating collections, such as - * arrays and objects. - * @module Collections - */ - -/** - * A collection of `async` functions for controlling the flow through a script. - * @module ControlFlow - */ - -/** - * A collection of `async` utility functions. - * @module Utils - */ - -exports.apply = _apply2.default; -exports.applyEach = _applyEach2.default; -exports.applyEachSeries = _applyEachSeries2.default; -exports.asyncify = _asyncify2.default; -exports.auto = _auto2.default; -exports.autoInject = _autoInject2.default; -exports.cargo = _cargo2.default; -exports.compose = _compose2.default; -exports.concat = _concat2.default; -exports.concatLimit = _concatLimit2.default; -exports.concatSeries = _concatSeries2.default; -exports.constant = _constant2.default; -exports.detect = _detect2.default; -exports.detectLimit = _detectLimit2.default; -exports.detectSeries = _detectSeries2.default; -exports.dir = _dir2.default; -exports.doDuring = _doDuring2.default; -exports.doUntil = _doUntil2.default; -exports.doWhilst = _doWhilst2.default; -exports.during = _during2.default; -exports.each = _each2.default; -exports.eachLimit = _eachLimit2.default; -exports.eachOf = _eachOf2.default; -exports.eachOfLimit = _eachOfLimit2.default; -exports.eachOfSeries = _eachOfSeries2.default; -exports.eachSeries = _eachSeries2.default; -exports.ensureAsync = _ensureAsync2.default; -exports.every = _every2.default; -exports.everyLimit = _everyLimit2.default; -exports.everySeries = _everySeries2.default; -exports.filter = _filter2.default; -exports.filterLimit = _filterLimit2.default; -exports.filterSeries = _filterSeries2.default; -exports.forever = _forever2.default; -exports.groupBy = _groupBy2.default; -exports.groupByLimit = _groupByLimit2.default; -exports.groupBySeries = _groupBySeries2.default; -exports.log = _log2.default; -exports.map = _map2.default; -exports.mapLimit = _mapLimit2.default; -exports.mapSeries = _mapSeries2.default; -exports.mapValues = _mapValues2.default; -exports.mapValuesLimit = _mapValuesLimit2.default; -exports.mapValuesSeries = _mapValuesSeries2.default; -exports.memoize = _memoize2.default; -exports.nextTick = _nextTick2.default; -exports.parallel = _parallel2.default; -exports.parallelLimit = _parallelLimit2.default; -exports.priorityQueue = _priorityQueue2.default; -exports.queue = _queue2.default; -exports.race = _race2.default; -exports.reduce = _reduce2.default; -exports.reduceRight = _reduceRight2.default; -exports.reflect = _reflect2.default; -exports.reflectAll = _reflectAll2.default; -exports.reject = _reject2.default; -exports.rejectLimit = _rejectLimit2.default; -exports.rejectSeries = _rejectSeries2.default; -exports.retry = _retry2.default; -exports.retryable = _retryable2.default; -exports.seq = _seq2.default; -exports.series = _series2.default; -exports.setImmediate = _setImmediate2.default; -exports.some = _some2.default; -exports.someLimit = _someLimit2.default; -exports.someSeries = _someSeries2.default; -exports.sortBy = _sortBy2.default; -exports.timeout = _timeout2.default; -exports.times = _times2.default; -exports.timesLimit = _timesLimit2.default; -exports.timesSeries = _timesSeries2.default; -exports.transform = _transform2.default; -exports.tryEach = _tryEach2.default; -exports.unmemoize = _unmemoize2.default; -exports.until = _until2.default; -exports.waterfall = _waterfall2.default; -exports.whilst = _whilst2.default; -exports.all = _every2.default; -exports.allLimit = _everyLimit2.default; -exports.allSeries = _everySeries2.default; -exports.any = _some2.default; -exports.anyLimit = _someLimit2.default; -exports.anySeries = _someSeries2.default; -exports.find = _detect2.default; -exports.findLimit = _detectLimit2.default; -exports.findSeries = _detectSeries2.default; -exports.forEach = _each2.default; -exports.forEachSeries = _eachSeries2.default; -exports.forEachLimit = _eachLimit2.default; -exports.forEachOf = _eachOf2.default; -exports.forEachOfSeries = _eachOfSeries2.default; -exports.forEachOfLimit = _eachOfLimit2.default; -exports.inject = _reduce2.default; -exports.foldl = _reduce2.default; -exports.foldr = _reduceRight2.default; -exports.select = _filter2.default; -exports.selectLimit = _filterLimit2.default; -exports.selectSeries = _filterSeries2.default; -exports.wrapSync = _asyncify2.default; \ No newline at end of file diff --git a/node_modules/async/inject.js b/node_modules/async/inject.js deleted file mode 100644 index 3fb8019..0000000 --- a/node_modules/async/inject.js +++ /dev/null @@ -1,78 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = reduce; - -var _eachOfSeries = require('./eachOfSeries'); - -var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _once = require('./internal/once'); - -var _once2 = _interopRequireDefault(_once); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Reduces `coll` into a single value using an async `iteratee` to return each - * successive step. `memo` is the initial state of the reduction. This function - * only operates in series. - * - * For performance reasons, it may make sense to split a call to this function - * into a parallel map, and then use the normal `Array.prototype.reduce` on the - * results. This function is for situations where each step in the reduction - * needs to be async; if you can get the data before reducing it, then it's - * probably a good idea to do so. - * - * @name reduce - * @static - * @memberOf module:Collections - * @method - * @alias inject - * @alias foldl - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {*} memo - The initial state of the reduction. - * @param {AsyncFunction} iteratee - A function applied to each item in the - * array to produce the next step in the reduction. - * The `iteratee` should complete with the next state of the reduction. - * If the iteratee complete with an error, the reduction is stopped and the - * main `callback` is immediately called with the error. - * Invoked with (memo, item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result is the reduced value. Invoked with - * (err, result). - * @example - * - * async.reduce([1,2,3], 0, function(memo, item, callback) { - * // pointless async: - * process.nextTick(function() { - * callback(null, memo + item) - * }); - * }, function(err, result) { - * // result is now equal to the last value of memo, which is 6 - * }); - */ -function reduce(coll, memo, iteratee, callback) { - callback = (0, _once2.default)(callback || _noop2.default); - var _iteratee = (0, _wrapAsync2.default)(iteratee); - (0, _eachOfSeries2.default)(coll, function (x, i, callback) { - _iteratee(memo, x, function (err, v) { - memo = v; - callback(err); - }); - }, function (err) { - callback(err, memo); - }); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/internal/DoublyLinkedList.js b/node_modules/async/internal/DoublyLinkedList.js deleted file mode 100644 index 7e71728..0000000 --- a/node_modules/async/internal/DoublyLinkedList.js +++ /dev/null @@ -1,88 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = DLL; -// Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation -// used for queues. This implementation assumes that the node provided by the user can be modified -// to adjust the next and last properties. We implement only the minimal functionality -// for queue support. -function DLL() { - this.head = this.tail = null; - this.length = 0; -} - -function setInitial(dll, node) { - dll.length = 1; - dll.head = dll.tail = node; -} - -DLL.prototype.removeLink = function (node) { - if (node.prev) node.prev.next = node.next;else this.head = node.next; - if (node.next) node.next.prev = node.prev;else this.tail = node.prev; - - node.prev = node.next = null; - this.length -= 1; - return node; -}; - -DLL.prototype.empty = function () { - while (this.head) this.shift(); - return this; -}; - -DLL.prototype.insertAfter = function (node, newNode) { - newNode.prev = node; - newNode.next = node.next; - if (node.next) node.next.prev = newNode;else this.tail = newNode; - node.next = newNode; - this.length += 1; -}; - -DLL.prototype.insertBefore = function (node, newNode) { - newNode.prev = node.prev; - newNode.next = node; - if (node.prev) node.prev.next = newNode;else this.head = newNode; - node.prev = newNode; - this.length += 1; -}; - -DLL.prototype.unshift = function (node) { - if (this.head) this.insertBefore(this.head, node);else setInitial(this, node); -}; - -DLL.prototype.push = function (node) { - if (this.tail) this.insertAfter(this.tail, node);else setInitial(this, node); -}; - -DLL.prototype.shift = function () { - return this.head && this.removeLink(this.head); -}; - -DLL.prototype.pop = function () { - return this.tail && this.removeLink(this.tail); -}; - -DLL.prototype.toArray = function () { - var arr = Array(this.length); - var curr = this.head; - for (var idx = 0; idx < this.length; idx++) { - arr[idx] = curr.data; - curr = curr.next; - } - return arr; -}; - -DLL.prototype.remove = function (testFn) { - var curr = this.head; - while (!!curr) { - var next = curr.next; - if (testFn(curr)) { - this.removeLink(curr); - } - curr = next; - } - return this; -}; -module.exports = exports["default"]; \ No newline at end of file diff --git a/node_modules/async/internal/applyEach.js b/node_modules/async/internal/applyEach.js deleted file mode 100644 index 322e03c..0000000 --- a/node_modules/async/internal/applyEach.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = applyEach; - -var _slice = require('./slice'); - -var _slice2 = _interopRequireDefault(_slice); - -var _initialParams = require('./initialParams'); - -var _initialParams2 = _interopRequireDefault(_initialParams); - -var _wrapAsync = require('./wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function applyEach(eachfn) { - return function (fns /*, ...args*/) { - var args = (0, _slice2.default)(arguments, 1); - var go = (0, _initialParams2.default)(function (args, callback) { - var that = this; - return eachfn(fns, function (fn, cb) { - (0, _wrapAsync2.default)(fn).apply(that, args.concat(cb)); - }, callback); - }); - if (args.length) { - return go.apply(this, args); - } else { - return go; - } - }; -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/internal/breakLoop.js b/node_modules/async/internal/breakLoop.js deleted file mode 100644 index 1065058..0000000 --- a/node_modules/async/internal/breakLoop.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -// A temporary value used to identify if the loop should be broken. -// See #1064, #1293 -exports.default = {}; -module.exports = exports["default"]; \ No newline at end of file diff --git a/node_modules/async/internal/consoleFunc.js b/node_modules/async/internal/consoleFunc.js deleted file mode 100644 index 603f48e..0000000 --- a/node_modules/async/internal/consoleFunc.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = consoleFunc; - -var _arrayEach = require('lodash/_arrayEach'); - -var _arrayEach2 = _interopRequireDefault(_arrayEach); - -var _slice = require('./slice'); - -var _slice2 = _interopRequireDefault(_slice); - -var _wrapAsync = require('./wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function consoleFunc(name) { - return function (fn /*, ...args*/) { - var args = (0, _slice2.default)(arguments, 1); - args.push(function (err /*, ...args*/) { - var args = (0, _slice2.default)(arguments, 1); - if (typeof console === 'object') { - if (err) { - if (console.error) { - console.error(err); - } - } else if (console[name]) { - (0, _arrayEach2.default)(args, function (x) { - console[name](x); - }); - } - } - }); - (0, _wrapAsync2.default)(fn).apply(null, args); - }; -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/internal/createTester.js b/node_modules/async/internal/createTester.js deleted file mode 100644 index ce96e8b..0000000 --- a/node_modules/async/internal/createTester.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = _createTester; - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _breakLoop = require('./breakLoop'); - -var _breakLoop2 = _interopRequireDefault(_breakLoop); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _createTester(check, getResult) { - return function (eachfn, arr, iteratee, cb) { - cb = cb || _noop2.default; - var testPassed = false; - var testResult; - eachfn(arr, function (value, _, callback) { - iteratee(value, function (err, result) { - if (err) { - callback(err); - } else if (check(result) && !testResult) { - testPassed = true; - testResult = getResult(true, value); - callback(null, _breakLoop2.default); - } else { - callback(); - } - }); - }, function (err) { - if (err) { - cb(err); - } else { - cb(null, testPassed ? testResult : getResult(false)); - } - }); - }; -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/internal/doLimit.js b/node_modules/async/internal/doLimit.js deleted file mode 100644 index 963c608..0000000 --- a/node_modules/async/internal/doLimit.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = doLimit; -function doLimit(fn, limit) { - return function (iterable, iteratee, callback) { - return fn(iterable, limit, iteratee, callback); - }; -} -module.exports = exports["default"]; \ No newline at end of file diff --git a/node_modules/async/internal/doParallel.js b/node_modules/async/internal/doParallel.js deleted file mode 100644 index bb40207..0000000 --- a/node_modules/async/internal/doParallel.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = doParallel; - -var _eachOf = require('../eachOf'); - -var _eachOf2 = _interopRequireDefault(_eachOf); - -var _wrapAsync = require('./wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function doParallel(fn) { - return function (obj, iteratee, callback) { - return fn(_eachOf2.default, obj, (0, _wrapAsync2.default)(iteratee), callback); - }; -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/internal/doParallelLimit.js b/node_modules/async/internal/doParallelLimit.js deleted file mode 100644 index a7e963d..0000000 --- a/node_modules/async/internal/doParallelLimit.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = doParallelLimit; - -var _eachOfLimit = require('./eachOfLimit'); - -var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); - -var _wrapAsync = require('./wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function doParallelLimit(fn) { - return function (obj, limit, iteratee, callback) { - return fn((0, _eachOfLimit2.default)(limit), obj, (0, _wrapAsync2.default)(iteratee), callback); - }; -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/internal/eachOfLimit.js b/node_modules/async/internal/eachOfLimit.js deleted file mode 100644 index 6f6fe55..0000000 --- a/node_modules/async/internal/eachOfLimit.js +++ /dev/null @@ -1,74 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = _eachOfLimit; - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _once = require('./once'); - -var _once2 = _interopRequireDefault(_once); - -var _iterator = require('./iterator'); - -var _iterator2 = _interopRequireDefault(_iterator); - -var _onlyOnce = require('./onlyOnce'); - -var _onlyOnce2 = _interopRequireDefault(_onlyOnce); - -var _breakLoop = require('./breakLoop'); - -var _breakLoop2 = _interopRequireDefault(_breakLoop); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _eachOfLimit(limit) { - return function (obj, iteratee, callback) { - callback = (0, _once2.default)(callback || _noop2.default); - if (limit <= 0 || !obj) { - return callback(null); - } - var nextElem = (0, _iterator2.default)(obj); - var done = false; - var running = 0; - var looping = false; - - function iterateeCallback(err, value) { - running -= 1; - if (err) { - done = true; - callback(err); - } else if (value === _breakLoop2.default || done && running <= 0) { - done = true; - return callback(null); - } else if (!looping) { - replenish(); - } - } - - function replenish() { - looping = true; - while (running < limit && !done) { - var elem = nextElem(); - if (elem === null) { - done = true; - if (running <= 0) { - callback(null); - } - return; - } - running += 1; - iteratee(elem.value, elem.key, (0, _onlyOnce2.default)(iterateeCallback)); - } - looping = false; - } - - replenish(); - }; -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/internal/filter.js b/node_modules/async/internal/filter.js deleted file mode 100644 index 74f3986..0000000 --- a/node_modules/async/internal/filter.js +++ /dev/null @@ -1,75 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = _filter; - -var _arrayMap = require('lodash/_arrayMap'); - -var _arrayMap2 = _interopRequireDefault(_arrayMap); - -var _isArrayLike = require('lodash/isArrayLike'); - -var _isArrayLike2 = _interopRequireDefault(_isArrayLike); - -var _baseProperty = require('lodash/_baseProperty'); - -var _baseProperty2 = _interopRequireDefault(_baseProperty); - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _wrapAsync = require('./wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function filterArray(eachfn, arr, iteratee, callback) { - var truthValues = new Array(arr.length); - eachfn(arr, function (x, index, callback) { - iteratee(x, function (err, v) { - truthValues[index] = !!v; - callback(err); - }); - }, function (err) { - if (err) return callback(err); - var results = []; - for (var i = 0; i < arr.length; i++) { - if (truthValues[i]) results.push(arr[i]); - } - callback(null, results); - }); -} - -function filterGeneric(eachfn, coll, iteratee, callback) { - var results = []; - eachfn(coll, function (x, index, callback) { - iteratee(x, function (err, v) { - if (err) { - callback(err); - } else { - if (v) { - results.push({ index: index, value: x }); - } - callback(); - } - }); - }, function (err) { - if (err) { - callback(err); - } else { - callback(null, (0, _arrayMap2.default)(results.sort(function (a, b) { - return a.index - b.index; - }), (0, _baseProperty2.default)('value'))); - } - }); -} - -function _filter(eachfn, coll, iteratee, callback) { - var filter = (0, _isArrayLike2.default)(coll) ? filterArray : filterGeneric; - filter(eachfn, coll, (0, _wrapAsync2.default)(iteratee), callback || _noop2.default); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/internal/findGetResult.js b/node_modules/async/internal/findGetResult.js deleted file mode 100644 index f8d3fe0..0000000 --- a/node_modules/async/internal/findGetResult.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = _findGetResult; -function _findGetResult(v, x) { - return x; -} -module.exports = exports["default"]; \ No newline at end of file diff --git a/node_modules/async/internal/getIterator.js b/node_modules/async/internal/getIterator.js deleted file mode 100644 index 3eadd24..0000000 --- a/node_modules/async/internal/getIterator.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -exports.default = function (coll) { - return iteratorSymbol && coll[iteratorSymbol] && coll[iteratorSymbol](); -}; - -var iteratorSymbol = typeof Symbol === 'function' && Symbol.iterator; - -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/internal/initialParams.js b/node_modules/async/internal/initialParams.js deleted file mode 100644 index df02cb1..0000000 --- a/node_modules/async/internal/initialParams.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -exports.default = function (fn) { - return function () /*...args, callback*/{ - var args = (0, _slice2.default)(arguments); - var callback = args.pop(); - fn.call(this, args, callback); - }; -}; - -var _slice = require('./slice'); - -var _slice2 = _interopRequireDefault(_slice); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/internal/iterator.js b/node_modules/async/internal/iterator.js deleted file mode 100644 index 3d32942..0000000 --- a/node_modules/async/internal/iterator.js +++ /dev/null @@ -1,58 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = iterator; - -var _isArrayLike = require('lodash/isArrayLike'); - -var _isArrayLike2 = _interopRequireDefault(_isArrayLike); - -var _getIterator = require('./getIterator'); - -var _getIterator2 = _interopRequireDefault(_getIterator); - -var _keys = require('lodash/keys'); - -var _keys2 = _interopRequireDefault(_keys); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function createArrayIterator(coll) { - var i = -1; - var len = coll.length; - return function next() { - return ++i < len ? { value: coll[i], key: i } : null; - }; -} - -function createES2015Iterator(iterator) { - var i = -1; - return function next() { - var item = iterator.next(); - if (item.done) return null; - i++; - return { value: item.value, key: i }; - }; -} - -function createObjectIterator(obj) { - var okeys = (0, _keys2.default)(obj); - var i = -1; - var len = okeys.length; - return function next() { - var key = okeys[++i]; - return i < len ? { value: obj[key], key: key } : null; - }; -} - -function iterator(coll) { - if ((0, _isArrayLike2.default)(coll)) { - return createArrayIterator(coll); - } - - var iterator = (0, _getIterator2.default)(coll); - return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/internal/map.js b/node_modules/async/internal/map.js deleted file mode 100644 index f4f2aa5..0000000 --- a/node_modules/async/internal/map.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = _asyncMap; - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _wrapAsync = require('./wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _asyncMap(eachfn, arr, iteratee, callback) { - callback = callback || _noop2.default; - arr = arr || []; - var results = []; - var counter = 0; - var _iteratee = (0, _wrapAsync2.default)(iteratee); - - eachfn(arr, function (value, _, callback) { - var index = counter++; - _iteratee(value, function (err, v) { - results[index] = v; - callback(err); - }); - }, function (err) { - callback(err, results); - }); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/internal/notId.js b/node_modules/async/internal/notId.js deleted file mode 100644 index 0106c92..0000000 --- a/node_modules/async/internal/notId.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = notId; -function notId(v) { - return !v; -} -module.exports = exports["default"]; \ No newline at end of file diff --git a/node_modules/async/internal/once.js b/node_modules/async/internal/once.js deleted file mode 100644 index f0c379f..0000000 --- a/node_modules/async/internal/once.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = once; -function once(fn) { - return function () { - if (fn === null) return; - var callFn = fn; - fn = null; - callFn.apply(this, arguments); - }; -} -module.exports = exports["default"]; \ No newline at end of file diff --git a/node_modules/async/internal/onlyOnce.js b/node_modules/async/internal/onlyOnce.js deleted file mode 100644 index f2e3001..0000000 --- a/node_modules/async/internal/onlyOnce.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = onlyOnce; -function onlyOnce(fn) { - return function () { - if (fn === null) throw new Error("Callback was already called."); - var callFn = fn; - fn = null; - callFn.apply(this, arguments); - }; -} -module.exports = exports["default"]; \ No newline at end of file diff --git a/node_modules/async/internal/parallel.js b/node_modules/async/internal/parallel.js deleted file mode 100644 index c97293b..0000000 --- a/node_modules/async/internal/parallel.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = _parallel; - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _isArrayLike = require('lodash/isArrayLike'); - -var _isArrayLike2 = _interopRequireDefault(_isArrayLike); - -var _slice = require('./slice'); - -var _slice2 = _interopRequireDefault(_slice); - -var _wrapAsync = require('./wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _parallel(eachfn, tasks, callback) { - callback = callback || _noop2.default; - var results = (0, _isArrayLike2.default)(tasks) ? [] : {}; - - eachfn(tasks, function (task, key, callback) { - (0, _wrapAsync2.default)(task)(function (err, result) { - if (arguments.length > 2) { - result = (0, _slice2.default)(arguments, 1); - } - results[key] = result; - callback(err); - }); - }, function (err) { - callback(err, results); - }); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/internal/queue.js b/node_modules/async/internal/queue.js deleted file mode 100644 index 19534a7..0000000 --- a/node_modules/async/internal/queue.js +++ /dev/null @@ -1,204 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = queue; - -var _baseIndexOf = require('lodash/_baseIndexOf'); - -var _baseIndexOf2 = _interopRequireDefault(_baseIndexOf); - -var _isArray = require('lodash/isArray'); - -var _isArray2 = _interopRequireDefault(_isArray); - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _onlyOnce = require('./onlyOnce'); - -var _onlyOnce2 = _interopRequireDefault(_onlyOnce); - -var _setImmediate = require('./setImmediate'); - -var _setImmediate2 = _interopRequireDefault(_setImmediate); - -var _DoublyLinkedList = require('./DoublyLinkedList'); - -var _DoublyLinkedList2 = _interopRequireDefault(_DoublyLinkedList); - -var _wrapAsync = require('./wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function queue(worker, concurrency, payload) { - if (concurrency == null) { - concurrency = 1; - } else if (concurrency === 0) { - throw new Error('Concurrency must not be zero'); - } - - var _worker = (0, _wrapAsync2.default)(worker); - var numRunning = 0; - var workersList = []; - - var processingScheduled = false; - function _insert(data, insertAtFront, callback) { - if (callback != null && typeof callback !== 'function') { - throw new Error('task callback must be a function'); - } - q.started = true; - if (!(0, _isArray2.default)(data)) { - data = [data]; - } - if (data.length === 0 && q.idle()) { - // call drain immediately if there are no tasks - return (0, _setImmediate2.default)(function () { - q.drain(); - }); - } - - for (var i = 0, l = data.length; i < l; i++) { - var item = { - data: data[i], - callback: callback || _noop2.default - }; - - if (insertAtFront) { - q._tasks.unshift(item); - } else { - q._tasks.push(item); - } - } - - if (!processingScheduled) { - processingScheduled = true; - (0, _setImmediate2.default)(function () { - processingScheduled = false; - q.process(); - }); - } - } - - function _next(tasks) { - return function (err) { - numRunning -= 1; - - for (var i = 0, l = tasks.length; i < l; i++) { - var task = tasks[i]; - - var index = (0, _baseIndexOf2.default)(workersList, task, 0); - if (index === 0) { - workersList.shift(); - } else if (index > 0) { - workersList.splice(index, 1); - } - - task.callback.apply(task, arguments); - - if (err != null) { - q.error(err, task.data); - } - } - - if (numRunning <= q.concurrency - q.buffer) { - q.unsaturated(); - } - - if (q.idle()) { - q.drain(); - } - q.process(); - }; - } - - var isProcessing = false; - var q = { - _tasks: new _DoublyLinkedList2.default(), - concurrency: concurrency, - payload: payload, - saturated: _noop2.default, - unsaturated: _noop2.default, - buffer: concurrency / 4, - empty: _noop2.default, - drain: _noop2.default, - error: _noop2.default, - started: false, - paused: false, - push: function (data, callback) { - _insert(data, false, callback); - }, - kill: function () { - q.drain = _noop2.default; - q._tasks.empty(); - }, - unshift: function (data, callback) { - _insert(data, true, callback); - }, - remove: function (testFn) { - q._tasks.remove(testFn); - }, - process: function () { - // Avoid trying to start too many processing operations. This can occur - // when callbacks resolve synchronously (#1267). - if (isProcessing) { - return; - } - isProcessing = true; - while (!q.paused && numRunning < q.concurrency && q._tasks.length) { - var tasks = [], - data = []; - var l = q._tasks.length; - if (q.payload) l = Math.min(l, q.payload); - for (var i = 0; i < l; i++) { - var node = q._tasks.shift(); - tasks.push(node); - workersList.push(node); - data.push(node.data); - } - - numRunning += 1; - - if (q._tasks.length === 0) { - q.empty(); - } - - if (numRunning === q.concurrency) { - q.saturated(); - } - - var cb = (0, _onlyOnce2.default)(_next(tasks)); - _worker(data, cb); - } - isProcessing = false; - }, - length: function () { - return q._tasks.length; - }, - running: function () { - return numRunning; - }, - workersList: function () { - return workersList; - }, - idle: function () { - return q._tasks.length + numRunning === 0; - }, - pause: function () { - q.paused = true; - }, - resume: function () { - if (q.paused === false) { - return; - } - q.paused = false; - (0, _setImmediate2.default)(q.process); - } - }; - return q; -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/internal/reject.js b/node_modules/async/internal/reject.js deleted file mode 100644 index 5dbfcfb..0000000 --- a/node_modules/async/internal/reject.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = reject; - -var _filter = require('./filter'); - -var _filter2 = _interopRequireDefault(_filter); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function reject(eachfn, arr, iteratee, callback) { - (0, _filter2.default)(eachfn, arr, function (value, cb) { - iteratee(value, function (err, v) { - cb(err, !v); - }); - }, callback); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/internal/setImmediate.js b/node_modules/async/internal/setImmediate.js deleted file mode 100644 index 3545f2b..0000000 --- a/node_modules/async/internal/setImmediate.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.hasNextTick = exports.hasSetImmediate = undefined; -exports.fallback = fallback; -exports.wrap = wrap; - -var _slice = require('./slice'); - -var _slice2 = _interopRequireDefault(_slice); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var hasSetImmediate = exports.hasSetImmediate = typeof setImmediate === 'function' && setImmediate; -var hasNextTick = exports.hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function'; - -function fallback(fn) { - setTimeout(fn, 0); -} - -function wrap(defer) { - return function (fn /*, ...args*/) { - var args = (0, _slice2.default)(arguments, 1); - defer(function () { - fn.apply(null, args); - }); - }; -} - -var _defer; - -if (hasSetImmediate) { - _defer = setImmediate; -} else if (hasNextTick) { - _defer = process.nextTick; -} else { - _defer = fallback; -} - -exports.default = wrap(_defer); \ No newline at end of file diff --git a/node_modules/async/internal/slice.js b/node_modules/async/internal/slice.js deleted file mode 100644 index 56f10c0..0000000 --- a/node_modules/async/internal/slice.js +++ /dev/null @@ -1,16 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = slice; -function slice(arrayLike, start) { - start = start | 0; - var newLen = Math.max(arrayLike.length - start, 0); - var newArr = Array(newLen); - for (var idx = 0; idx < newLen; idx++) { - newArr[idx] = arrayLike[start + idx]; - } - return newArr; -} -module.exports = exports["default"]; \ No newline at end of file diff --git a/node_modules/async/internal/withoutIndex.js b/node_modules/async/internal/withoutIndex.js deleted file mode 100644 index 2bd3579..0000000 --- a/node_modules/async/internal/withoutIndex.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = _withoutIndex; -function _withoutIndex(iteratee) { - return function (value, index, callback) { - return iteratee(value, callback); - }; -} -module.exports = exports["default"]; \ No newline at end of file diff --git a/node_modules/async/internal/wrapAsync.js b/node_modules/async/internal/wrapAsync.js deleted file mode 100644 index bc6c966..0000000 --- a/node_modules/async/internal/wrapAsync.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.isAsync = undefined; - -var _asyncify = require('../asyncify'); - -var _asyncify2 = _interopRequireDefault(_asyncify); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var supportsSymbol = typeof Symbol === 'function'; - -function isAsync(fn) { - return supportsSymbol && fn[Symbol.toStringTag] === 'AsyncFunction'; -} - -function wrapAsync(asyncFn) { - return isAsync(asyncFn) ? (0, _asyncify2.default)(asyncFn) : asyncFn; -} - -exports.default = wrapAsync; -exports.isAsync = isAsync; \ No newline at end of file diff --git a/node_modules/async/log.js b/node_modules/async/log.js deleted file mode 100644 index c643867..0000000 --- a/node_modules/async/log.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _consoleFunc = require('./internal/consoleFunc'); - -var _consoleFunc2 = _interopRequireDefault(_consoleFunc); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Logs the result of an `async` function to the `console`. Only works in - * Node.js or in browsers that support `console.log` and `console.error` (such - * as FF and Chrome). If multiple arguments are returned from the async - * function, `console.log` is called on each argument in order. - * - * @name log - * @static - * @memberOf module:Utils - * @method - * @category Util - * @param {AsyncFunction} function - The function you want to eventually apply - * all arguments to. - * @param {...*} arguments... - Any number of arguments to apply to the function. - * @example - * - * // in a module - * var hello = function(name, callback) { - * setTimeout(function() { - * callback(null, 'hello ' + name); - * }, 1000); - * }; - * - * // in the node repl - * node> async.log(hello, 'world'); - * 'hello world' - */ -exports.default = (0, _consoleFunc2.default)('log'); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/map.js b/node_modules/async/map.js deleted file mode 100644 index 67c9cda..0000000 --- a/node_modules/async/map.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _doParallel = require('./internal/doParallel'); - -var _doParallel2 = _interopRequireDefault(_doParallel); - -var _map = require('./internal/map'); - -var _map2 = _interopRequireDefault(_map); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Produces a new collection of values by mapping each value in `coll` through - * the `iteratee` function. The `iteratee` is called with an item from `coll` - * and a callback for when it has finished processing. Each of these callback - * takes 2 arguments: an `error`, and the transformed item from `coll`. If - * `iteratee` passes an error to its callback, the main `callback` (for the - * `map` function) is immediately called with the error. - * - * Note, that since this function applies the `iteratee` to each item in - * parallel, there is no guarantee that the `iteratee` functions will complete - * in order. However, the results array will be in the same order as the - * original `coll`. - * - * If `map` is passed an Object, the results will be an Array. The results - * will roughly be in the order of the original Objects' keys (but this can - * vary across JavaScript engines). - * - * @name map - * @static - * @memberOf module:Collections - * @method - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The iteratee should complete with the transformed item. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. Results is an Array of the - * transformed items from the `coll`. Invoked with (err, results). - * @example - * - * async.map(['file1','file2','file3'], fs.stat, function(err, results) { - * // results is now an array of stats for each file - * }); - */ -exports.default = (0, _doParallel2.default)(_map2.default); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/mapLimit.js b/node_modules/async/mapLimit.js deleted file mode 100644 index c8b60d8..0000000 --- a/node_modules/async/mapLimit.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _doParallelLimit = require('./internal/doParallelLimit'); - -var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit); - -var _map = require('./internal/map'); - -var _map2 = _interopRequireDefault(_map); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`map`]{@link module:Collections.map} but runs a maximum of `limit` async operations at a time. - * - * @name mapLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.map]{@link module:Collections.map} - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The iteratee should complete with the transformed item. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. Results is an array of the - * transformed items from the `coll`. Invoked with (err, results). - */ -exports.default = (0, _doParallelLimit2.default)(_map2.default); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/mapSeries.js b/node_modules/async/mapSeries.js deleted file mode 100644 index 61b42d0..0000000 --- a/node_modules/async/mapSeries.js +++ /dev/null @@ -1,36 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _mapLimit = require('./mapLimit'); - -var _mapLimit2 = _interopRequireDefault(_mapLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`map`]{@link module:Collections.map} but runs only a single async operation at a time. - * - * @name mapSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.map]{@link module:Collections.map} - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The iteratee should complete with the transformed item. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. Results is an array of the - * transformed items from the `coll`. Invoked with (err, results). - */ -exports.default = (0, _doLimit2.default)(_mapLimit2.default, 1); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/mapValues.js b/node_modules/async/mapValues.js deleted file mode 100644 index 3d838ca..0000000 --- a/node_modules/async/mapValues.js +++ /dev/null @@ -1,63 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _mapValuesLimit = require('./mapValuesLimit'); - -var _mapValuesLimit2 = _interopRequireDefault(_mapValuesLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * A relative of [`map`]{@link module:Collections.map}, designed for use with objects. - * - * Produces a new Object by mapping each value of `obj` through the `iteratee` - * function. The `iteratee` is called each `value` and `key` from `obj` and a - * callback for when it has finished processing. Each of these callbacks takes - * two arguments: an `error`, and the transformed item from `obj`. If `iteratee` - * passes an error to its callback, the main `callback` (for the `mapValues` - * function) is immediately called with the error. - * - * Note, the order of the keys in the result is not guaranteed. The keys will - * be roughly in the order they complete, (but this is very engine-specific) - * - * @name mapValues - * @static - * @memberOf module:Collections - * @method - * @category Collection - * @param {Object} obj - A collection to iterate over. - * @param {AsyncFunction} iteratee - A function to apply to each value and key - * in `coll`. - * The iteratee should complete with the transformed value as its result. - * Invoked with (value, key, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. `result` is a new object consisting - * of each key from `obj`, with each transformed value on the right-hand side. - * Invoked with (err, result). - * @example - * - * async.mapValues({ - * f1: 'file1', - * f2: 'file2', - * f3: 'file3' - * }, function (file, key, callback) { - * fs.stat(file, callback); - * }, function(err, result) { - * // result is now a map of stats for each file, e.g. - * // { - * // f1: [stats for file1], - * // f2: [stats for file2], - * // f3: [stats for file3] - * // } - * }); - */ - -exports.default = (0, _doLimit2.default)(_mapValuesLimit2.default, Infinity); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/mapValuesLimit.js b/node_modules/async/mapValuesLimit.js deleted file mode 100644 index 912a8b5..0000000 --- a/node_modules/async/mapValuesLimit.js +++ /dev/null @@ -1,61 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = mapValuesLimit; - -var _eachOfLimit = require('./eachOfLimit'); - -var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _once = require('./internal/once'); - -var _once2 = _interopRequireDefault(_once); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`mapValues`]{@link module:Collections.mapValues} but runs a maximum of `limit` async operations at a - * time. - * - * @name mapValuesLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.mapValues]{@link module:Collections.mapValues} - * @category Collection - * @param {Object} obj - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - A function to apply to each value and key - * in `coll`. - * The iteratee should complete with the transformed value as its result. - * Invoked with (value, key, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. `result` is a new object consisting - * of each key from `obj`, with each transformed value on the right-hand side. - * Invoked with (err, result). - */ -function mapValuesLimit(obj, limit, iteratee, callback) { - callback = (0, _once2.default)(callback || _noop2.default); - var newObj = {}; - var _iteratee = (0, _wrapAsync2.default)(iteratee); - (0, _eachOfLimit2.default)(obj, limit, function (val, key, next) { - _iteratee(val, key, function (err, result) { - if (err) return next(err); - newObj[key] = result; - next(); - }); - }, function (err) { - callback(err, newObj); - }); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/mapValuesSeries.js b/node_modules/async/mapValuesSeries.js deleted file mode 100644 index b378c4a..0000000 --- a/node_modules/async/mapValuesSeries.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _mapValuesLimit = require('./mapValuesLimit'); - -var _mapValuesLimit2 = _interopRequireDefault(_mapValuesLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`mapValues`]{@link module:Collections.mapValues} but runs only a single async operation at a time. - * - * @name mapValuesSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.mapValues]{@link module:Collections.mapValues} - * @category Collection - * @param {Object} obj - A collection to iterate over. - * @param {AsyncFunction} iteratee - A function to apply to each value and key - * in `coll`. - * The iteratee should complete with the transformed value as its result. - * Invoked with (value, key, callback). - * @param {Function} [callback] - A callback which is called when all `iteratee` - * functions have finished, or an error occurs. `result` is a new object consisting - * of each key from `obj`, with each transformed value on the right-hand side. - * Invoked with (err, result). - */ -exports.default = (0, _doLimit2.default)(_mapValuesLimit2.default, 1); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/memoize.js b/node_modules/async/memoize.js deleted file mode 100644 index 1f2b566..0000000 --- a/node_modules/async/memoize.js +++ /dev/null @@ -1,101 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = memoize; - -var _identity = require('lodash/identity'); - -var _identity2 = _interopRequireDefault(_identity); - -var _slice = require('./internal/slice'); - -var _slice2 = _interopRequireDefault(_slice); - -var _setImmediate = require('./internal/setImmediate'); - -var _setImmediate2 = _interopRequireDefault(_setImmediate); - -var _initialParams = require('./internal/initialParams'); - -var _initialParams2 = _interopRequireDefault(_initialParams); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function has(obj, key) { - return key in obj; -} - -/** - * Caches the results of an async function. When creating a hash to store - * function results against, the callback is omitted from the hash and an - * optional hash function can be used. - * - * If no hash function is specified, the first argument is used as a hash key, - * which may work reasonably if it is a string or a data type that converts to a - * distinct string. Note that objects and arrays will not behave reasonably. - * Neither will cases where the other arguments are significant. In such cases, - * specify your own hash function. - * - * The cache of results is exposed as the `memo` property of the function - * returned by `memoize`. - * - * @name memoize - * @static - * @memberOf module:Utils - * @method - * @category Util - * @param {AsyncFunction} fn - The async function to proxy and cache results from. - * @param {Function} hasher - An optional function for generating a custom hash - * for storing results. It has all the arguments applied to it apart from the - * callback, and must be synchronous. - * @returns {AsyncFunction} a memoized version of `fn` - * @example - * - * var slow_fn = function(name, callback) { - * // do something - * callback(null, result); - * }; - * var fn = async.memoize(slow_fn); - * - * // fn can now be used as if it were slow_fn - * fn('some name', function() { - * // callback - * }); - */ -function memoize(fn, hasher) { - var memo = Object.create(null); - var queues = Object.create(null); - hasher = hasher || _identity2.default; - var _fn = (0, _wrapAsync2.default)(fn); - var memoized = (0, _initialParams2.default)(function memoized(args, callback) { - var key = hasher.apply(null, args); - if (has(memo, key)) { - (0, _setImmediate2.default)(function () { - callback.apply(null, memo[key]); - }); - } else if (has(queues, key)) { - queues[key].push(callback); - } else { - queues[key] = [callback]; - _fn.apply(null, args.concat(function () /*args*/{ - var args = (0, _slice2.default)(arguments); - memo[key] = args; - var q = queues[key]; - delete queues[key]; - for (var i = 0, l = q.length; i < l; i++) { - q[i].apply(null, args); - } - })); - } - }); - memoized.memo = memo; - memoized.unmemoized = fn; - return memoized; -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/nextTick.js b/node_modules/async/nextTick.js deleted file mode 100644 index 886f58e..0000000 --- a/node_modules/async/nextTick.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _setImmediate = require('./internal/setImmediate'); - -/** - * Calls `callback` on a later loop around the event loop. In Node.js this just - * calls `process.nextTick`. In the browser it will use `setImmediate` if - * available, otherwise `setTimeout(callback, 0)`, which means other higher - * priority events may precede the execution of `callback`. - * - * This is used internally for browser-compatibility purposes. - * - * @name nextTick - * @static - * @memberOf module:Utils - * @method - * @see [async.setImmediate]{@link module:Utils.setImmediate} - * @category Util - * @param {Function} callback - The function to call on a later loop around - * the event loop. Invoked with (args...). - * @param {...*} args... - any number of additional arguments to pass to the - * callback on the next tick. - * @example - * - * var call_order = []; - * async.nextTick(function() { - * call_order.push('two'); - * // call_order now equals ['one','two'] - * }); - * call_order.push('one'); - * - * async.setImmediate(function (a, b, c) { - * // a, b, and c equal 1, 2, and 3 - * }, 1, 2, 3); - */ -var _defer; - -if (_setImmediate.hasNextTick) { - _defer = process.nextTick; -} else if (_setImmediate.hasSetImmediate) { - _defer = setImmediate; -} else { - _defer = _setImmediate.fallback; -} - -exports.default = (0, _setImmediate.wrap)(_defer); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/package.json b/node_modules/async/package.json deleted file mode 100644 index e0a60ea..0000000 --- a/node_modules/async/package.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "_from": "async@^2.6.1", - "_id": "async@2.6.3", - "_inBundle": false, - "_integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "_location": "/async", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "async@^2.6.1", - "name": "async", - "escapedName": "async", - "rawSpec": "^2.6.1", - "saveSpec": null, - "fetchSpec": "^2.6.1" - }, - "_requiredBy": [ - "/markdown-link-check" - ], - "_resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "_shasum": "d72625e2344a3656e3a3ad4fa749fa83299d82ff", - "_spec": "async@^2.6.1", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/markdown-link-check", - "author": { - "name": "Caolan McMahon" - }, - "bugs": { - "url": "https://github.com/caolan/async/issues" - }, - "bundleDependencies": false, - "dependencies": { - "lodash": "^4.17.14" - }, - "deprecated": false, - "description": "Higher-order functions and common patterns for asynchronous code", - "devDependencies": { - "babel-cli": "^6.24.0", - "babel-core": "^6.26.3", - "babel-plugin-add-module-exports": "^0.2.1", - "babel-plugin-istanbul": "^2.0.1", - "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", - "babel-preset-es2015": "^6.3.13", - "babel-preset-es2017": "^6.22.0", - "babelify": "^8.0.0", - "benchmark": "^2.1.1", - "bluebird": "^3.4.6", - "browserify": "^16.2.2", - "chai": "^4.1.2", - "cheerio": "^0.22.0", - "coveralls": "^3.0.1", - "es6-promise": "^2.3.0", - "eslint": "^2.13.1", - "fs-extra": "^0.26.7", - "gh-pages-deploy": "^0.5.0", - "jsdoc": "^3.4.0", - "karma": "^2.0.2", - "karma-browserify": "^5.2.0", - "karma-firefox-launcher": "^1.1.0", - "karma-mocha": "^1.2.0", - "karma-mocha-reporter": "^2.2.0", - "mocha": "^5.2.0", - "native-promise-only": "^0.8.0-a", - "nyc": "^11.8.0", - "rimraf": "^2.5.0", - "rollup": "^0.36.3", - "rollup-plugin-node-resolve": "^2.0.0", - "rollup-plugin-npm": "^2.0.0", - "rsvp": "^3.0.18", - "semver": "^5.5.0", - "uglify-js": "~2.7.3", - "yargs": "^11.0.0" - }, - "gh-pages-deploy": { - "staticpath": "docs" - }, - "homepage": "https://caolan.github.io/async/", - "keywords": [ - "async", - "callback", - "module", - "utility" - ], - "license": "MIT", - "main": "dist/async.js", - "name": "async", - "nyc": { - "exclude": [ - "mocha_test" - ] - }, - "repository": { - "type": "git", - "url": "git+https://github.com/caolan/async.git" - }, - "scripts": { - "coverage": "nyc npm run mocha-node-test -- --grep @nycinvalid --invert", - "coveralls": "npm run coverage && nyc report --reporter=text-lcov | coveralls", - "jsdoc": "jsdoc -c ./support/jsdoc/jsdoc.json && node support/jsdoc/jsdoc-fix-html.js", - "lint": "eslint lib/ mocha_test/ perf/memory.js perf/suites.js perf/benchmark.js support/build/ support/*.js karma.conf.js", - "mocha-browser-test": "karma start", - "mocha-node-test": "mocha mocha_test/ --compilers js:babel-core/register", - "mocha-test": "npm run mocha-node-test && npm run mocha-browser-test", - "test": "npm run lint && npm run mocha-node-test" - }, - "version": "2.6.3" -} diff --git a/node_modules/async/parallel.js b/node_modules/async/parallel.js deleted file mode 100644 index da28a4d..0000000 --- a/node_modules/async/parallel.js +++ /dev/null @@ -1,90 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = parallelLimit; - -var _eachOf = require('./eachOf'); - -var _eachOf2 = _interopRequireDefault(_eachOf); - -var _parallel = require('./internal/parallel'); - -var _parallel2 = _interopRequireDefault(_parallel); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Run the `tasks` collection of functions in parallel, without waiting until - * the previous function has completed. If any of the functions pass an error to - * its callback, the main `callback` is immediately called with the value of the - * error. Once the `tasks` have completed, the results are passed to the final - * `callback` as an array. - * - * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about - * parallel execution of code. If your tasks do not use any timers or perform - * any I/O, they will actually be executed in series. Any synchronous setup - * sections for each task will happen one after the other. JavaScript remains - * single-threaded. - * - * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the - * execution of other tasks when a task fails. - * - * It is also possible to use an object instead of an array. Each property will - * be run as a function and the results will be passed to the final `callback` - * as an object instead of an array. This can be a more readable way of handling - * results from {@link async.parallel}. - * - * @name parallel - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {Array|Iterable|Object} tasks - A collection of - * [async functions]{@link AsyncFunction} to run. - * Each async function can complete with any number of optional `result` values. - * @param {Function} [callback] - An optional callback to run once all the - * functions have completed successfully. This function gets a results array - * (or object) containing all the result arguments passed to the task callbacks. - * Invoked with (err, results). - * - * @example - * async.parallel([ - * function(callback) { - * setTimeout(function() { - * callback(null, 'one'); - * }, 200); - * }, - * function(callback) { - * setTimeout(function() { - * callback(null, 'two'); - * }, 100); - * } - * ], - * // optional callback - * function(err, results) { - * // the results array will equal ['one','two'] even though - * // the second function had a shorter timeout. - * }); - * - * // an example using an object instead of an array - * async.parallel({ - * one: function(callback) { - * setTimeout(function() { - * callback(null, 1); - * }, 200); - * }, - * two: function(callback) { - * setTimeout(function() { - * callback(null, 2); - * }, 100); - * } - * }, function(err, results) { - * // results is now equals to: {one: 1, two: 2} - * }); - */ -function parallelLimit(tasks, callback) { - (0, _parallel2.default)(_eachOf2.default, tasks, callback); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/parallelLimit.js b/node_modules/async/parallelLimit.js deleted file mode 100644 index a026526..0000000 --- a/node_modules/async/parallelLimit.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = parallelLimit; - -var _eachOfLimit = require('./internal/eachOfLimit'); - -var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); - -var _parallel = require('./internal/parallel'); - -var _parallel2 = _interopRequireDefault(_parallel); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`parallel`]{@link module:ControlFlow.parallel} but runs a maximum of `limit` async operations at a - * time. - * - * @name parallelLimit - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.parallel]{@link module:ControlFlow.parallel} - * @category Control Flow - * @param {Array|Iterable|Object} tasks - A collection of - * [async functions]{@link AsyncFunction} to run. - * Each async function can complete with any number of optional `result` values. - * @param {number} limit - The maximum number of async operations at a time. - * @param {Function} [callback] - An optional callback to run once all the - * functions have completed successfully. This function gets a results array - * (or object) containing all the result arguments passed to the task callbacks. - * Invoked with (err, results). - */ -function parallelLimit(tasks, limit, callback) { - (0, _parallel2.default)((0, _eachOfLimit2.default)(limit), tasks, callback); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/priorityQueue.js b/node_modules/async/priorityQueue.js deleted file mode 100644 index 3a5f023..0000000 --- a/node_modules/async/priorityQueue.js +++ /dev/null @@ -1,98 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -exports.default = function (worker, concurrency) { - // Start with a normal queue - var q = (0, _queue2.default)(worker, concurrency); - - // Override push to accept second parameter representing priority - q.push = function (data, priority, callback) { - if (callback == null) callback = _noop2.default; - if (typeof callback !== 'function') { - throw new Error('task callback must be a function'); - } - q.started = true; - if (!(0, _isArray2.default)(data)) { - data = [data]; - } - if (data.length === 0) { - // call drain immediately if there are no tasks - return (0, _setImmediate2.default)(function () { - q.drain(); - }); - } - - priority = priority || 0; - var nextNode = q._tasks.head; - while (nextNode && priority >= nextNode.priority) { - nextNode = nextNode.next; - } - - for (var i = 0, l = data.length; i < l; i++) { - var item = { - data: data[i], - priority: priority, - callback: callback - }; - - if (nextNode) { - q._tasks.insertBefore(nextNode, item); - } else { - q._tasks.push(item); - } - } - (0, _setImmediate2.default)(q.process); - }; - - // Remove unshift function - delete q.unshift; - - return q; -}; - -var _isArray = require('lodash/isArray'); - -var _isArray2 = _interopRequireDefault(_isArray); - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _setImmediate = require('./setImmediate'); - -var _setImmediate2 = _interopRequireDefault(_setImmediate); - -var _queue = require('./queue'); - -var _queue2 = _interopRequireDefault(_queue); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -module.exports = exports['default']; - -/** - * The same as [async.queue]{@link module:ControlFlow.queue} only tasks are assigned a priority and - * completed in ascending priority order. - * - * @name priorityQueue - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.queue]{@link module:ControlFlow.queue} - * @category Control Flow - * @param {AsyncFunction} worker - An async function for processing a queued task. - * If you want to handle errors from an individual task, pass a callback to - * `q.push()`. - * Invoked with (task, callback). - * @param {number} concurrency - An `integer` for determining how many `worker` - * functions should be run in parallel. If omitted, the concurrency defaults to - * `1`. If the concurrency is `0`, an error is thrown. - * @returns {module:ControlFlow.QueueObject} A priorityQueue object to manage the tasks. There are two - * differences between `queue` and `priorityQueue` objects: - * * `push(task, priority, [callback])` - `priority` should be a number. If an - * array of `tasks` is given, all tasks will be assigned the same priority. - * * The `unshift` method was removed. - */ \ No newline at end of file diff --git a/node_modules/async/queue.js b/node_modules/async/queue.js deleted file mode 100644 index 0ca8ba2..0000000 --- a/node_modules/async/queue.js +++ /dev/null @@ -1,130 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -exports.default = function (worker, concurrency) { - var _worker = (0, _wrapAsync2.default)(worker); - return (0, _queue2.default)(function (items, cb) { - _worker(items[0], cb); - }, concurrency, 1); -}; - -var _queue = require('./internal/queue'); - -var _queue2 = _interopRequireDefault(_queue); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -module.exports = exports['default']; - -/** - * A queue of tasks for the worker function to complete. - * @typedef {Object} QueueObject - * @memberOf module:ControlFlow - * @property {Function} length - a function returning the number of items - * waiting to be processed. Invoke with `queue.length()`. - * @property {boolean} started - a boolean indicating whether or not any - * items have been pushed and processed by the queue. - * @property {Function} running - a function returning the number of items - * currently being processed. Invoke with `queue.running()`. - * @property {Function} workersList - a function returning the array of items - * currently being processed. Invoke with `queue.workersList()`. - * @property {Function} idle - a function returning false if there are items - * waiting or being processed, or true if not. Invoke with `queue.idle()`. - * @property {number} concurrency - an integer for determining how many `worker` - * functions should be run in parallel. This property can be changed after a - * `queue` is created to alter the concurrency on-the-fly. - * @property {Function} push - add a new task to the `queue`. Calls `callback` - * once the `worker` has finished processing the task. Instead of a single task, - * a `tasks` array can be submitted. The respective callback is used for every - * task in the list. Invoke with `queue.push(task, [callback])`, - * @property {Function} unshift - add a new task to the front of the `queue`. - * Invoke with `queue.unshift(task, [callback])`. - * @property {Function} remove - remove items from the queue that match a test - * function. The test function will be passed an object with a `data` property, - * and a `priority` property, if this is a - * [priorityQueue]{@link module:ControlFlow.priorityQueue} object. - * Invoked with `queue.remove(testFn)`, where `testFn` is of the form - * `function ({data, priority}) {}` and returns a Boolean. - * @property {Function} saturated - a callback that is called when the number of - * running workers hits the `concurrency` limit, and further tasks will be - * queued. - * @property {Function} unsaturated - a callback that is called when the number - * of running workers is less than the `concurrency` & `buffer` limits, and - * further tasks will not be queued. - * @property {number} buffer - A minimum threshold buffer in order to say that - * the `queue` is `unsaturated`. - * @property {Function} empty - a callback that is called when the last item - * from the `queue` is given to a `worker`. - * @property {Function} drain - a callback that is called when the last item - * from the `queue` has returned from the `worker`. - * @property {Function} error - a callback that is called when a task errors. - * Has the signature `function(error, task)`. - * @property {boolean} paused - a boolean for determining whether the queue is - * in a paused state. - * @property {Function} pause - a function that pauses the processing of tasks - * until `resume()` is called. Invoke with `queue.pause()`. - * @property {Function} resume - a function that resumes the processing of - * queued tasks when the queue is paused. Invoke with `queue.resume()`. - * @property {Function} kill - a function that removes the `drain` callback and - * empties remaining tasks from the queue forcing it to go idle. No more tasks - * should be pushed to the queue after calling this function. Invoke with `queue.kill()`. - */ - -/** - * Creates a `queue` object with the specified `concurrency`. Tasks added to the - * `queue` are processed in parallel (up to the `concurrency` limit). If all - * `worker`s are in progress, the task is queued until one becomes available. - * Once a `worker` completes a `task`, that `task`'s callback is called. - * - * @name queue - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {AsyncFunction} worker - An async function for processing a queued task. - * If you want to handle errors from an individual task, pass a callback to - * `q.push()`. Invoked with (task, callback). - * @param {number} [concurrency=1] - An `integer` for determining how many - * `worker` functions should be run in parallel. If omitted, the concurrency - * defaults to `1`. If the concurrency is `0`, an error is thrown. - * @returns {module:ControlFlow.QueueObject} A queue object to manage the tasks. Callbacks can - * attached as certain properties to listen for specific events during the - * lifecycle of the queue. - * @example - * - * // create a queue object with concurrency 2 - * var q = async.queue(function(task, callback) { - * console.log('hello ' + task.name); - * callback(); - * }, 2); - * - * // assign a callback - * q.drain = function() { - * console.log('all items have been processed'); - * }; - * - * // add some items to the queue - * q.push({name: 'foo'}, function(err) { - * console.log('finished processing foo'); - * }); - * q.push({name: 'bar'}, function (err) { - * console.log('finished processing bar'); - * }); - * - * // add some items to the queue (batch-wise) - * q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function(err) { - * console.log('finished processing item'); - * }); - * - * // add some items to the front of the queue - * q.unshift({name: 'bar'}, function (err) { - * console.log('finished processing bar'); - * }); - */ \ No newline at end of file diff --git a/node_modules/async/race.js b/node_modules/async/race.js deleted file mode 100644 index 6713c74..0000000 --- a/node_modules/async/race.js +++ /dev/null @@ -1,70 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = race; - -var _isArray = require('lodash/isArray'); - -var _isArray2 = _interopRequireDefault(_isArray); - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _once = require('./internal/once'); - -var _once2 = _interopRequireDefault(_once); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Runs the `tasks` array of functions in parallel, without waiting until the - * previous function has completed. Once any of the `tasks` complete or pass an - * error to its callback, the main `callback` is immediately called. It's - * equivalent to `Promise.race()`. - * - * @name race - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {Array} tasks - An array containing [async functions]{@link AsyncFunction} - * to run. Each function can complete with an optional `result` value. - * @param {Function} callback - A callback to run once any of the functions have - * completed. This function gets an error or result from the first function that - * completed. Invoked with (err, result). - * @returns undefined - * @example - * - * async.race([ - * function(callback) { - * setTimeout(function() { - * callback(null, 'one'); - * }, 200); - * }, - * function(callback) { - * setTimeout(function() { - * callback(null, 'two'); - * }, 100); - * } - * ], - * // main callback - * function(err, result) { - * // the result will be equal to 'two' as it finishes earlier - * }); - */ -function race(tasks, callback) { - callback = (0, _once2.default)(callback || _noop2.default); - if (!(0, _isArray2.default)(tasks)) return callback(new TypeError('First argument to race must be an array of functions')); - if (!tasks.length) return callback(); - for (var i = 0, l = tasks.length; i < l; i++) { - (0, _wrapAsync2.default)(tasks[i])(callback); - } -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/reduce.js b/node_modules/async/reduce.js deleted file mode 100644 index 3fb8019..0000000 --- a/node_modules/async/reduce.js +++ /dev/null @@ -1,78 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = reduce; - -var _eachOfSeries = require('./eachOfSeries'); - -var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _once = require('./internal/once'); - -var _once2 = _interopRequireDefault(_once); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Reduces `coll` into a single value using an async `iteratee` to return each - * successive step. `memo` is the initial state of the reduction. This function - * only operates in series. - * - * For performance reasons, it may make sense to split a call to this function - * into a parallel map, and then use the normal `Array.prototype.reduce` on the - * results. This function is for situations where each step in the reduction - * needs to be async; if you can get the data before reducing it, then it's - * probably a good idea to do so. - * - * @name reduce - * @static - * @memberOf module:Collections - * @method - * @alias inject - * @alias foldl - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {*} memo - The initial state of the reduction. - * @param {AsyncFunction} iteratee - A function applied to each item in the - * array to produce the next step in the reduction. - * The `iteratee` should complete with the next state of the reduction. - * If the iteratee complete with an error, the reduction is stopped and the - * main `callback` is immediately called with the error. - * Invoked with (memo, item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result is the reduced value. Invoked with - * (err, result). - * @example - * - * async.reduce([1,2,3], 0, function(memo, item, callback) { - * // pointless async: - * process.nextTick(function() { - * callback(null, memo + item) - * }); - * }, function(err, result) { - * // result is now equal to the last value of memo, which is 6 - * }); - */ -function reduce(coll, memo, iteratee, callback) { - callback = (0, _once2.default)(callback || _noop2.default); - var _iteratee = (0, _wrapAsync2.default)(iteratee); - (0, _eachOfSeries2.default)(coll, function (x, i, callback) { - _iteratee(memo, x, function (err, v) { - memo = v; - callback(err); - }); - }, function (err) { - callback(err, memo); - }); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/reduceRight.js b/node_modules/async/reduceRight.js deleted file mode 100644 index 3d17d32..0000000 --- a/node_modules/async/reduceRight.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = reduceRight; - -var _reduce = require('./reduce'); - -var _reduce2 = _interopRequireDefault(_reduce); - -var _slice = require('./internal/slice'); - -var _slice2 = _interopRequireDefault(_slice); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order. - * - * @name reduceRight - * @static - * @memberOf module:Collections - * @method - * @see [async.reduce]{@link module:Collections.reduce} - * @alias foldr - * @category Collection - * @param {Array} array - A collection to iterate over. - * @param {*} memo - The initial state of the reduction. - * @param {AsyncFunction} iteratee - A function applied to each item in the - * array to produce the next step in the reduction. - * The `iteratee` should complete with the next state of the reduction. - * If the iteratee complete with an error, the reduction is stopped and the - * main `callback` is immediately called with the error. - * Invoked with (memo, item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result is the reduced value. Invoked with - * (err, result). - */ -function reduceRight(array, memo, iteratee, callback) { - var reversed = (0, _slice2.default)(array).reverse(); - (0, _reduce2.default)(reversed, memo, iteratee, callback); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/reflect.js b/node_modules/async/reflect.js deleted file mode 100644 index 098ba86..0000000 --- a/node_modules/async/reflect.js +++ /dev/null @@ -1,81 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = reflect; - -var _initialParams = require('./internal/initialParams'); - -var _initialParams2 = _interopRequireDefault(_initialParams); - -var _slice = require('./internal/slice'); - -var _slice2 = _interopRequireDefault(_slice); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Wraps the async function in another function that always completes with a - * result object, even when it errors. - * - * The result object has either the property `error` or `value`. - * - * @name reflect - * @static - * @memberOf module:Utils - * @method - * @category Util - * @param {AsyncFunction} fn - The async function you want to wrap - * @returns {Function} - A function that always passes null to it's callback as - * the error. The second argument to the callback will be an `object` with - * either an `error` or a `value` property. - * @example - * - * async.parallel([ - * async.reflect(function(callback) { - * // do some stuff ... - * callback(null, 'one'); - * }), - * async.reflect(function(callback) { - * // do some more stuff but error ... - * callback('bad stuff happened'); - * }), - * async.reflect(function(callback) { - * // do some more stuff ... - * callback(null, 'two'); - * }) - * ], - * // optional callback - * function(err, results) { - * // values - * // results[0].value = 'one' - * // results[1].error = 'bad stuff happened' - * // results[2].value = 'two' - * }); - */ -function reflect(fn) { - var _fn = (0, _wrapAsync2.default)(fn); - return (0, _initialParams2.default)(function reflectOn(args, reflectCallback) { - args.push(function callback(error, cbArg) { - if (error) { - reflectCallback(null, { error: error }); - } else { - var value; - if (arguments.length <= 2) { - value = cbArg; - } else { - value = (0, _slice2.default)(arguments, 1); - } - reflectCallback(null, { value: value }); - } - }); - - return _fn.apply(this, args); - }); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/reflectAll.js b/node_modules/async/reflectAll.js deleted file mode 100644 index 966e83d..0000000 --- a/node_modules/async/reflectAll.js +++ /dev/null @@ -1,105 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = reflectAll; - -var _reflect = require('./reflect'); - -var _reflect2 = _interopRequireDefault(_reflect); - -var _isArray = require('lodash/isArray'); - -var _isArray2 = _interopRequireDefault(_isArray); - -var _arrayMap2 = require('lodash/_arrayMap'); - -var _arrayMap3 = _interopRequireDefault(_arrayMap2); - -var _baseForOwn = require('lodash/_baseForOwn'); - -var _baseForOwn2 = _interopRequireDefault(_baseForOwn); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * A helper function that wraps an array or an object of functions with `reflect`. - * - * @name reflectAll - * @static - * @memberOf module:Utils - * @method - * @see [async.reflect]{@link module:Utils.reflect} - * @category Util - * @param {Array|Object|Iterable} tasks - The collection of - * [async functions]{@link AsyncFunction} to wrap in `async.reflect`. - * @returns {Array} Returns an array of async functions, each wrapped in - * `async.reflect` - * @example - * - * let tasks = [ - * function(callback) { - * setTimeout(function() { - * callback(null, 'one'); - * }, 200); - * }, - * function(callback) { - * // do some more stuff but error ... - * callback(new Error('bad stuff happened')); - * }, - * function(callback) { - * setTimeout(function() { - * callback(null, 'two'); - * }, 100); - * } - * ]; - * - * async.parallel(async.reflectAll(tasks), - * // optional callback - * function(err, results) { - * // values - * // results[0].value = 'one' - * // results[1].error = Error('bad stuff happened') - * // results[2].value = 'two' - * }); - * - * // an example using an object instead of an array - * let tasks = { - * one: function(callback) { - * setTimeout(function() { - * callback(null, 'one'); - * }, 200); - * }, - * two: function(callback) { - * callback('two'); - * }, - * three: function(callback) { - * setTimeout(function() { - * callback(null, 'three'); - * }, 100); - * } - * }; - * - * async.parallel(async.reflectAll(tasks), - * // optional callback - * function(err, results) { - * // values - * // results.one.value = 'one' - * // results.two.error = 'two' - * // results.three.value = 'three' - * }); - */ -function reflectAll(tasks) { - var results; - if ((0, _isArray2.default)(tasks)) { - results = (0, _arrayMap3.default)(tasks, _reflect2.default); - } else { - results = {}; - (0, _baseForOwn2.default)(tasks, function (task, key) { - results[key] = _reflect2.default.call(this, task); - }); - } - return results; -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/reject.js b/node_modules/async/reject.js deleted file mode 100644 index 53802b5..0000000 --- a/node_modules/async/reject.js +++ /dev/null @@ -1,45 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _reject = require('./internal/reject'); - -var _reject2 = _interopRequireDefault(_reject); - -var _doParallel = require('./internal/doParallel'); - -var _doParallel2 = _interopRequireDefault(_doParallel); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The opposite of [`filter`]{@link module:Collections.filter}. Removes values that pass an `async` truth test. - * - * @name reject - * @static - * @memberOf module:Collections - * @method - * @see [async.filter]{@link module:Collections.filter} - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - An async truth test to apply to each item in - * `coll`. - * The should complete with a boolean value as its `result`. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Invoked with (err, results). - * @example - * - * async.reject(['file1','file2','file3'], function(filePath, callback) { - * fs.access(filePath, function(err) { - * callback(null, !err) - * }); - * }, function(err, results) { - * // results now equals an array of missing files - * createFiles(results); - * }); - */ -exports.default = (0, _doParallel2.default)(_reject2.default); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/rejectLimit.js b/node_modules/async/rejectLimit.js deleted file mode 100644 index 74bba7f..0000000 --- a/node_modules/async/rejectLimit.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _reject = require('./internal/reject'); - -var _reject2 = _interopRequireDefault(_reject); - -var _doParallelLimit = require('./internal/doParallelLimit'); - -var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`reject`]{@link module:Collections.reject} but runs a maximum of `limit` async operations at a - * time. - * - * @name rejectLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.reject]{@link module:Collections.reject} - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {Function} iteratee - An async truth test to apply to each item in - * `coll`. - * The should complete with a boolean value as its `result`. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Invoked with (err, results). - */ -exports.default = (0, _doParallelLimit2.default)(_reject2.default); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/rejectSeries.js b/node_modules/async/rejectSeries.js deleted file mode 100644 index f905588..0000000 --- a/node_modules/async/rejectSeries.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _rejectLimit = require('./rejectLimit'); - -var _rejectLimit2 = _interopRequireDefault(_rejectLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`reject`]{@link module:Collections.reject} but runs only a single async operation at a time. - * - * @name rejectSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.reject]{@link module:Collections.reject} - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - An async truth test to apply to each item in - * `coll`. - * The should complete with a boolean value as its `result`. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Invoked with (err, results). - */ -exports.default = (0, _doLimit2.default)(_rejectLimit2.default, 1); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/retry.js b/node_modules/async/retry.js deleted file mode 100644 index 6a1aa1e..0000000 --- a/node_modules/async/retry.js +++ /dev/null @@ -1,156 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = retry; - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _constant = require('lodash/constant'); - -var _constant2 = _interopRequireDefault(_constant); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Attempts to get a successful response from `task` no more than `times` times - * before returning an error. If the task is successful, the `callback` will be - * passed the result of the successful task. If all attempts fail, the callback - * will be passed the error and result (if any) of the final attempt. - * - * @name retry - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @see [async.retryable]{@link module:ControlFlow.retryable} - * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - Can be either an - * object with `times` and `interval` or a number. - * * `times` - The number of attempts to make before giving up. The default - * is `5`. - * * `interval` - The time to wait between retries, in milliseconds. The - * default is `0`. The interval may also be specified as a function of the - * retry count (see example). - * * `errorFilter` - An optional synchronous function that is invoked on - * erroneous result. If it returns `true` the retry attempts will continue; - * if the function returns `false` the retry flow is aborted with the current - * attempt's error and result being returned to the final callback. - * Invoked with (err). - * * If `opts` is a number, the number specifies the number of times to retry, - * with the default interval of `0`. - * @param {AsyncFunction} task - An async function to retry. - * Invoked with (callback). - * @param {Function} [callback] - An optional callback which is called when the - * task has succeeded, or after the final failed attempt. It receives the `err` - * and `result` arguments of the last attempt at completing the `task`. Invoked - * with (err, results). - * - * @example - * - * // The `retry` function can be used as a stand-alone control flow by passing - * // a callback, as shown below: - * - * // try calling apiMethod 3 times - * async.retry(3, apiMethod, function(err, result) { - * // do something with the result - * }); - * - * // try calling apiMethod 3 times, waiting 200 ms between each retry - * async.retry({times: 3, interval: 200}, apiMethod, function(err, result) { - * // do something with the result - * }); - * - * // try calling apiMethod 10 times with exponential backoff - * // (i.e. intervals of 100, 200, 400, 800, 1600, ... milliseconds) - * async.retry({ - * times: 10, - * interval: function(retryCount) { - * return 50 * Math.pow(2, retryCount); - * } - * }, apiMethod, function(err, result) { - * // do something with the result - * }); - * - * // try calling apiMethod the default 5 times no delay between each retry - * async.retry(apiMethod, function(err, result) { - * // do something with the result - * }); - * - * // try calling apiMethod only when error condition satisfies, all other - * // errors will abort the retry control flow and return to final callback - * async.retry({ - * errorFilter: function(err) { - * return err.message === 'Temporary error'; // only retry on a specific error - * } - * }, apiMethod, function(err, result) { - * // do something with the result - * }); - * - * // to retry individual methods that are not as reliable within other - * // control flow functions, use the `retryable` wrapper: - * async.auto({ - * users: api.getUsers.bind(api), - * payments: async.retryable(3, api.getPayments.bind(api)) - * }, function(err, results) { - * // do something with the results - * }); - * - */ -function retry(opts, task, callback) { - var DEFAULT_TIMES = 5; - var DEFAULT_INTERVAL = 0; - - var options = { - times: DEFAULT_TIMES, - intervalFunc: (0, _constant2.default)(DEFAULT_INTERVAL) - }; - - function parseTimes(acc, t) { - if (typeof t === 'object') { - acc.times = +t.times || DEFAULT_TIMES; - - acc.intervalFunc = typeof t.interval === 'function' ? t.interval : (0, _constant2.default)(+t.interval || DEFAULT_INTERVAL); - - acc.errorFilter = t.errorFilter; - } else if (typeof t === 'number' || typeof t === 'string') { - acc.times = +t || DEFAULT_TIMES; - } else { - throw new Error("Invalid arguments for async.retry"); - } - } - - if (arguments.length < 3 && typeof opts === 'function') { - callback = task || _noop2.default; - task = opts; - } else { - parseTimes(options, opts); - callback = callback || _noop2.default; - } - - if (typeof task !== 'function') { - throw new Error("Invalid arguments for async.retry"); - } - - var _task = (0, _wrapAsync2.default)(task); - - var attempt = 1; - function retryAttempt() { - _task(function (err) { - if (err && attempt++ < options.times && (typeof options.errorFilter != 'function' || options.errorFilter(err))) { - setTimeout(retryAttempt, options.intervalFunc(attempt)); - } else { - callback.apply(null, arguments); - } - }); - } - - retryAttempt(); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/retryable.js b/node_modules/async/retryable.js deleted file mode 100644 index 002bfb0..0000000 --- a/node_modules/async/retryable.js +++ /dev/null @@ -1,65 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -exports.default = function (opts, task) { - if (!task) { - task = opts; - opts = null; - } - var _task = (0, _wrapAsync2.default)(task); - return (0, _initialParams2.default)(function (args, callback) { - function taskFn(cb) { - _task.apply(null, args.concat(cb)); - } - - if (opts) (0, _retry2.default)(opts, taskFn, callback);else (0, _retry2.default)(taskFn, callback); - }); -}; - -var _retry = require('./retry'); - -var _retry2 = _interopRequireDefault(_retry); - -var _initialParams = require('./internal/initialParams'); - -var _initialParams2 = _interopRequireDefault(_initialParams); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -module.exports = exports['default']; - -/** - * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method - * wraps a task and makes it retryable, rather than immediately calling it - * with retries. - * - * @name retryable - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.retry]{@link module:ControlFlow.retry} - * @category Control Flow - * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional - * options, exactly the same as from `retry` - * @param {AsyncFunction} task - the asynchronous function to wrap. - * This function will be passed any arguments passed to the returned wrapper. - * Invoked with (...args, callback). - * @returns {AsyncFunction} The wrapped function, which when invoked, will - * retry on an error, based on the parameters specified in `opts`. - * This function will accept the same parameters as `task`. - * @example - * - * async.auto({ - * dep1: async.retryable(3, getFromFlakyService), - * process: ["dep1", async.retryable(3, function (results, cb) { - * maybeProcessData(results.dep1, cb); - * })] - * }, callback); - */ \ No newline at end of file diff --git a/node_modules/async/select.js b/node_modules/async/select.js deleted file mode 100644 index 54772d5..0000000 --- a/node_modules/async/select.js +++ /dev/null @@ -1,45 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _filter = require('./internal/filter'); - -var _filter2 = _interopRequireDefault(_filter); - -var _doParallel = require('./internal/doParallel'); - -var _doParallel2 = _interopRequireDefault(_doParallel); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Returns a new array of all the values in `coll` which pass an async truth - * test. This operation is performed in parallel, but the results array will be - * in the same order as the original. - * - * @name filter - * @static - * @memberOf module:Collections - * @method - * @alias select - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A truth test to apply to each item in `coll`. - * The `iteratee` is passed a `callback(err, truthValue)`, which must be called - * with a boolean argument once it has completed. Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Invoked with (err, results). - * @example - * - * async.filter(['file1','file2','file3'], function(filePath, callback) { - * fs.access(filePath, function(err) { - * callback(null, !err) - * }); - * }, function(err, results) { - * // results now equals an array of the existing files - * }); - */ -exports.default = (0, _doParallel2.default)(_filter2.default); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/selectLimit.js b/node_modules/async/selectLimit.js deleted file mode 100644 index 06216f7..0000000 --- a/node_modules/async/selectLimit.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _filter = require('./internal/filter'); - -var _filter2 = _interopRequireDefault(_filter); - -var _doParallelLimit = require('./internal/doParallelLimit'); - -var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a - * time. - * - * @name filterLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.filter]{@link module:Collections.filter} - * @alias selectLimit - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {Function} iteratee - A truth test to apply to each item in `coll`. - * The `iteratee` is passed a `callback(err, truthValue)`, which must be called - * with a boolean argument once it has completed. Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Invoked with (err, results). - */ -exports.default = (0, _doParallelLimit2.default)(_filter2.default); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/selectSeries.js b/node_modules/async/selectSeries.js deleted file mode 100644 index e48d966..0000000 --- a/node_modules/async/selectSeries.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _filterLimit = require('./filterLimit'); - -var _filterLimit2 = _interopRequireDefault(_filterLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time. - * - * @name filterSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.filter]{@link module:Collections.filter} - * @alias selectSeries - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A truth test to apply to each item in `coll`. - * The `iteratee` is passed a `callback(err, truthValue)`, which must be called - * with a boolean argument once it has completed. Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Invoked with (err, results) - */ -exports.default = (0, _doLimit2.default)(_filterLimit2.default, 1); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/seq.js b/node_modules/async/seq.js deleted file mode 100644 index ff86ef9..0000000 --- a/node_modules/async/seq.js +++ /dev/null @@ -1,91 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = seq; - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _slice = require('./internal/slice'); - -var _slice2 = _interopRequireDefault(_slice); - -var _reduce = require('./reduce'); - -var _reduce2 = _interopRequireDefault(_reduce); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -var _arrayMap = require('lodash/_arrayMap'); - -var _arrayMap2 = _interopRequireDefault(_arrayMap); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Version of the compose function that is more natural to read. Each function - * consumes the return value of the previous function. It is the equivalent of - * [compose]{@link module:ControlFlow.compose} with the arguments reversed. - * - * Each function is executed with the `this` binding of the composed function. - * - * @name seq - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.compose]{@link module:ControlFlow.compose} - * @category Control Flow - * @param {...AsyncFunction} functions - the asynchronous functions to compose - * @returns {Function} a function that composes the `functions` in order - * @example - * - * // Requires lodash (or underscore), express3 and dresende's orm2. - * // Part of an app, that fetches cats of the logged user. - * // This example uses `seq` function to avoid overnesting and error - * // handling clutter. - * app.get('/cats', function(request, response) { - * var User = request.models.User; - * async.seq( - * _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data)) - * function(user, fn) { - * user.getCats(fn); // 'getCats' has signature (callback(err, data)) - * } - * )(req.session.user_id, function (err, cats) { - * if (err) { - * console.error(err); - * response.json({ status: 'error', message: err.message }); - * } else { - * response.json({ status: 'ok', message: 'Cats found', data: cats }); - * } - * }); - * }); - */ -function seq() /*...functions*/{ - var _functions = (0, _arrayMap2.default)(arguments, _wrapAsync2.default); - return function () /*...args*/{ - var args = (0, _slice2.default)(arguments); - var that = this; - - var cb = args[args.length - 1]; - if (typeof cb == 'function') { - args.pop(); - } else { - cb = _noop2.default; - } - - (0, _reduce2.default)(_functions, args, function (newargs, fn, cb) { - fn.apply(that, newargs.concat(function (err /*, ...nextargs*/) { - var nextargs = (0, _slice2.default)(arguments, 1); - cb(err, nextargs); - })); - }, function (err, results) { - cb.apply(that, [err].concat(results)); - }); - }; -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/series.js b/node_modules/async/series.js deleted file mode 100644 index e8c2928..0000000 --- a/node_modules/async/series.js +++ /dev/null @@ -1,85 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = series; - -var _parallel = require('./internal/parallel'); - -var _parallel2 = _interopRequireDefault(_parallel); - -var _eachOfSeries = require('./eachOfSeries'); - -var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Run the functions in the `tasks` collection in series, each one running once - * the previous function has completed. If any functions in the series pass an - * error to its callback, no more functions are run, and `callback` is - * immediately called with the value of the error. Otherwise, `callback` - * receives an array of results when `tasks` have completed. - * - * It is also possible to use an object instead of an array. Each property will - * be run as a function, and the results will be passed to the final `callback` - * as an object instead of an array. This can be a more readable way of handling - * results from {@link async.series}. - * - * **Note** that while many implementations preserve the order of object - * properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) - * explicitly states that - * - * > The mechanics and order of enumerating the properties is not specified. - * - * So if you rely on the order in which your series of functions are executed, - * and want this to work on all platforms, consider using an array. - * - * @name series - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {Array|Iterable|Object} tasks - A collection containing - * [async functions]{@link AsyncFunction} to run in series. - * Each function can complete with any number of optional `result` values. - * @param {Function} [callback] - An optional callback to run once all the - * functions have completed. This function gets a results array (or object) - * containing all the result arguments passed to the `task` callbacks. Invoked - * with (err, result). - * @example - * async.series([ - * function(callback) { - * // do some stuff ... - * callback(null, 'one'); - * }, - * function(callback) { - * // do some more stuff ... - * callback(null, 'two'); - * } - * ], - * // optional callback - * function(err, results) { - * // results is now equal to ['one', 'two'] - * }); - * - * async.series({ - * one: function(callback) { - * setTimeout(function() { - * callback(null, 1); - * }, 200); - * }, - * two: function(callback){ - * setTimeout(function() { - * callback(null, 2); - * }, 100); - * } - * }, function(err, results) { - * // results is now equal to: {one: 1, two: 2} - * }); - */ -function series(tasks, callback) { - (0, _parallel2.default)(_eachOfSeries2.default, tasks, callback); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/setImmediate.js b/node_modules/async/setImmediate.js deleted file mode 100644 index e52f7c5..0000000 --- a/node_modules/async/setImmediate.js +++ /dev/null @@ -1,45 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _setImmediate = require('./internal/setImmediate'); - -var _setImmediate2 = _interopRequireDefault(_setImmediate); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Calls `callback` on a later loop around the event loop. In Node.js this just - * calls `setImmediate`. In the browser it will use `setImmediate` if - * available, otherwise `setTimeout(callback, 0)`, which means other higher - * priority events may precede the execution of `callback`. - * - * This is used internally for browser-compatibility purposes. - * - * @name setImmediate - * @static - * @memberOf module:Utils - * @method - * @see [async.nextTick]{@link module:Utils.nextTick} - * @category Util - * @param {Function} callback - The function to call on a later loop around - * the event loop. Invoked with (args...). - * @param {...*} args... - any number of additional arguments to pass to the - * callback on the next tick. - * @example - * - * var call_order = []; - * async.nextTick(function() { - * call_order.push('two'); - * // call_order now equals ['one','two'] - * }); - * call_order.push('one'); - * - * async.setImmediate(function (a, b, c) { - * // a, b, and c equal 1, 2, and 3 - * }, 1, 2, 3); - */ -exports.default = _setImmediate2.default; -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/some.js b/node_modules/async/some.js deleted file mode 100644 index a8e70f7..0000000 --- a/node_modules/async/some.js +++ /dev/null @@ -1,52 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createTester = require('./internal/createTester'); - -var _createTester2 = _interopRequireDefault(_createTester); - -var _doParallel = require('./internal/doParallel'); - -var _doParallel2 = _interopRequireDefault(_doParallel); - -var _identity = require('lodash/identity'); - -var _identity2 = _interopRequireDefault(_identity); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Returns `true` if at least one element in the `coll` satisfies an async test. - * If any iteratee call returns `true`, the main `callback` is immediately - * called. - * - * @name some - * @static - * @memberOf module:Collections - * @method - * @alias any - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collections in parallel. - * The iteratee should complete with a boolean `result` value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called as soon as any - * iteratee returns `true`, or after all the iteratee functions have finished. - * Result will be either `true` or `false` depending on the values of the async - * tests. Invoked with (err, result). - * @example - * - * async.some(['file1','file2','file3'], function(filePath, callback) { - * fs.access(filePath, function(err) { - * callback(null, !err) - * }); - * }, function(err, result) { - * // if result is true then at least one of the files exists - * }); - */ -exports.default = (0, _doParallel2.default)((0, _createTester2.default)(Boolean, _identity2.default)); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/someLimit.js b/node_modules/async/someLimit.js deleted file mode 100644 index 24ca3f4..0000000 --- a/node_modules/async/someLimit.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createTester = require('./internal/createTester'); - -var _createTester2 = _interopRequireDefault(_createTester); - -var _doParallelLimit = require('./internal/doParallelLimit'); - -var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit); - -var _identity = require('lodash/identity'); - -var _identity2 = _interopRequireDefault(_identity); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time. - * - * @name someLimit - * @static - * @memberOf module:Collections - * @method - * @see [async.some]{@link module:Collections.some} - * @alias anyLimit - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collections in parallel. - * The iteratee should complete with a boolean `result` value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called as soon as any - * iteratee returns `true`, or after all the iteratee functions have finished. - * Result will be either `true` or `false` depending on the values of the async - * tests. Invoked with (err, result). - */ -exports.default = (0, _doParallelLimit2.default)((0, _createTester2.default)(Boolean, _identity2.default)); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/someSeries.js b/node_modules/async/someSeries.js deleted file mode 100644 index dc24ed2..0000000 --- a/node_modules/async/someSeries.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _someLimit = require('./someLimit'); - -var _someLimit2 = _interopRequireDefault(_someLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time. - * - * @name someSeries - * @static - * @memberOf module:Collections - * @method - * @see [async.some]{@link module:Collections.some} - * @alias anySeries - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async truth test to apply to each item - * in the collections in series. - * The iteratee should complete with a boolean `result` value. - * Invoked with (item, callback). - * @param {Function} [callback] - A callback which is called as soon as any - * iteratee returns `true`, or after all the iteratee functions have finished. - * Result will be either `true` or `false` depending on the values of the async - * tests. Invoked with (err, result). - */ -exports.default = (0, _doLimit2.default)(_someLimit2.default, 1); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/sortBy.js b/node_modules/async/sortBy.js deleted file mode 100644 index ee5e93d..0000000 --- a/node_modules/async/sortBy.js +++ /dev/null @@ -1,91 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = sortBy; - -var _arrayMap = require('lodash/_arrayMap'); - -var _arrayMap2 = _interopRequireDefault(_arrayMap); - -var _baseProperty = require('lodash/_baseProperty'); - -var _baseProperty2 = _interopRequireDefault(_baseProperty); - -var _map = require('./map'); - -var _map2 = _interopRequireDefault(_map); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Sorts a list by the results of running each `coll` value through an async - * `iteratee`. - * - * @name sortBy - * @static - * @memberOf module:Collections - * @method - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {AsyncFunction} iteratee - An async function to apply to each item in - * `coll`. - * The iteratee should complete with a value to use as the sort criteria as - * its `result`. - * Invoked with (item, callback). - * @param {Function} callback - A callback which is called after all the - * `iteratee` functions have finished, or an error occurs. Results is the items - * from the original `coll` sorted by the values returned by the `iteratee` - * calls. Invoked with (err, results). - * @example - * - * async.sortBy(['file1','file2','file3'], function(file, callback) { - * fs.stat(file, function(err, stats) { - * callback(err, stats.mtime); - * }); - * }, function(err, results) { - * // results is now the original array of files sorted by - * // modified date - * }); - * - * // By modifying the callback parameter the - * // sorting order can be influenced: - * - * // ascending order - * async.sortBy([1,9,3,5], function(x, callback) { - * callback(null, x); - * }, function(err,result) { - * // result callback - * }); - * - * // descending order - * async.sortBy([1,9,3,5], function(x, callback) { - * callback(null, x*-1); //<- x*-1 instead of x, turns the order around - * }, function(err,result) { - * // result callback - * }); - */ -function sortBy(coll, iteratee, callback) { - var _iteratee = (0, _wrapAsync2.default)(iteratee); - (0, _map2.default)(coll, function (x, callback) { - _iteratee(x, function (err, criteria) { - if (err) return callback(err); - callback(null, { value: x, criteria: criteria }); - }); - }, function (err, results) { - if (err) return callback(err); - callback(null, (0, _arrayMap2.default)(results.sort(comparator), (0, _baseProperty2.default)('value'))); - }); - - function comparator(left, right) { - var a = left.criteria, - b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - } -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/timeout.js b/node_modules/async/timeout.js deleted file mode 100644 index b5cb505..0000000 --- a/node_modules/async/timeout.js +++ /dev/null @@ -1,89 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = timeout; - -var _initialParams = require('./internal/initialParams'); - -var _initialParams2 = _interopRequireDefault(_initialParams); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Sets a time limit on an asynchronous function. If the function does not call - * its callback within the specified milliseconds, it will be called with a - * timeout error. The code property for the error object will be `'ETIMEDOUT'`. - * - * @name timeout - * @static - * @memberOf module:Utils - * @method - * @category Util - * @param {AsyncFunction} asyncFn - The async function to limit in time. - * @param {number} milliseconds - The specified time limit. - * @param {*} [info] - Any variable you want attached (`string`, `object`, etc) - * to timeout Error for more information.. - * @returns {AsyncFunction} Returns a wrapped function that can be used with any - * of the control flow functions. - * Invoke this function with the same parameters as you would `asyncFunc`. - * @example - * - * function myFunction(foo, callback) { - * doAsyncTask(foo, function(err, data) { - * // handle errors - * if (err) return callback(err); - * - * // do some stuff ... - * - * // return processed data - * return callback(null, data); - * }); - * } - * - * var wrapped = async.timeout(myFunction, 1000); - * - * // call `wrapped` as you would `myFunction` - * wrapped({ bar: 'bar' }, function(err, data) { - * // if `myFunction` takes < 1000 ms to execute, `err` - * // and `data` will have their expected values - * - * // else `err` will be an Error with the code 'ETIMEDOUT' - * }); - */ -function timeout(asyncFn, milliseconds, info) { - var fn = (0, _wrapAsync2.default)(asyncFn); - - return (0, _initialParams2.default)(function (args, callback) { - var timedOut = false; - var timer; - - function timeoutCallback() { - var name = asyncFn.name || 'anonymous'; - var error = new Error('Callback function "' + name + '" timed out.'); - error.code = 'ETIMEDOUT'; - if (info) { - error.info = info; - } - timedOut = true; - callback(error); - } - - args.push(function () { - if (!timedOut) { - callback.apply(null, arguments); - clearTimeout(timer); - } - }); - - // setup timer and call original function - timer = setTimeout(timeoutCallback, milliseconds); - fn.apply(null, args); - }); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/times.js b/node_modules/async/times.js deleted file mode 100644 index b5ca24d..0000000 --- a/node_modules/async/times.js +++ /dev/null @@ -1,50 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _timesLimit = require('./timesLimit'); - -var _timesLimit2 = _interopRequireDefault(_timesLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Calls the `iteratee` function `n` times, and accumulates results in the same - * manner you would use with [map]{@link module:Collections.map}. - * - * @name times - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.map]{@link module:Collections.map} - * @category Control Flow - * @param {number} n - The number of times to run the function. - * @param {AsyncFunction} iteratee - The async function to call `n` times. - * Invoked with the iteration index and a callback: (n, next). - * @param {Function} callback - see {@link module:Collections.map}. - * @example - * - * // Pretend this is some complicated async factory - * var createUser = function(id, callback) { - * callback(null, { - * id: 'user' + id - * }); - * }; - * - * // generate 5 users - * async.times(5, function(n, next) { - * createUser(n, function(err, user) { - * next(err, user); - * }); - * }, function(err, users) { - * // we should now have 5 users - * }); - */ -exports.default = (0, _doLimit2.default)(_timesLimit2.default, Infinity); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/timesLimit.js b/node_modules/async/timesLimit.js deleted file mode 100644 index aad8495..0000000 --- a/node_modules/async/timesLimit.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = timeLimit; - -var _mapLimit = require('./mapLimit'); - -var _mapLimit2 = _interopRequireDefault(_mapLimit); - -var _baseRange = require('lodash/_baseRange'); - -var _baseRange2 = _interopRequireDefault(_baseRange); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [times]{@link module:ControlFlow.times} but runs a maximum of `limit` async operations at a - * time. - * - * @name timesLimit - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.times]{@link module:ControlFlow.times} - * @category Control Flow - * @param {number} count - The number of times to run the function. - * @param {number} limit - The maximum number of async operations at a time. - * @param {AsyncFunction} iteratee - The async function to call `n` times. - * Invoked with the iteration index and a callback: (n, next). - * @param {Function} callback - see [async.map]{@link module:Collections.map}. - */ -function timeLimit(count, limit, iteratee, callback) { - var _iteratee = (0, _wrapAsync2.default)(iteratee); - (0, _mapLimit2.default)((0, _baseRange2.default)(0, count, 1), limit, _iteratee, callback); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/timesSeries.js b/node_modules/async/timesSeries.js deleted file mode 100644 index f187a35..0000000 --- a/node_modules/async/timesSeries.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _timesLimit = require('./timesLimit'); - -var _timesLimit2 = _interopRequireDefault(_timesLimit); - -var _doLimit = require('./internal/doLimit'); - -var _doLimit2 = _interopRequireDefault(_doLimit); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The same as [times]{@link module:ControlFlow.times} but runs only a single async operation at a time. - * - * @name timesSeries - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.times]{@link module:ControlFlow.times} - * @category Control Flow - * @param {number} n - The number of times to run the function. - * @param {AsyncFunction} iteratee - The async function to call `n` times. - * Invoked with the iteration index and a callback: (n, next). - * @param {Function} callback - see {@link module:Collections.map}. - */ -exports.default = (0, _doLimit2.default)(_timesLimit2.default, 1); -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/transform.js b/node_modules/async/transform.js deleted file mode 100644 index 84ee217..0000000 --- a/node_modules/async/transform.js +++ /dev/null @@ -1,87 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = transform; - -var _isArray = require('lodash/isArray'); - -var _isArray2 = _interopRequireDefault(_isArray); - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _eachOf = require('./eachOf'); - -var _eachOf2 = _interopRequireDefault(_eachOf); - -var _once = require('./internal/once'); - -var _once2 = _interopRequireDefault(_once); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * A relative of `reduce`. Takes an Object or Array, and iterates over each - * element in series, each step potentially mutating an `accumulator` value. - * The type of the accumulator defaults to the type of collection passed in. - * - * @name transform - * @static - * @memberOf module:Collections - * @method - * @category Collection - * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {*} [accumulator] - The initial state of the transform. If omitted, - * it will default to an empty Object or Array, depending on the type of `coll` - * @param {AsyncFunction} iteratee - A function applied to each item in the - * collection that potentially modifies the accumulator. - * Invoked with (accumulator, item, key, callback). - * @param {Function} [callback] - A callback which is called after all the - * `iteratee` functions have finished. Result is the transformed accumulator. - * Invoked with (err, result). - * @example - * - * async.transform([1,2,3], function(acc, item, index, callback) { - * // pointless async: - * process.nextTick(function() { - * acc.push(item * 2) - * callback(null) - * }); - * }, function(err, result) { - * // result is now equal to [2, 4, 6] - * }); - * - * @example - * - * async.transform({a: 1, b: 2, c: 3}, function (obj, val, key, callback) { - * setImmediate(function () { - * obj[key] = val * 2; - * callback(); - * }) - * }, function (err, result) { - * // result is equal to {a: 2, b: 4, c: 6} - * }) - */ -function transform(coll, accumulator, iteratee, callback) { - if (arguments.length <= 3) { - callback = iteratee; - iteratee = accumulator; - accumulator = (0, _isArray2.default)(coll) ? [] : {}; - } - callback = (0, _once2.default)(callback || _noop2.default); - var _iteratee = (0, _wrapAsync2.default)(iteratee); - - (0, _eachOf2.default)(coll, function (v, k, cb) { - _iteratee(accumulator, v, k, cb); - }, function (err) { - callback(err, accumulator); - }); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/tryEach.js b/node_modules/async/tryEach.js deleted file mode 100644 index f4e4c97..0000000 --- a/node_modules/async/tryEach.js +++ /dev/null @@ -1,81 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = tryEach; - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _eachSeries = require('./eachSeries'); - -var _eachSeries2 = _interopRequireDefault(_eachSeries); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -var _slice = require('./internal/slice'); - -var _slice2 = _interopRequireDefault(_slice); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * It runs each task in series but stops whenever any of the functions were - * successful. If one of the tasks were successful, the `callback` will be - * passed the result of the successful task. If all tasks fail, the callback - * will be passed the error and result (if any) of the final attempt. - * - * @name tryEach - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {Array|Iterable|Object} tasks - A collection containing functions to - * run, each function is passed a `callback(err, result)` it must call on - * completion with an error `err` (which can be `null`) and an optional `result` - * value. - * @param {Function} [callback] - An optional callback which is called when one - * of the tasks has succeeded, or all have failed. It receives the `err` and - * `result` arguments of the last attempt at completing the `task`. Invoked with - * (err, results). - * @example - * async.tryEach([ - * function getDataFromFirstWebsite(callback) { - * // Try getting the data from the first website - * callback(err, data); - * }, - * function getDataFromSecondWebsite(callback) { - * // First website failed, - * // Try getting the data from the backup website - * callback(err, data); - * } - * ], - * // optional callback - * function(err, results) { - * Now do something with the data. - * }); - * - */ -function tryEach(tasks, callback) { - var error = null; - var result; - callback = callback || _noop2.default; - (0, _eachSeries2.default)(tasks, function (task, callback) { - (0, _wrapAsync2.default)(task)(function (err, res /*, ...args*/) { - if (arguments.length > 2) { - result = (0, _slice2.default)(arguments, 1); - } else { - result = res; - } - error = err; - callback(!err); - }); - }, function () { - callback(error, result); - }); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/unmemoize.js b/node_modules/async/unmemoize.js deleted file mode 100644 index 08f9f9f..0000000 --- a/node_modules/async/unmemoize.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = unmemoize; -/** - * Undoes a [memoize]{@link module:Utils.memoize}d function, reverting it to the original, - * unmemoized form. Handy for testing. - * - * @name unmemoize - * @static - * @memberOf module:Utils - * @method - * @see [async.memoize]{@link module:Utils.memoize} - * @category Util - * @param {AsyncFunction} fn - the memoized function - * @returns {AsyncFunction} a function that calls the original unmemoized function - */ -function unmemoize(fn) { - return function () { - return (fn.unmemoized || fn).apply(null, arguments); - }; -} -module.exports = exports["default"]; \ No newline at end of file diff --git a/node_modules/async/until.js b/node_modules/async/until.js deleted file mode 100644 index 29955ab..0000000 --- a/node_modules/async/until.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = until; - -var _whilst = require('./whilst'); - -var _whilst2 = _interopRequireDefault(_whilst); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Repeatedly call `iteratee` until `test` returns `true`. Calls `callback` when - * stopped, or an error occurs. `callback` will be passed an error and any - * arguments passed to the final `iteratee`'s callback. - * - * The inverse of [whilst]{@link module:ControlFlow.whilst}. - * - * @name until - * @static - * @memberOf module:ControlFlow - * @method - * @see [async.whilst]{@link module:ControlFlow.whilst} - * @category Control Flow - * @param {Function} test - synchronous truth test to perform before each - * execution of `iteratee`. Invoked with (). - * @param {AsyncFunction} iteratee - An async function which is called each time - * `test` fails. Invoked with (callback). - * @param {Function} [callback] - A callback which is called after the test - * function has passed and repeated execution of `iteratee` has stopped. `callback` - * will be passed an error and any arguments passed to the final `iteratee`'s - * callback. Invoked with (err, [results]); - */ -function until(test, iteratee, callback) { - (0, _whilst2.default)(function () { - return !test.apply(this, arguments); - }, iteratee, callback); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/waterfall.js b/node_modules/async/waterfall.js deleted file mode 100644 index d547d6b..0000000 --- a/node_modules/async/waterfall.js +++ /dev/null @@ -1,113 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -exports.default = function (tasks, callback) { - callback = (0, _once2.default)(callback || _noop2.default); - if (!(0, _isArray2.default)(tasks)) return callback(new Error('First argument to waterfall must be an array of functions')); - if (!tasks.length) return callback(); - var taskIndex = 0; - - function nextTask(args) { - var task = (0, _wrapAsync2.default)(tasks[taskIndex++]); - args.push((0, _onlyOnce2.default)(next)); - task.apply(null, args); - } - - function next(err /*, ...args*/) { - if (err || taskIndex === tasks.length) { - return callback.apply(null, arguments); - } - nextTask((0, _slice2.default)(arguments, 1)); - } - - nextTask([]); -}; - -var _isArray = require('lodash/isArray'); - -var _isArray2 = _interopRequireDefault(_isArray); - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _once = require('./internal/once'); - -var _once2 = _interopRequireDefault(_once); - -var _slice = require('./internal/slice'); - -var _slice2 = _interopRequireDefault(_slice); - -var _onlyOnce = require('./internal/onlyOnce'); - -var _onlyOnce2 = _interopRequireDefault(_onlyOnce); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -module.exports = exports['default']; - -/** - * Runs the `tasks` array of functions in series, each passing their results to - * the next in the array. However, if any of the `tasks` pass an error to their - * own callback, the next function is not executed, and the main `callback` is - * immediately called with the error. - * - * @name waterfall - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {Array} tasks - An array of [async functions]{@link AsyncFunction} - * to run. - * Each function should complete with any number of `result` values. - * The `result` values will be passed as arguments, in order, to the next task. - * @param {Function} [callback] - An optional callback to run once all the - * functions have completed. This will be passed the results of the last task's - * callback. Invoked with (err, [results]). - * @returns undefined - * @example - * - * async.waterfall([ - * function(callback) { - * callback(null, 'one', 'two'); - * }, - * function(arg1, arg2, callback) { - * // arg1 now equals 'one' and arg2 now equals 'two' - * callback(null, 'three'); - * }, - * function(arg1, callback) { - * // arg1 now equals 'three' - * callback(null, 'done'); - * } - * ], function (err, result) { - * // result now equals 'done' - * }); - * - * // Or, with named functions: - * async.waterfall([ - * myFirstFunction, - * mySecondFunction, - * myLastFunction, - * ], function (err, result) { - * // result now equals 'done' - * }); - * function myFirstFunction(callback) { - * callback(null, 'one', 'two'); - * } - * function mySecondFunction(arg1, arg2, callback) { - * // arg1 now equals 'one' and arg2 now equals 'two' - * callback(null, 'three'); - * } - * function myLastFunction(arg1, callback) { - * // arg1 now equals 'three' - * callback(null, 'done'); - * } - */ \ No newline at end of file diff --git a/node_modules/async/whilst.js b/node_modules/async/whilst.js deleted file mode 100644 index 9c4d8f6..0000000 --- a/node_modules/async/whilst.js +++ /dev/null @@ -1,72 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = whilst; - -var _noop = require('lodash/noop'); - -var _noop2 = _interopRequireDefault(_noop); - -var _slice = require('./internal/slice'); - -var _slice2 = _interopRequireDefault(_slice); - -var _onlyOnce = require('./internal/onlyOnce'); - -var _onlyOnce2 = _interopRequireDefault(_onlyOnce); - -var _wrapAsync = require('./internal/wrapAsync'); - -var _wrapAsync2 = _interopRequireDefault(_wrapAsync); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when - * stopped, or an error occurs. - * - * @name whilst - * @static - * @memberOf module:ControlFlow - * @method - * @category Control Flow - * @param {Function} test - synchronous truth test to perform before each - * execution of `iteratee`. Invoked with (). - * @param {AsyncFunction} iteratee - An async function which is called each time - * `test` passes. Invoked with (callback). - * @param {Function} [callback] - A callback which is called after the test - * function has failed and repeated execution of `iteratee` has stopped. `callback` - * will be passed an error and any arguments passed to the final `iteratee`'s - * callback. Invoked with (err, [results]); - * @returns undefined - * @example - * - * var count = 0; - * async.whilst( - * function() { return count < 5; }, - * function(callback) { - * count++; - * setTimeout(function() { - * callback(null, count); - * }, 1000); - * }, - * function (err, n) { - * // 5 seconds have passed, n = 5 - * } - * ); - */ -function whilst(test, iteratee, callback) { - callback = (0, _onlyOnce2.default)(callback || _noop2.default); - var _iteratee = (0, _wrapAsync2.default)(iteratee); - if (!test()) return callback(null); - var next = function (err /*, ...args*/) { - if (err) return callback(err); - if (test()) return _iteratee(next); - var args = (0, _slice2.default)(arguments, 1); - callback.apply(null, [null].concat(args)); - }; - _iteratee(next); -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/async/wrapSync.js b/node_modules/async/wrapSync.js deleted file mode 100644 index 5e3fc91..0000000 --- a/node_modules/async/wrapSync.js +++ /dev/null @@ -1,110 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = asyncify; - -var _isObject = require('lodash/isObject'); - -var _isObject2 = _interopRequireDefault(_isObject); - -var _initialParams = require('./internal/initialParams'); - -var _initialParams2 = _interopRequireDefault(_initialParams); - -var _setImmediate = require('./internal/setImmediate'); - -var _setImmediate2 = _interopRequireDefault(_setImmediate); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Take a sync function and make it async, passing its return value to a - * callback. This is useful for plugging sync functions into a waterfall, - * series, or other async functions. Any arguments passed to the generated - * function will be passed to the wrapped function (except for the final - * callback argument). Errors thrown will be passed to the callback. - * - * If the function passed to `asyncify` returns a Promise, that promises's - * resolved/rejected state will be used to call the callback, rather than simply - * the synchronous return value. - * - * This also means you can asyncify ES2017 `async` functions. - * - * @name asyncify - * @static - * @memberOf module:Utils - * @method - * @alias wrapSync - * @category Util - * @param {Function} func - The synchronous function, or Promise-returning - * function to convert to an {@link AsyncFunction}. - * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be - * invoked with `(args..., callback)`. - * @example - * - * // passing a regular synchronous function - * async.waterfall([ - * async.apply(fs.readFile, filename, "utf8"), - * async.asyncify(JSON.parse), - * function (data, next) { - * // data is the result of parsing the text. - * // If there was a parsing error, it would have been caught. - * } - * ], callback); - * - * // passing a function returning a promise - * async.waterfall([ - * async.apply(fs.readFile, filename, "utf8"), - * async.asyncify(function (contents) { - * return db.model.create(contents); - * }), - * function (model, next) { - * // `model` is the instantiated model object. - * // If there was an error, this function would be skipped. - * } - * ], callback); - * - * // es2017 example, though `asyncify` is not needed if your JS environment - * // supports async functions out of the box - * var q = async.queue(async.asyncify(async function(file) { - * var intermediateStep = await processFile(file); - * return await somePromise(intermediateStep) - * })); - * - * q.push(files); - */ -function asyncify(func) { - return (0, _initialParams2.default)(function (args, callback) { - var result; - try { - result = func.apply(this, args); - } catch (e) { - return callback(e); - } - // if result is Promise object - if ((0, _isObject2.default)(result) && typeof result.then === 'function') { - result.then(function (value) { - invokeCallback(callback, null, value); - }, function (err) { - invokeCallback(callback, err.message ? err : new Error(err)); - }); - } else { - callback(null, result); - } - }); -} - -function invokeCallback(callback, error, value) { - try { - callback(error, value); - } catch (e) { - (0, _setImmediate2.default)(rethrow, e); - } -} - -function rethrow(error) { - throw error; -} -module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/asynckit/LICENSE b/node_modules/asynckit/LICENSE deleted file mode 100644 index c9eca5d..0000000 --- a/node_modules/asynckit/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Alex Indigo - -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. diff --git a/node_modules/asynckit/README.md b/node_modules/asynckit/README.md deleted file mode 100644 index ddcc7e6..0000000 --- a/node_modules/asynckit/README.md +++ /dev/null @@ -1,233 +0,0 @@ -# asynckit [![NPM Module](https://img.shields.io/npm/v/asynckit.svg?style=flat)](https://www.npmjs.com/package/asynckit) - -Minimal async jobs utility library, with streams support. - -[![PhantomJS Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=browser&style=flat)](https://travis-ci.org/alexindigo/asynckit) -[![Linux Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=linux:0.12-6.x&style=flat)](https://travis-ci.org/alexindigo/asynckit) -[![Windows Build](https://img.shields.io/appveyor/ci/alexindigo/asynckit/v0.4.0.svg?label=windows:0.12-6.x&style=flat)](https://ci.appveyor.com/project/alexindigo/asynckit) - -[![Coverage Status](https://img.shields.io/coveralls/alexindigo/asynckit/v0.4.0.svg?label=code+coverage&style=flat)](https://coveralls.io/github/alexindigo/asynckit?branch=master) -[![Dependency Status](https://img.shields.io/david/alexindigo/asynckit/v0.4.0.svg?style=flat)](https://david-dm.org/alexindigo/asynckit) -[![bitHound Overall Score](https://www.bithound.io/github/alexindigo/asynckit/badges/score.svg)](https://www.bithound.io/github/alexindigo/asynckit) - - - -AsyncKit provides harness for `parallel` and `serial` iterators over list of items represented by arrays or objects. -Optionally it accepts abort function (should be synchronously return by iterator for each item), and terminates left over jobs upon an error event. For specific iteration order built-in (`ascending` and `descending`) and custom sort helpers also supported, via `asynckit.serialOrdered` method. - -It ensures async operations to keep behavior more stable and prevent `Maximum call stack size exceeded` errors, from sync iterators. - -| compression | size | -| :----------------- | -------: | -| asynckit.js | 12.34 kB | -| asynckit.min.js | 4.11 kB | -| asynckit.min.js.gz | 1.47 kB | - - -## Install - -```sh -$ npm install --save asynckit -``` - -## Examples - -### Parallel Jobs - -Runs iterator over provided array in parallel. Stores output in the `result` array, -on the matching positions. In unlikely event of an error from one of the jobs, -will terminate rest of the active jobs (if abort function is provided) -and return error along with salvaged data to the main callback function. - -#### Input Array - -```javascript -var parallel = require('asynckit').parallel - , assert = require('assert') - ; - -var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] - , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] - , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] - , target = [] - ; - -parallel(source, asyncJob, function(err, result) -{ - assert.deepEqual(result, expectedResult); - assert.deepEqual(target, expectedTarget); -}); - -// async job accepts one element from the array -// and a callback function -function asyncJob(item, cb) -{ - // different delays (in ms) per item - var delay = item * 25; - - // pretend different jobs take different time to finish - // and not in consequential order - var timeoutId = setTimeout(function() { - target.push(item); - cb(null, item * 2); - }, delay); - - // allow to cancel "leftover" jobs upon error - // return function, invoking of which will abort this job - return clearTimeout.bind(null, timeoutId); -} -``` - -More examples could be found in [test/test-parallel-array.js](test/test-parallel-array.js). - -#### Input Object - -Also it supports named jobs, listed via object. - -```javascript -var parallel = require('asynckit/parallel') - , assert = require('assert') - ; - -var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } - , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } - , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] - , expectedKeys = [ 'first', 'one', 'two', 'four', 'eight', 'sixteen', 'thirtyTwo', 'sixtyFour' ] - , target = [] - , keys = [] - ; - -parallel(source, asyncJob, function(err, result) -{ - assert.deepEqual(result, expectedResult); - assert.deepEqual(target, expectedTarget); - assert.deepEqual(keys, expectedKeys); -}); - -// supports full value, key, callback (shortcut) interface -function asyncJob(item, key, cb) -{ - // different delays (in ms) per item - var delay = item * 25; - - // pretend different jobs take different time to finish - // and not in consequential order - var timeoutId = setTimeout(function() { - keys.push(key); - target.push(item); - cb(null, item * 2); - }, delay); - - // allow to cancel "leftover" jobs upon error - // return function, invoking of which will abort this job - return clearTimeout.bind(null, timeoutId); -} -``` - -More examples could be found in [test/test-parallel-object.js](test/test-parallel-object.js). - -### Serial Jobs - -Runs iterator over provided array sequentially. Stores output in the `result` array, -on the matching positions. In unlikely event of an error from one of the jobs, -will not proceed to the rest of the items in the list -and return error along with salvaged data to the main callback function. - -#### Input Array - -```javascript -var serial = require('asynckit/serial') - , assert = require('assert') - ; - -var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] - , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] - , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] - , target = [] - ; - -serial(source, asyncJob, function(err, result) -{ - assert.deepEqual(result, expectedResult); - assert.deepEqual(target, expectedTarget); -}); - -// extended interface (item, key, callback) -// also supported for arrays -function asyncJob(item, key, cb) -{ - target.push(key); - - // it will be automatically made async - // even it iterator "returns" in the same event loop - cb(null, item * 2); -} -``` - -More examples could be found in [test/test-serial-array.js](test/test-serial-array.js). - -#### Input Object - -Also it supports named jobs, listed via object. - -```javascript -var serial = require('asynckit').serial - , assert = require('assert') - ; - -var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] - , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] - , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] - , target = [] - ; - -var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } - , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } - , expectedTarget = [ 1, 1, 4, 16, 64, 32, 8, 2 ] - , target = [] - ; - - -serial(source, asyncJob, function(err, result) -{ - assert.deepEqual(result, expectedResult); - assert.deepEqual(target, expectedTarget); -}); - -// shortcut interface (item, callback) -// works for object as well as for the arrays -function asyncJob(item, cb) -{ - target.push(item); - - // it will be automatically made async - // even it iterator "returns" in the same event loop - cb(null, item * 2); -} -``` - -More examples could be found in [test/test-serial-object.js](test/test-serial-object.js). - -_Note: Since _object_ is an _unordered_ collection of properties, -it may produce unexpected results with sequential iterations. -Whenever order of the jobs' execution is important please use `serialOrdered` method._ - -### Ordered Serial Iterations - -TBD - -For example [compare-property](compare-property) package. - -### Streaming interface - -TBD - -## Want to Know More? - -More examples can be found in [test folder](test/). - -Or open an [issue](https://github.com/alexindigo/asynckit/issues) with questions and/or suggestions. - -## License - -AsyncKit is licensed under the MIT license. diff --git a/node_modules/asynckit/bench.js b/node_modules/asynckit/bench.js deleted file mode 100644 index c612f1a..0000000 --- a/node_modules/asynckit/bench.js +++ /dev/null @@ -1,76 +0,0 @@ -/* eslint no-console: "off" */ - -var asynckit = require('./') - , async = require('async') - , assert = require('assert') - , expected = 0 - ; - -var Benchmark = require('benchmark'); -var suite = new Benchmark.Suite; - -var source = []; -for (var z = 1; z < 100; z++) -{ - source.push(z); - expected += z; -} - -suite -// add tests - -.add('async.map', function(deferred) -{ - var total = 0; - - async.map(source, - function(i, cb) - { - setImmediate(function() - { - total += i; - cb(null, total); - }); - }, - function(err, result) - { - assert.ifError(err); - assert.equal(result[result.length - 1], expected); - deferred.resolve(); - }); -}, {'defer': true}) - - -.add('asynckit.parallel', function(deferred) -{ - var total = 0; - - asynckit.parallel(source, - function(i, cb) - { - setImmediate(function() - { - total += i; - cb(null, total); - }); - }, - function(err, result) - { - assert.ifError(err); - assert.equal(result[result.length - 1], expected); - deferred.resolve(); - }); -}, {'defer': true}) - - -// add listeners -.on('cycle', function(ev) -{ - console.log(String(ev.target)); -}) -.on('complete', function() -{ - console.log('Fastest is ' + this.filter('fastest').map('name')); -}) -// run async -.run({ 'async': true }); diff --git a/node_modules/asynckit/index.js b/node_modules/asynckit/index.js deleted file mode 100644 index 455f945..0000000 --- a/node_modules/asynckit/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = -{ - parallel : require('./parallel.js'), - serial : require('./serial.js'), - serialOrdered : require('./serialOrdered.js') -}; diff --git a/node_modules/asynckit/lib/abort.js b/node_modules/asynckit/lib/abort.js deleted file mode 100644 index 114367e..0000000 --- a/node_modules/asynckit/lib/abort.js +++ /dev/null @@ -1,29 +0,0 @@ -// API -module.exports = abort; - -/** - * Aborts leftover active jobs - * - * @param {object} state - current state object - */ -function abort(state) -{ - Object.keys(state.jobs).forEach(clean.bind(state)); - - // reset leftover jobs - state.jobs = {}; -} - -/** - * Cleans up leftover job by invoking abort function for the provided job id - * - * @this state - * @param {string|number} key - job id to abort - */ -function clean(key) -{ - if (typeof this.jobs[key] == 'function') - { - this.jobs[key](); - } -} diff --git a/node_modules/asynckit/lib/async.js b/node_modules/asynckit/lib/async.js deleted file mode 100644 index 7f1288a..0000000 --- a/node_modules/asynckit/lib/async.js +++ /dev/null @@ -1,34 +0,0 @@ -var defer = require('./defer.js'); - -// API -module.exports = async; - -/** - * Runs provided callback asynchronously - * even if callback itself is not - * - * @param {function} callback - callback to invoke - * @returns {function} - augmented callback - */ -function async(callback) -{ - var isAsync = false; - - // check if async happened - defer(function() { isAsync = true; }); - - return function async_callback(err, result) - { - if (isAsync) - { - callback(err, result); - } - else - { - defer(function nextTick_callback() - { - callback(err, result); - }); - } - }; -} diff --git a/node_modules/asynckit/lib/defer.js b/node_modules/asynckit/lib/defer.js deleted file mode 100644 index b67110c..0000000 --- a/node_modules/asynckit/lib/defer.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = defer; - -/** - * Runs provided function on next iteration of the event loop - * - * @param {function} fn - function to run - */ -function defer(fn) -{ - var nextTick = typeof setImmediate == 'function' - ? setImmediate - : ( - typeof process == 'object' && typeof process.nextTick == 'function' - ? process.nextTick - : null - ); - - if (nextTick) - { - nextTick(fn); - } - else - { - setTimeout(fn, 0); - } -} diff --git a/node_modules/asynckit/lib/iterate.js b/node_modules/asynckit/lib/iterate.js deleted file mode 100644 index 5d2839a..0000000 --- a/node_modules/asynckit/lib/iterate.js +++ /dev/null @@ -1,75 +0,0 @@ -var async = require('./async.js') - , abort = require('./abort.js') - ; - -// API -module.exports = iterate; - -/** - * Iterates over each job object - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {object} state - current job status - * @param {function} callback - invoked when all elements processed - */ -function iterate(list, iterator, state, callback) -{ - // store current index - var key = state['keyedList'] ? state['keyedList'][state.index] : state.index; - - state.jobs[key] = runJob(iterator, key, list[key], function(error, output) - { - // don't repeat yourself - // skip secondary callbacks - if (!(key in state.jobs)) - { - return; - } - - // clean up jobs - delete state.jobs[key]; - - if (error) - { - // don't process rest of the results - // stop still active jobs - // and reset the list - abort(state); - } - else - { - state.results[key] = output; - } - - // return salvaged results - callback(error, state.results); - }); -} - -/** - * Runs iterator over provided job element - * - * @param {function} iterator - iterator to invoke - * @param {string|number} key - key/index of the element in the list of jobs - * @param {mixed} item - job description - * @param {function} callback - invoked after iterator is done with the job - * @returns {function|mixed} - job abort function or something else - */ -function runJob(iterator, key, item, callback) -{ - var aborter; - - // allow shortcut if iterator expects only two arguments - if (iterator.length == 2) - { - aborter = iterator(item, async(callback)); - } - // otherwise go with full three arguments - else - { - aborter = iterator(item, key, async(callback)); - } - - return aborter; -} diff --git a/node_modules/asynckit/lib/readable_asynckit.js b/node_modules/asynckit/lib/readable_asynckit.js deleted file mode 100644 index 78ad240..0000000 --- a/node_modules/asynckit/lib/readable_asynckit.js +++ /dev/null @@ -1,91 +0,0 @@ -var streamify = require('./streamify.js') - , defer = require('./defer.js') - ; - -// API -module.exports = ReadableAsyncKit; - -/** - * Base constructor for all streams - * used to hold properties/methods - */ -function ReadableAsyncKit() -{ - ReadableAsyncKit.super_.apply(this, arguments); - - // list of active jobs - this.jobs = {}; - - // add stream methods - this.destroy = destroy; - this._start = _start; - this._read = _read; -} - -/** - * Destroys readable stream, - * by aborting outstanding jobs - * - * @returns {void} - */ -function destroy() -{ - if (this.destroyed) - { - return; - } - - this.destroyed = true; - - if (typeof this.terminator == 'function') - { - this.terminator(); - } -} - -/** - * Starts provided jobs in async manner - * - * @private - */ -function _start() -{ - // first argument – runner function - var runner = arguments[0] - // take away first argument - , args = Array.prototype.slice.call(arguments, 1) - // second argument - input data - , input = args[0] - // last argument - result callback - , endCb = streamify.callback.call(this, args[args.length - 1]) - ; - - args[args.length - 1] = endCb; - // third argument - iterator - args[1] = streamify.iterator.call(this, args[1]); - - // allow time for proper setup - defer(function() - { - if (!this.destroyed) - { - this.terminator = runner.apply(null, args); - } - else - { - endCb(null, Array.isArray(input) ? [] : {}); - } - }.bind(this)); -} - - -/** - * Implement _read to comply with Readable streams - * Doesn't really make sense for flowing object mode - * - * @private - */ -function _read() -{ - -} diff --git a/node_modules/asynckit/lib/readable_parallel.js b/node_modules/asynckit/lib/readable_parallel.js deleted file mode 100644 index 5d2929f..0000000 --- a/node_modules/asynckit/lib/readable_parallel.js +++ /dev/null @@ -1,25 +0,0 @@ -var parallel = require('../parallel.js'); - -// API -module.exports = ReadableParallel; - -/** - * Streaming wrapper to `asynckit.parallel` - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {stream.Readable#} - */ -function ReadableParallel(list, iterator, callback) -{ - if (!(this instanceof ReadableParallel)) - { - return new ReadableParallel(list, iterator, callback); - } - - // turn on object mode - ReadableParallel.super_.call(this, {objectMode: true}); - - this._start(parallel, list, iterator, callback); -} diff --git a/node_modules/asynckit/lib/readable_serial.js b/node_modules/asynckit/lib/readable_serial.js deleted file mode 100644 index 7822698..0000000 --- a/node_modules/asynckit/lib/readable_serial.js +++ /dev/null @@ -1,25 +0,0 @@ -var serial = require('../serial.js'); - -// API -module.exports = ReadableSerial; - -/** - * Streaming wrapper to `asynckit.serial` - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {stream.Readable#} - */ -function ReadableSerial(list, iterator, callback) -{ - if (!(this instanceof ReadableSerial)) - { - return new ReadableSerial(list, iterator, callback); - } - - // turn on object mode - ReadableSerial.super_.call(this, {objectMode: true}); - - this._start(serial, list, iterator, callback); -} diff --git a/node_modules/asynckit/lib/readable_serial_ordered.js b/node_modules/asynckit/lib/readable_serial_ordered.js deleted file mode 100644 index 3de89c4..0000000 --- a/node_modules/asynckit/lib/readable_serial_ordered.js +++ /dev/null @@ -1,29 +0,0 @@ -var serialOrdered = require('../serialOrdered.js'); - -// API -module.exports = ReadableSerialOrdered; -// expose sort helpers -module.exports.ascending = serialOrdered.ascending; -module.exports.descending = serialOrdered.descending; - -/** - * Streaming wrapper to `asynckit.serialOrdered` - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} sortMethod - custom sort function - * @param {function} callback - invoked when all elements processed - * @returns {stream.Readable#} - */ -function ReadableSerialOrdered(list, iterator, sortMethod, callback) -{ - if (!(this instanceof ReadableSerialOrdered)) - { - return new ReadableSerialOrdered(list, iterator, sortMethod, callback); - } - - // turn on object mode - ReadableSerialOrdered.super_.call(this, {objectMode: true}); - - this._start(serialOrdered, list, iterator, sortMethod, callback); -} diff --git a/node_modules/asynckit/lib/state.js b/node_modules/asynckit/lib/state.js deleted file mode 100644 index cbea7ad..0000000 --- a/node_modules/asynckit/lib/state.js +++ /dev/null @@ -1,37 +0,0 @@ -// API -module.exports = state; - -/** - * Creates initial state object - * for iteration over list - * - * @param {array|object} list - list to iterate over - * @param {function|null} sortMethod - function to use for keys sort, - * or `null` to keep them as is - * @returns {object} - initial state object - */ -function state(list, sortMethod) -{ - var isNamedList = !Array.isArray(list) - , initState = - { - index : 0, - keyedList: isNamedList || sortMethod ? Object.keys(list) : null, - jobs : {}, - results : isNamedList ? {} : [], - size : isNamedList ? Object.keys(list).length : list.length - } - ; - - if (sortMethod) - { - // sort array keys based on it's values - // sort object's keys just on own merit - initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) - { - return sortMethod(list[a], list[b]); - }); - } - - return initState; -} diff --git a/node_modules/asynckit/lib/streamify.js b/node_modules/asynckit/lib/streamify.js deleted file mode 100644 index f56a1c9..0000000 --- a/node_modules/asynckit/lib/streamify.js +++ /dev/null @@ -1,141 +0,0 @@ -var async = require('./async.js'); - -// API -module.exports = { - iterator: wrapIterator, - callback: wrapCallback -}; - -/** - * Wraps iterators with long signature - * - * @this ReadableAsyncKit# - * @param {function} iterator - function to wrap - * @returns {function} - wrapped function - */ -function wrapIterator(iterator) -{ - var stream = this; - - return function(item, key, cb) - { - var aborter - , wrappedCb = async(wrapIteratorCallback.call(stream, cb, key)) - ; - - stream.jobs[key] = wrappedCb; - - // it's either shortcut (item, cb) - if (iterator.length == 2) - { - aborter = iterator(item, wrappedCb); - } - // or long format (item, key, cb) - else - { - aborter = iterator(item, key, wrappedCb); - } - - return aborter; - }; -} - -/** - * Wraps provided callback function - * allowing to execute snitch function before - * real callback - * - * @this ReadableAsyncKit# - * @param {function} callback - function to wrap - * @returns {function} - wrapped function - */ -function wrapCallback(callback) -{ - var stream = this; - - var wrapped = function(error, result) - { - return finisher.call(stream, error, result, callback); - }; - - return wrapped; -} - -/** - * Wraps provided iterator callback function - * makes sure snitch only called once, - * but passes secondary calls to the original callback - * - * @this ReadableAsyncKit# - * @param {function} callback - callback to wrap - * @param {number|string} key - iteration key - * @returns {function} wrapped callback - */ -function wrapIteratorCallback(callback, key) -{ - var stream = this; - - return function(error, output) - { - // don't repeat yourself - if (!(key in stream.jobs)) - { - callback(error, output); - return; - } - - // clean up jobs - delete stream.jobs[key]; - - return streamer.call(stream, error, {key: key, value: output}, callback); - }; -} - -/** - * Stream wrapper for iterator callback - * - * @this ReadableAsyncKit# - * @param {mixed} error - error response - * @param {mixed} output - iterator output - * @param {function} callback - callback that expects iterator results - */ -function streamer(error, output, callback) -{ - if (error && !this.error) - { - this.error = error; - this.pause(); - this.emit('error', error); - // send back value only, as expected - callback(error, output && output.value); - return; - } - - // stream stuff - this.push(output); - - // back to original track - // send back value only, as expected - callback(error, output && output.value); -} - -/** - * Stream wrapper for finishing callback - * - * @this ReadableAsyncKit# - * @param {mixed} error - error response - * @param {mixed} output - iterator output - * @param {function} callback - callback that expects final results - */ -function finisher(error, output, callback) -{ - // signal end of the stream - // only for successfully finished streams - if (!error) - { - this.push(null); - } - - // back to original track - callback(error, output); -} diff --git a/node_modules/asynckit/lib/terminator.js b/node_modules/asynckit/lib/terminator.js deleted file mode 100644 index d6eb992..0000000 --- a/node_modules/asynckit/lib/terminator.js +++ /dev/null @@ -1,29 +0,0 @@ -var abort = require('./abort.js') - , async = require('./async.js') - ; - -// API -module.exports = terminator; - -/** - * Terminates jobs in the attached state context - * - * @this AsyncKitState# - * @param {function} callback - final callback to invoke after termination - */ -function terminator(callback) -{ - if (!Object.keys(this.jobs).length) - { - return; - } - - // fast forward iteration index - this.index = this.size; - - // abort jobs - abort(this); - - // send back results we have so far - async(callback)(null, this.results); -} diff --git a/node_modules/asynckit/package.json b/node_modules/asynckit/package.json deleted file mode 100644 index 79c1686..0000000 --- a/node_modules/asynckit/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_from": "asynckit@^0.4.0", - "_id": "asynckit@0.4.0", - "_inBundle": false, - "_integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "_location": "/asynckit", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "asynckit@^0.4.0", - "name": "asynckit", - "escapedName": "asynckit", - "rawSpec": "^0.4.0", - "saveSpec": null, - "fetchSpec": "^0.4.0" - }, - "_requiredBy": [ - "/form-data" - ], - "_resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "_shasum": "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79", - "_spec": "asynckit@^0.4.0", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/form-data", - "author": { - "name": "Alex Indigo", - "email": "iam@alexindigo.com" - }, - "bugs": { - "url": "https://github.com/alexindigo/asynckit/issues" - }, - "bundleDependencies": false, - "dependencies": {}, - "deprecated": false, - "description": "Minimal async jobs utility library, with streams support", - "devDependencies": { - "browserify": "^13.0.0", - "browserify-istanbul": "^2.0.0", - "coveralls": "^2.11.9", - "eslint": "^2.9.0", - "istanbul": "^0.4.3", - "obake": "^0.1.2", - "phantomjs-prebuilt": "^2.1.7", - "pre-commit": "^1.1.3", - "reamde": "^1.1.0", - "rimraf": "^2.5.2", - "size-table": "^0.2.0", - "tap-spec": "^4.1.1", - "tape": "^4.5.1" - }, - "homepage": "https://github.com/alexindigo/asynckit#readme", - "keywords": [ - "async", - "jobs", - "parallel", - "serial", - "iterator", - "array", - "object", - "stream", - "destroy", - "terminate", - "abort" - ], - "license": "MIT", - "main": "index.js", - "name": "asynckit", - "pre-commit": [ - "clean", - "lint", - "test", - "browser", - "report", - "size" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/alexindigo/asynckit.git" - }, - "scripts": { - "browser": "browserify -t browserify-istanbul test/lib/browserify_adjustment.js test/test-*.js | obake --coverage | tap-spec", - "clean": "rimraf coverage", - "debug": "tape test/test-*.js", - "lint": "eslint *.js lib/*.js test/*.js", - "report": "istanbul report", - "size": "browserify index.js | size-table asynckit", - "test": "istanbul cover --reporter=json tape -- 'test/test-*.js' | tap-spec", - "win-test": "tape test/test-*.js" - }, - "version": "0.4.0" -} diff --git a/node_modules/asynckit/parallel.js b/node_modules/asynckit/parallel.js deleted file mode 100644 index 3c50344..0000000 --- a/node_modules/asynckit/parallel.js +++ /dev/null @@ -1,43 +0,0 @@ -var iterate = require('./lib/iterate.js') - , initState = require('./lib/state.js') - , terminator = require('./lib/terminator.js') - ; - -// Public API -module.exports = parallel; - -/** - * Runs iterator over provided array elements in parallel - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function parallel(list, iterator, callback) -{ - var state = initState(list); - - while (state.index < (state['keyedList'] || list).length) - { - iterate(list, iterator, state, function(error, result) - { - if (error) - { - callback(error, result); - return; - } - - // looks like it's the last one - if (Object.keys(state.jobs).length === 0) - { - callback(null, state.results); - return; - } - }); - - state.index++; - } - - return terminator.bind(state, callback); -} diff --git a/node_modules/asynckit/serial.js b/node_modules/asynckit/serial.js deleted file mode 100644 index 6cd949a..0000000 --- a/node_modules/asynckit/serial.js +++ /dev/null @@ -1,17 +0,0 @@ -var serialOrdered = require('./serialOrdered.js'); - -// Public API -module.exports = serial; - -/** - * Runs iterator over provided array elements in series - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function serial(list, iterator, callback) -{ - return serialOrdered(list, iterator, null, callback); -} diff --git a/node_modules/asynckit/serialOrdered.js b/node_modules/asynckit/serialOrdered.js deleted file mode 100644 index 607eafe..0000000 --- a/node_modules/asynckit/serialOrdered.js +++ /dev/null @@ -1,75 +0,0 @@ -var iterate = require('./lib/iterate.js') - , initState = require('./lib/state.js') - , terminator = require('./lib/terminator.js') - ; - -// Public API -module.exports = serialOrdered; -// sorting helpers -module.exports.ascending = ascending; -module.exports.descending = descending; - -/** - * Runs iterator over provided sorted array elements in series - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} sortMethod - custom sort function - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function serialOrdered(list, iterator, sortMethod, callback) -{ - var state = initState(list, sortMethod); - - iterate(list, iterator, state, function iteratorHandler(error, result) - { - if (error) - { - callback(error, result); - return; - } - - state.index++; - - // are we there yet? - if (state.index < (state['keyedList'] || list).length) - { - iterate(list, iterator, state, iteratorHandler); - return; - } - - // done here - callback(null, state.results); - }); - - return terminator.bind(state, callback); -} - -/* - * -- Sort methods - */ - -/** - * sort helper to sort array elements in ascending order - * - * @param {mixed} a - an item to compare - * @param {mixed} b - an item to compare - * @returns {number} - comparison result - */ -function ascending(a, b) -{ - return a < b ? -1 : a > b ? 1 : 0; -} - -/** - * sort helper to sort array elements in descending order - * - * @param {mixed} a - an item to compare - * @param {mixed} b - an item to compare - * @returns {number} - comparison result - */ -function descending(a, b) -{ - return -1 * ascending(a, b); -} diff --git a/node_modules/asynckit/stream.js b/node_modules/asynckit/stream.js deleted file mode 100644 index d43465f..0000000 --- a/node_modules/asynckit/stream.js +++ /dev/null @@ -1,21 +0,0 @@ -var inherits = require('util').inherits - , Readable = require('stream').Readable - , ReadableAsyncKit = require('./lib/readable_asynckit.js') - , ReadableParallel = require('./lib/readable_parallel.js') - , ReadableSerial = require('./lib/readable_serial.js') - , ReadableSerialOrdered = require('./lib/readable_serial_ordered.js') - ; - -// API -module.exports = -{ - parallel : ReadableParallel, - serial : ReadableSerial, - serialOrdered : ReadableSerialOrdered, -}; - -inherits(ReadableAsyncKit, Readable); - -inherits(ReadableParallel, ReadableAsyncKit); -inherits(ReadableSerial, ReadableAsyncKit); -inherits(ReadableSerialOrdered, ReadableAsyncKit); diff --git a/node_modules/aws-sign2/LICENSE b/node_modules/aws-sign2/LICENSE deleted file mode 100644 index a4a9aee..0000000 --- a/node_modules/aws-sign2/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/aws-sign2/README.md b/node_modules/aws-sign2/README.md deleted file mode 100644 index 763564e..0000000 --- a/node_modules/aws-sign2/README.md +++ /dev/null @@ -1,4 +0,0 @@ -aws-sign -======== - -AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module. diff --git a/node_modules/aws-sign2/index.js b/node_modules/aws-sign2/index.js deleted file mode 100644 index fb35f6d..0000000 --- a/node_modules/aws-sign2/index.js +++ /dev/null @@ -1,212 +0,0 @@ - -/*! - * Copyright 2010 LearnBoost - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Module dependencies. - */ - -var crypto = require('crypto') - , parse = require('url').parse - ; - -/** - * Valid keys. - */ - -var keys = - [ 'acl' - , 'location' - , 'logging' - , 'notification' - , 'partNumber' - , 'policy' - , 'requestPayment' - , 'torrent' - , 'uploadId' - , 'uploads' - , 'versionId' - , 'versioning' - , 'versions' - , 'website' - ] - -/** - * Return an "Authorization" header value with the given `options` - * in the form of "AWS :" - * - * @param {Object} options - * @return {String} - * @api private - */ - -function authorization (options) { - return 'AWS ' + options.key + ':' + sign(options) -} - -module.exports = authorization -module.exports.authorization = authorization - -/** - * Simple HMAC-SHA1 Wrapper - * - * @param {Object} options - * @return {String} - * @api private - */ - -function hmacSha1 (options) { - return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64') -} - -module.exports.hmacSha1 = hmacSha1 - -/** - * Create a base64 sha1 HMAC for `options`. - * - * @param {Object} options - * @return {String} - * @api private - */ - -function sign (options) { - options.message = stringToSign(options) - return hmacSha1(options) -} -module.exports.sign = sign - -/** - * Create a base64 sha1 HMAC for `options`. - * - * Specifically to be used with S3 presigned URLs - * - * @param {Object} options - * @return {String} - * @api private - */ - -function signQuery (options) { - options.message = queryStringToSign(options) - return hmacSha1(options) -} -module.exports.signQuery= signQuery - -/** - * Return a string for sign() with the given `options`. - * - * Spec: - * - * \n - * \n - * \n - * \n - * [headers\n] - * - * - * @param {Object} options - * @return {String} - * @api private - */ - -function stringToSign (options) { - var headers = options.amazonHeaders || '' - if (headers) headers += '\n' - var r = - [ options.verb - , options.md5 - , options.contentType - , options.date ? options.date.toUTCString() : '' - , headers + options.resource - ] - return r.join('\n') -} -module.exports.stringToSign = stringToSign - -/** - * Return a string for sign() with the given `options`, but is meant exclusively - * for S3 presigned URLs - * - * Spec: - * - * \n - * - * - * @param {Object} options - * @return {String} - * @api private - */ - -function queryStringToSign (options){ - return 'GET\n\n\n' + options.date + '\n' + options.resource -} -module.exports.queryStringToSign = queryStringToSign - -/** - * Perform the following: - * - * - ignore non-amazon headers - * - lowercase fields - * - sort lexicographically - * - trim whitespace between ":" - * - join with newline - * - * @param {Object} headers - * @return {String} - * @api private - */ - -function canonicalizeHeaders (headers) { - var buf = [] - , fields = Object.keys(headers) - ; - for (var i = 0, len = fields.length; i < len; ++i) { - var field = fields[i] - , val = headers[field] - , field = field.toLowerCase() - ; - if (0 !== field.indexOf('x-amz')) continue - buf.push(field + ':' + val) - } - return buf.sort().join('\n') -} -module.exports.canonicalizeHeaders = canonicalizeHeaders - -/** - * Perform the following: - * - * - ignore non sub-resources - * - sort lexicographically - * - * @param {String} resource - * @return {String} - * @api private - */ - -function canonicalizeResource (resource) { - var url = parse(resource, true) - , path = url.pathname - , buf = [] - ; - - Object.keys(url.query).forEach(function(key){ - if (!~keys.indexOf(key)) return - var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key]) - buf.push(key + val) - }) - - return path + (buf.length ? '?' + buf.sort().join('&') : '') -} -module.exports.canonicalizeResource = canonicalizeResource diff --git a/node_modules/aws-sign2/package.json b/node_modules/aws-sign2/package.json deleted file mode 100644 index 2f1e1eb..0000000 --- a/node_modules/aws-sign2/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "_from": "aws-sign2@~0.7.0", - "_id": "aws-sign2@0.7.0", - "_inBundle": false, - "_integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "_location": "/aws-sign2", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "aws-sign2@~0.7.0", - "name": "aws-sign2", - "escapedName": "aws-sign2", - "rawSpec": "~0.7.0", - "saveSpec": null, - "fetchSpec": "~0.7.0" - }, - "_requiredBy": [ - "/request" - ], - "_resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "_shasum": "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8", - "_spec": "aws-sign2@~0.7.0", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/request", - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "bugs": { - "url": "https://github.com/mikeal/aws-sign/issues" - }, - "bundleDependencies": false, - "dependencies": {}, - "deprecated": false, - "description": "AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.", - "devDependencies": {}, - "engines": { - "node": "*" - }, - "homepage": "https://github.com/mikeal/aws-sign#readme", - "license": "Apache-2.0", - "main": "index.js", - "name": "aws-sign2", - "optionalDependencies": {}, - "repository": { - "url": "git+https://github.com/mikeal/aws-sign.git" - }, - "version": "0.7.0" -} diff --git a/node_modules/aws4/.travis.yml b/node_modules/aws4/.travis.yml deleted file mode 100644 index 178bf31..0000000 --- a/node_modules/aws4/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: node_js -node_js: - - "0.10" - - "0.12" - - "4" - - "6" - - "8" - - "10" - - "12" diff --git a/node_modules/aws4/LICENSE b/node_modules/aws4/LICENSE deleted file mode 100644 index 4f321e5..0000000 --- a/node_modules/aws4/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright 2013 Michael Hart (michael.hart.au@gmail.com) - -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. diff --git a/node_modules/aws4/README.md b/node_modules/aws4/README.md deleted file mode 100644 index f4dc271..0000000 --- a/node_modules/aws4/README.md +++ /dev/null @@ -1,174 +0,0 @@ -aws4 ----- - -[![Build Status](https://api.travis-ci.org/mhart/aws4.png?branch=master)](https://travis-ci.org/github/mhart/aws4) - -A small utility to sign vanilla Node.js http(s) request options using Amazon's -[AWS Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html). - -If you want to sign and send AWS requests in a modern browser, or an environment like [Cloudflare Workers](https://developers.cloudflare.com/workers/), then check out [aws4fetch](https://github.com/mhart/aws4fetch) – otherwise you can also bundle this library for use [in older browsers](./browser). - -The only AWS service that *doesn't* support v4 as of 2020-05-22 is -[SimpleDB](https://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/SDB_API.html) -(it only supports [AWS Signature Version 2](https://github.com/mhart/aws2)). - -It also provides defaults for a number of core AWS headers and -request parameters, making it very easy to query AWS services, or -build out a fully-featured AWS library. - -Example -------- - -```javascript -var http = require('https') -var aws4 = require('aws4') - -// to illustrate usage, we'll create a utility function to request and pipe to stdout -function request(opts) { http.request(opts, function(res) { res.pipe(process.stdout) }).end(opts.body || '') } - -// aws4 will sign an options object as you'd pass to http.request, with an AWS service and region -var opts = { host: 'my-bucket.s3.us-west-1.amazonaws.com', path: '/my-object', service: 's3', region: 'us-west-1' } - -// aws4.sign() will sign and modify these options, ready to pass to http.request -aws4.sign(opts, { accessKeyId: '', secretAccessKey: '' }) - -// or it can get credentials from process.env.AWS_ACCESS_KEY_ID, etc -aws4.sign(opts) - -// for most AWS services, aws4 can figure out the service and region if you pass a host -opts = { host: 'my-bucket.s3.us-west-1.amazonaws.com', path: '/my-object' } - -// usually it will add/modify request headers, but you can also sign the query: -opts = { host: 'my-bucket.s3.amazonaws.com', path: '/?X-Amz-Expires=12345', signQuery: true } - -// and for services with simple hosts, aws4 can infer the host from service and region: -opts = { service: 'sqs', region: 'us-east-1', path: '/?Action=ListQueues' } - -// and if you're using us-east-1, it's the default: -opts = { service: 'sqs', path: '/?Action=ListQueues' } - -aws4.sign(opts) -console.log(opts) -/* -{ - host: 'sqs.us-east-1.amazonaws.com', - path: '/?Action=ListQueues', - headers: { - Host: 'sqs.us-east-1.amazonaws.com', - 'X-Amz-Date': '20121226T061030Z', - Authorization: 'AWS4-HMAC-SHA256 Credential=ABCDEF/20121226/us-east-1/sqs/aws4_request, ...' - } -} -*/ - -// we can now use this to query AWS -request(opts) -/* - - -... -*/ - -// aws4 can infer the HTTP method if a body is passed in -// method will be POST and Content-Type: 'application/x-www-form-urlencoded; charset=utf-8' -request(aws4.sign({ service: 'iam', body: 'Action=ListGroups&Version=2010-05-08' })) -/* - -... -*/ - -// you can specify any custom option or header as per usual -request(aws4.sign({ - service: 'dynamodb', - region: 'ap-southeast-2', - method: 'POST', - path: '/', - headers: { - 'Content-Type': 'application/x-amz-json-1.0', - 'X-Amz-Target': 'DynamoDB_20120810.ListTables' - }, - body: '{}' -})) -/* -{"TableNames":[]} -... -*/ - -// see example.js for examples with other services -``` - -API ---- - -### aws4.sign(requestOptions, [credentials]) - -This calculates and populates the `Authorization` header of -`requestOptions`, and any other necessary AWS headers and/or request -options. Returns `requestOptions` as a convenience for chaining. - -`requestOptions` is an object holding the same options that the node.js -[http.request](https://nodejs.org/docs/latest/api/http.html#http_http_request_options_callback) -function takes. - -The following properties of `requestOptions` are used in the signing or -populated if they don't already exist: - -- `hostname` or `host` (will try to be determined from `service` and `region` if not given) -- `method` (will use `'GET'` if not given or `'POST'` if there is a `body`) -- `path` (will use `'/'` if not given) -- `body` (will use `''` if not given) -- `service` (will try to be calculated from `hostname` or `host` if not given) -- `region` (will try to be calculated from `hostname` or `host` or use `'us-east-1'` if not given) -- `headers['Host']` (will use `hostname` or `host` or be calculated if not given) -- `headers['Content-Type']` (will use `'application/x-www-form-urlencoded; charset=utf-8'` - if not given and there is a `body`) -- `headers['Date']` (used to calculate the signature date if given, otherwise `new Date` is used) - -Your AWS credentials (which can be found in your -[AWS console](https://portal.aws.amazon.com/gp/aws/securityCredentials)) -can be specified in one of two ways: - -- As the second argument, like this: - -```javascript -aws4.sign(requestOptions, { - secretAccessKey: "", - accessKeyId: "", - sessionToken: "" -}) -``` - -- From `process.env`, such as this: - -``` -export AWS_ACCESS_KEY_ID="" -export AWS_SECRET_ACCESS_KEY="" -export AWS_SESSION_TOKEN="" -``` - -(will also use `AWS_ACCESS_KEY` and `AWS_SECRET_KEY` if available) - -The `sessionToken` property and `AWS_SESSION_TOKEN` environment variable are optional for signing -with [IAM STS temporary credentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html). - -Installation ------------- - -With [npm](https://www.npmjs.com/) do: - -``` -npm install aws4 -``` - -Can also be used [in the browser](./browser). - -Thanks ------- - -Thanks to [@jed](https://github.com/jed) for his -[dynamo-client](https://github.com/jed/dynamo-client) lib where I first -committed and subsequently extracted this code. - -Also thanks to the -[official node.js AWS SDK](https://github.com/aws/aws-sdk-js) for giving -me a start on implementing the v4 signature. diff --git a/node_modules/aws4/aws4.js b/node_modules/aws4/aws4.js deleted file mode 100644 index ed282f8..0000000 --- a/node_modules/aws4/aws4.js +++ /dev/null @@ -1,357 +0,0 @@ -var aws4 = exports, - url = require('url'), - querystring = require('querystring'), - crypto = require('crypto'), - lru = require('./lru'), - credentialsCache = lru(1000) - -// http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html - -function hmac(key, string, encoding) { - return crypto.createHmac('sha256', key).update(string, 'utf8').digest(encoding) -} - -function hash(string, encoding) { - return crypto.createHash('sha256').update(string, 'utf8').digest(encoding) -} - -// This function assumes the string has already been percent encoded -function encodeRfc3986(urlEncodedString) { - return urlEncodedString.replace(/[!'()*]/g, function(c) { - return '%' + c.charCodeAt(0).toString(16).toUpperCase() - }) -} - -function encodeRfc3986Full(str) { - return encodeRfc3986(encodeURIComponent(str)) -} - -// request: { path | body, [host], [method], [headers], [service], [region] } -// credentials: { accessKeyId, secretAccessKey, [sessionToken] } -function RequestSigner(request, credentials) { - - if (typeof request === 'string') request = url.parse(request) - - var headers = request.headers = (request.headers || {}), - hostParts = (!this.service || !this.region) && this.matchHost(request.hostname || request.host || headers.Host || headers.host) - - this.request = request - this.credentials = credentials || this.defaultCredentials() - - this.service = request.service || hostParts[0] || '' - this.region = request.region || hostParts[1] || 'us-east-1' - - // SES uses a different domain from the service name - if (this.service === 'email') this.service = 'ses' - - if (!request.method && request.body) - request.method = 'POST' - - if (!headers.Host && !headers.host) { - headers.Host = request.hostname || request.host || this.createHost() - - // If a port is specified explicitly, use it as is - if (request.port) - headers.Host += ':' + request.port - } - if (!request.hostname && !request.host) - request.hostname = headers.Host || headers.host - - this.isCodeCommitGit = this.service === 'codecommit' && request.method === 'GIT' -} - -RequestSigner.prototype.matchHost = function(host) { - var match = (host || '').match(/([^\.]+)\.(?:([^\.]*)\.)?amazonaws\.com(\.cn)?$/) - var hostParts = (match || []).slice(1, 3) - - // ES's hostParts are sometimes the other way round, if the value that is expected - // to be region equals ‘es’ switch them back - // e.g. search-cluster-name-aaaa00aaaa0aaa0aaaaaaa0aaa.us-east-1.es.amazonaws.com - if (hostParts[1] === 'es') - hostParts = hostParts.reverse() - - if (hostParts[1] == 's3') { - hostParts[0] = 's3' - hostParts[1] = 'us-east-1' - } else { - for (var i = 0; i < 2; i++) { - if (/^s3-/.test(hostParts[i])) { - hostParts[1] = hostParts[i].slice(3) - hostParts[0] = 's3' - break - } - } - } - - return hostParts -} - -// http://docs.aws.amazon.com/general/latest/gr/rande.html -RequestSigner.prototype.isSingleRegion = function() { - // Special case for S3 and SimpleDB in us-east-1 - if (['s3', 'sdb'].indexOf(this.service) >= 0 && this.region === 'us-east-1') return true - - return ['cloudfront', 'ls', 'route53', 'iam', 'importexport', 'sts'] - .indexOf(this.service) >= 0 -} - -RequestSigner.prototype.createHost = function() { - var region = this.isSingleRegion() ? '' : '.' + this.region, - subdomain = this.service === 'ses' ? 'email' : this.service - return subdomain + region + '.amazonaws.com' -} - -RequestSigner.prototype.prepareRequest = function() { - this.parsePath() - - var request = this.request, headers = request.headers, query - - if (request.signQuery) { - - this.parsedPath.query = query = this.parsedPath.query || {} - - if (this.credentials.sessionToken) - query['X-Amz-Security-Token'] = this.credentials.sessionToken - - if (this.service === 's3' && !query['X-Amz-Expires']) - query['X-Amz-Expires'] = 86400 - - if (query['X-Amz-Date']) - this.datetime = query['X-Amz-Date'] - else - query['X-Amz-Date'] = this.getDateTime() - - query['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256' - query['X-Amz-Credential'] = this.credentials.accessKeyId + '/' + this.credentialString() - query['X-Amz-SignedHeaders'] = this.signedHeaders() - - } else { - - if (!request.doNotModifyHeaders && !this.isCodeCommitGit) { - if (request.body && !headers['Content-Type'] && !headers['content-type']) - headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8' - - if (request.body && !headers['Content-Length'] && !headers['content-length']) - headers['Content-Length'] = Buffer.byteLength(request.body) - - if (this.credentials.sessionToken && !headers['X-Amz-Security-Token'] && !headers['x-amz-security-token']) - headers['X-Amz-Security-Token'] = this.credentials.sessionToken - - if (this.service === 's3' && !headers['X-Amz-Content-Sha256'] && !headers['x-amz-content-sha256']) - headers['X-Amz-Content-Sha256'] = hash(this.request.body || '', 'hex') - - if (headers['X-Amz-Date'] || headers['x-amz-date']) - this.datetime = headers['X-Amz-Date'] || headers['x-amz-date'] - else - headers['X-Amz-Date'] = this.getDateTime() - } - - delete headers.Authorization - delete headers.authorization - } -} - -RequestSigner.prototype.sign = function() { - if (!this.parsedPath) this.prepareRequest() - - if (this.request.signQuery) { - this.parsedPath.query['X-Amz-Signature'] = this.signature() - } else { - this.request.headers.Authorization = this.authHeader() - } - - this.request.path = this.formatPath() - - return this.request -} - -RequestSigner.prototype.getDateTime = function() { - if (!this.datetime) { - var headers = this.request.headers, - date = new Date(headers.Date || headers.date || new Date) - - this.datetime = date.toISOString().replace(/[:\-]|\.\d{3}/g, '') - - // Remove the trailing 'Z' on the timestamp string for CodeCommit git access - if (this.isCodeCommitGit) this.datetime = this.datetime.slice(0, -1) - } - return this.datetime -} - -RequestSigner.prototype.getDate = function() { - return this.getDateTime().substr(0, 8) -} - -RequestSigner.prototype.authHeader = function() { - return [ - 'AWS4-HMAC-SHA256 Credential=' + this.credentials.accessKeyId + '/' + this.credentialString(), - 'SignedHeaders=' + this.signedHeaders(), - 'Signature=' + this.signature(), - ].join(', ') -} - -RequestSigner.prototype.signature = function() { - var date = this.getDate(), - cacheKey = [this.credentials.secretAccessKey, date, this.region, this.service].join(), - kDate, kRegion, kService, kCredentials = credentialsCache.get(cacheKey) - if (!kCredentials) { - kDate = hmac('AWS4' + this.credentials.secretAccessKey, date) - kRegion = hmac(kDate, this.region) - kService = hmac(kRegion, this.service) - kCredentials = hmac(kService, 'aws4_request') - credentialsCache.set(cacheKey, kCredentials) - } - return hmac(kCredentials, this.stringToSign(), 'hex') -} - -RequestSigner.prototype.stringToSign = function() { - return [ - 'AWS4-HMAC-SHA256', - this.getDateTime(), - this.credentialString(), - hash(this.canonicalString(), 'hex'), - ].join('\n') -} - -RequestSigner.prototype.canonicalString = function() { - if (!this.parsedPath) this.prepareRequest() - - var pathStr = this.parsedPath.path, - query = this.parsedPath.query, - headers = this.request.headers, - queryStr = '', - normalizePath = this.service !== 's3', - decodePath = this.service === 's3' || this.request.doNotEncodePath, - decodeSlashesInPath = this.service === 's3', - firstValOnly = this.service === 's3', - bodyHash - - if (this.service === 's3' && this.request.signQuery) { - bodyHash = 'UNSIGNED-PAYLOAD' - } else if (this.isCodeCommitGit) { - bodyHash = '' - } else { - bodyHash = headers['X-Amz-Content-Sha256'] || headers['x-amz-content-sha256'] || - hash(this.request.body || '', 'hex') - } - - if (query) { - var reducedQuery = Object.keys(query).reduce(function(obj, key) { - if (!key) return obj - obj[encodeRfc3986Full(key)] = !Array.isArray(query[key]) ? query[key] : - (firstValOnly ? query[key][0] : query[key]) - return obj - }, {}) - var encodedQueryPieces = [] - Object.keys(reducedQuery).sort().forEach(function(key) { - if (!Array.isArray(reducedQuery[key])) { - encodedQueryPieces.push(key + '=' + encodeRfc3986Full(reducedQuery[key])) - } else { - reducedQuery[key].map(encodeRfc3986Full).sort() - .forEach(function(val) { encodedQueryPieces.push(key + '=' + val) }) - } - }) - queryStr = encodedQueryPieces.join('&') - } - if (pathStr !== '/') { - if (normalizePath) pathStr = pathStr.replace(/\/{2,}/g, '/') - pathStr = pathStr.split('/').reduce(function(path, piece) { - if (normalizePath && piece === '..') { - path.pop() - } else if (!normalizePath || piece !== '.') { - if (decodePath) piece = decodeURIComponent(piece).replace(/\+/g, ' ') - path.push(encodeRfc3986Full(piece)) - } - return path - }, []).join('/') - if (pathStr[0] !== '/') pathStr = '/' + pathStr - if (decodeSlashesInPath) pathStr = pathStr.replace(/%2F/g, '/') - } - - return [ - this.request.method || 'GET', - pathStr, - queryStr, - this.canonicalHeaders() + '\n', - this.signedHeaders(), - bodyHash, - ].join('\n') -} - -RequestSigner.prototype.canonicalHeaders = function() { - var headers = this.request.headers - function trimAll(header) { - return header.toString().trim().replace(/\s+/g, ' ') - } - return Object.keys(headers) - .sort(function(a, b) { return a.toLowerCase() < b.toLowerCase() ? -1 : 1 }) - .map(function(key) { return key.toLowerCase() + ':' + trimAll(headers[key]) }) - .join('\n') -} - -RequestSigner.prototype.signedHeaders = function() { - return Object.keys(this.request.headers) - .map(function(key) { return key.toLowerCase() }) - .sort() - .join(';') -} - -RequestSigner.prototype.credentialString = function() { - return [ - this.getDate(), - this.region, - this.service, - 'aws4_request', - ].join('/') -} - -RequestSigner.prototype.defaultCredentials = function() { - var env = process.env - return { - accessKeyId: env.AWS_ACCESS_KEY_ID || env.AWS_ACCESS_KEY, - secretAccessKey: env.AWS_SECRET_ACCESS_KEY || env.AWS_SECRET_KEY, - sessionToken: env.AWS_SESSION_TOKEN, - } -} - -RequestSigner.prototype.parsePath = function() { - var path = this.request.path || '/' - - // S3 doesn't always encode characters > 127 correctly and - // all services don't encode characters > 255 correctly - // So if there are non-reserved chars (and it's not already all % encoded), just encode them all - if (/[^0-9A-Za-z;,/?:@&=+$\-_.!~*'()#%]/.test(path)) { - path = encodeURI(decodeURI(path)) - } - - var queryIx = path.indexOf('?'), - query = null - - if (queryIx >= 0) { - query = querystring.parse(path.slice(queryIx + 1)) - path = path.slice(0, queryIx) - } - - this.parsedPath = { - path: path, - query: query, - } -} - -RequestSigner.prototype.formatPath = function() { - var path = this.parsedPath.path, - query = this.parsedPath.query - - if (!query) return path - - // Services don't support empty query string keys - if (query[''] != null) delete query[''] - - return path + '?' + encodeRfc3986(querystring.stringify(query)) -} - -aws4.RequestSigner = RequestSigner - -aws4.sign = function(request, credentials) { - return new RequestSigner(request, credentials).sign() -} diff --git a/node_modules/aws4/lru.js b/node_modules/aws4/lru.js deleted file mode 100644 index 333f66a..0000000 --- a/node_modules/aws4/lru.js +++ /dev/null @@ -1,96 +0,0 @@ -module.exports = function(size) { - return new LruCache(size) -} - -function LruCache(size) { - this.capacity = size | 0 - this.map = Object.create(null) - this.list = new DoublyLinkedList() -} - -LruCache.prototype.get = function(key) { - var node = this.map[key] - if (node == null) return undefined - this.used(node) - return node.val -} - -LruCache.prototype.set = function(key, val) { - var node = this.map[key] - if (node != null) { - node.val = val - } else { - if (!this.capacity) this.prune() - if (!this.capacity) return false - node = new DoublyLinkedNode(key, val) - this.map[key] = node - this.capacity-- - } - this.used(node) - return true -} - -LruCache.prototype.used = function(node) { - this.list.moveToFront(node) -} - -LruCache.prototype.prune = function() { - var node = this.list.pop() - if (node != null) { - delete this.map[node.key] - this.capacity++ - } -} - - -function DoublyLinkedList() { - this.firstNode = null - this.lastNode = null -} - -DoublyLinkedList.prototype.moveToFront = function(node) { - if (this.firstNode == node) return - - this.remove(node) - - if (this.firstNode == null) { - this.firstNode = node - this.lastNode = node - node.prev = null - node.next = null - } else { - node.prev = null - node.next = this.firstNode - node.next.prev = node - this.firstNode = node - } -} - -DoublyLinkedList.prototype.pop = function() { - var lastNode = this.lastNode - if (lastNode != null) { - this.remove(lastNode) - } - return lastNode -} - -DoublyLinkedList.prototype.remove = function(node) { - if (this.firstNode == node) { - this.firstNode = node.next - } else if (node.prev != null) { - node.prev.next = node.next - } - if (this.lastNode == node) { - this.lastNode = node.prev - } else if (node.next != null) { - node.next.prev = node.prev - } -} - - -function DoublyLinkedNode(key, val) { - this.key = key - this.val = val - this.prev = null - this.next = null -} diff --git a/node_modules/aws4/package.json b/node_modules/aws4/package.json deleted file mode 100644 index 2bf6bbf..0000000 --- a/node_modules/aws4/package.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "_from": "aws4@^1.8.0", - "_id": "aws4@1.10.0", - "_inBundle": false, - "_integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", - "_location": "/aws4", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "aws4@^1.8.0", - "name": "aws4", - "escapedName": "aws4", - "rawSpec": "^1.8.0", - "saveSpec": null, - "fetchSpec": "^1.8.0" - }, - "_requiredBy": [ - "/request" - ], - "_resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", - "_shasum": "a17b3a8ea811060e74d47d306122400ad4497ae2", - "_spec": "aws4@^1.8.0", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/request", - "author": { - "name": "Michael Hart", - "email": "michael.hart.au@gmail.com", - "url": "https://github.com/mhart" - }, - "bugs": { - "url": "https://github.com/mhart/aws4/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Signs and prepares requests using AWS Signature Version 4", - "devDependencies": { - "mocha": "^7.1.2", - "should": "^13.2.3" - }, - "homepage": "https://github.com/mhart/aws4#readme", - "license": "MIT", - "main": "aws4.js", - "name": "aws4", - "repository": { - "type": "git", - "url": "git+https://github.com/mhart/aws4.git" - }, - "scripts": { - "integration": "node ./test/slow.js", - "test": "mocha ./test/fast.js -R list" - }, - "version": "1.10.0" -} diff --git a/node_modules/bcrypt-pbkdf/CONTRIBUTING.md b/node_modules/bcrypt-pbkdf/CONTRIBUTING.md deleted file mode 100644 index 401d34e..0000000 --- a/node_modules/bcrypt-pbkdf/CONTRIBUTING.md +++ /dev/null @@ -1,13 +0,0 @@ -# Contributing - -This repository uses [cr.joyent.us](https://cr.joyent.us) (Gerrit) for new -changes. Anyone can submit changes. To get started, see the [cr.joyent.us user -guide](https://github.com/joyent/joyent-gerrit/blob/master/docs/user/README.md). -This repo does not use GitHub pull requests. - -See the [Joyent Engineering -Guidelines](https://github.com/joyent/eng/blob/master/docs/index.md) for general -best practices expected in this repository. - -If you're changing something non-trivial or user-facing, you may want to submit -an issue first. diff --git a/node_modules/bcrypt-pbkdf/LICENSE b/node_modules/bcrypt-pbkdf/LICENSE deleted file mode 100644 index fc58d2a..0000000 --- a/node_modules/bcrypt-pbkdf/LICENSE +++ /dev/null @@ -1,66 +0,0 @@ -The Blowfish portions are under the following license: - -Blowfish block cipher for OpenBSD -Copyright 1997 Niels Provos -All rights reserved. - -Implementation advice by David Mazieres . - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - -The bcrypt_pbkdf portions are under the following license: - -Copyright (c) 2013 Ted Unangst - -Permission to use, copy, modify, and distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - - -Performance improvements (Javascript-specific): - -Copyright 2016, Joyent Inc -Author: Alex Wilson - -Permission to use, copy, modify, and distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/bcrypt-pbkdf/README.md b/node_modules/bcrypt-pbkdf/README.md deleted file mode 100644 index 7551f33..0000000 --- a/node_modules/bcrypt-pbkdf/README.md +++ /dev/null @@ -1,45 +0,0 @@ -Port of the OpenBSD `bcrypt_pbkdf` function to pure Javascript. `npm`-ified -version of [Devi Mandiri's port](https://github.com/devi/tmp/blob/master/js/bcrypt_pbkdf.js), -with some minor performance improvements. The code is copied verbatim (and -un-styled) from Devi's work. - -This product includes software developed by Niels Provos. - -## API - -### `bcrypt_pbkdf.pbkdf(pass, passlen, salt, saltlen, key, keylen, rounds)` - -Derive a cryptographic key of arbitrary length from a given password and salt, -using the OpenBSD `bcrypt_pbkdf` function. This is a combination of Blowfish and -SHA-512. - -See [this article](http://www.tedunangst.com/flak/post/bcrypt-pbkdf) for -further information. - -Parameters: - - * `pass`, a Uint8Array of length `passlen` - * `passlen`, an integer Number - * `salt`, a Uint8Array of length `saltlen` - * `saltlen`, an integer Number - * `key`, a Uint8Array of length `keylen`, will be filled with output - * `keylen`, an integer Number - * `rounds`, an integer Number, number of rounds of the PBKDF to run - -### `bcrypt_pbkdf.hash(sha2pass, sha2salt, out)` - -Calculate a Blowfish hash, given SHA2-512 output of a password and salt. Used as -part of the inner round function in the PBKDF. - -Parameters: - - * `sha2pass`, a Uint8Array of length 64 - * `sha2salt`, a Uint8Array of length 64 - * `out`, a Uint8Array of length 32, will be filled with output - -## License - -This source form is a 1:1 port from the OpenBSD `blowfish.c` and `bcrypt_pbkdf.c`. -As a result, it retains the original copyright and license. The two files are -under slightly different (but compatible) licenses, and are here combined in -one file. For each of the full license texts see `LICENSE`. diff --git a/node_modules/bcrypt-pbkdf/index.js b/node_modules/bcrypt-pbkdf/index.js deleted file mode 100644 index b1b5ad4..0000000 --- a/node_modules/bcrypt-pbkdf/index.js +++ /dev/null @@ -1,556 +0,0 @@ -'use strict'; - -var crypto_hash_sha512 = require('tweetnacl').lowlevel.crypto_hash; - -/* - * This file is a 1:1 port from the OpenBSD blowfish.c and bcrypt_pbkdf.c. As a - * result, it retains the original copyright and license. The two files are - * under slightly different (but compatible) licenses, and are here combined in - * one file. - * - * Credit for the actual porting work goes to: - * Devi Mandiri - */ - -/* - * The Blowfish portions are under the following license: - * - * Blowfish block cipher for OpenBSD - * Copyright 1997 Niels Provos - * All rights reserved. - * - * Implementation advice by David Mazieres . - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * The bcrypt_pbkdf portions are under the following license: - * - * Copyright (c) 2013 Ted Unangst - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * Performance improvements (Javascript-specific): - * - * Copyright 2016, Joyent Inc - * Author: Alex Wilson - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -// Ported from OpenBSD bcrypt_pbkdf.c v1.9 - -var BLF_J = 0; - -var Blowfish = function() { - this.S = [ - new Uint32Array([ - 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, - 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, - 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, - 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, - 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, - 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, - 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, - 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, - 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, - 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, - 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, - 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, - 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, - 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, - 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, - 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, - 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, - 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, - 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, - 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, - 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, - 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, - 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, - 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, - 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, - 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, - 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, - 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, - 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, - 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, - 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, - 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, - 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, - 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, - 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, - 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, - 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, - 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, - 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, - 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, - 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, - 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, - 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, - 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, - 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, - 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, - 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, - 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, - 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, - 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, - 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, - 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, - 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, - 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, - 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, - 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, - 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, - 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, - 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, - 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, - 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, - 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, - 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, - 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a]), - new Uint32Array([ - 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, - 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, - 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, - 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, - 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, - 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, - 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, - 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, - 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, - 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, - 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, - 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, - 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, - 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, - 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, - 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, - 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, - 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, - 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, - 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, - 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, - 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, - 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, - 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, - 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, - 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, - 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, - 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, - 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, - 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, - 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, - 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, - 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, - 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, - 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, - 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, - 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, - 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, - 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, - 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, - 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, - 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, - 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, - 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, - 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, - 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, - 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, - 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, - 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, - 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, - 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, - 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, - 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, - 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, - 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, - 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, - 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, - 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, - 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, - 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, - 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, - 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, - 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, - 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7]), - new Uint32Array([ - 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, - 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, - 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, - 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, - 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, - 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, - 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, - 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, - 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, - 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, - 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, - 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, - 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, - 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, - 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, - 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, - 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, - 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, - 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, - 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, - 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, - 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, - 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, - 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, - 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, - 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, - 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, - 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, - 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, - 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, - 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, - 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, - 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, - 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, - 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, - 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, - 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, - 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, - 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, - 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, - 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, - 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, - 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, - 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, - 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, - 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, - 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, - 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, - 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, - 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, - 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, - 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, - 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, - 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, - 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, - 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, - 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, - 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, - 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, - 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, - 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, - 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, - 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, - 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0]), - new Uint32Array([ - 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, - 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, - 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, - 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, - 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, - 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, - 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, - 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, - 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, - 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, - 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, - 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, - 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, - 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, - 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, - 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, - 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, - 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, - 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, - 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, - 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, - 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, - 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, - 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, - 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, - 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, - 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, - 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, - 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, - 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, - 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, - 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, - 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, - 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, - 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, - 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, - 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, - 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, - 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, - 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, - 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, - 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, - 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, - 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, - 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, - 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, - 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, - 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, - 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, - 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, - 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, - 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, - 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, - 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, - 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, - 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, - 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, - 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, - 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, - 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, - 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, - 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, - 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, - 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6]) - ]; - this.P = new Uint32Array([ - 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, - 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, - 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, - 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, - 0x9216d5d9, 0x8979fb1b]); -}; - -function F(S, x8, i) { - return (((S[0][x8[i+3]] + - S[1][x8[i+2]]) ^ - S[2][x8[i+1]]) + - S[3][x8[i]]); -}; - -Blowfish.prototype.encipher = function(x, x8) { - if (x8 === undefined) { - x8 = new Uint8Array(x.buffer); - if (x.byteOffset !== 0) - x8 = x8.subarray(x.byteOffset); - } - x[0] ^= this.P[0]; - for (var i = 1; i < 16; i += 2) { - x[1] ^= F(this.S, x8, 0) ^ this.P[i]; - x[0] ^= F(this.S, x8, 4) ^ this.P[i+1]; - } - var t = x[0]; - x[0] = x[1] ^ this.P[17]; - x[1] = t; -}; - -Blowfish.prototype.decipher = function(x) { - var x8 = new Uint8Array(x.buffer); - if (x.byteOffset !== 0) - x8 = x8.subarray(x.byteOffset); - x[0] ^= this.P[17]; - for (var i = 16; i > 0; i -= 2) { - x[1] ^= F(this.S, x8, 0) ^ this.P[i]; - x[0] ^= F(this.S, x8, 4) ^ this.P[i-1]; - } - var t = x[0]; - x[0] = x[1] ^ this.P[0]; - x[1] = t; -}; - -function stream2word(data, databytes){ - var i, temp = 0; - for (i = 0; i < 4; i++, BLF_J++) { - if (BLF_J >= databytes) BLF_J = 0; - temp = (temp << 8) | data[BLF_J]; - } - return temp; -}; - -Blowfish.prototype.expand0state = function(key, keybytes) { - var d = new Uint32Array(2), i, k; - var d8 = new Uint8Array(d.buffer); - - for (i = 0, BLF_J = 0; i < 18; i++) { - this.P[i] ^= stream2word(key, keybytes); - } - BLF_J = 0; - - for (i = 0; i < 18; i += 2) { - this.encipher(d, d8); - this.P[i] = d[0]; - this.P[i+1] = d[1]; - } - - for (i = 0; i < 4; i++) { - for (k = 0; k < 256; k += 2) { - this.encipher(d, d8); - this.S[i][k] = d[0]; - this.S[i][k+1] = d[1]; - } - } -}; - -Blowfish.prototype.expandstate = function(data, databytes, key, keybytes) { - var d = new Uint32Array(2), i, k; - - for (i = 0, BLF_J = 0; i < 18; i++) { - this.P[i] ^= stream2word(key, keybytes); - } - - for (i = 0, BLF_J = 0; i < 18; i += 2) { - d[0] ^= stream2word(data, databytes); - d[1] ^= stream2word(data, databytes); - this.encipher(d); - this.P[i] = d[0]; - this.P[i+1] = d[1]; - } - - for (i = 0; i < 4; i++) { - for (k = 0; k < 256; k += 2) { - d[0] ^= stream2word(data, databytes); - d[1] ^= stream2word(data, databytes); - this.encipher(d); - this.S[i][k] = d[0]; - this.S[i][k+1] = d[1]; - } - } - BLF_J = 0; -}; - -Blowfish.prototype.enc = function(data, blocks) { - for (var i = 0; i < blocks; i++) { - this.encipher(data.subarray(i*2)); - } -}; - -Blowfish.prototype.dec = function(data, blocks) { - for (var i = 0; i < blocks; i++) { - this.decipher(data.subarray(i*2)); - } -}; - -var BCRYPT_BLOCKS = 8, - BCRYPT_HASHSIZE = 32; - -function bcrypt_hash(sha2pass, sha2salt, out) { - var state = new Blowfish(), - cdata = new Uint32Array(BCRYPT_BLOCKS), i, - ciphertext = new Uint8Array([79,120,121,99,104,114,111,109,97,116,105, - 99,66,108,111,119,102,105,115,104,83,119,97,116,68,121,110,97,109, - 105,116,101]); //"OxychromaticBlowfishSwatDynamite" - - state.expandstate(sha2salt, 64, sha2pass, 64); - for (i = 0; i < 64; i++) { - state.expand0state(sha2salt, 64); - state.expand0state(sha2pass, 64); - } - - for (i = 0; i < BCRYPT_BLOCKS; i++) - cdata[i] = stream2word(ciphertext, ciphertext.byteLength); - for (i = 0; i < 64; i++) - state.enc(cdata, cdata.byteLength / 8); - - for (i = 0; i < BCRYPT_BLOCKS; i++) { - out[4*i+3] = cdata[i] >>> 24; - out[4*i+2] = cdata[i] >>> 16; - out[4*i+1] = cdata[i] >>> 8; - out[4*i+0] = cdata[i]; - } -}; - -function bcrypt_pbkdf(pass, passlen, salt, saltlen, key, keylen, rounds) { - var sha2pass = new Uint8Array(64), - sha2salt = new Uint8Array(64), - out = new Uint8Array(BCRYPT_HASHSIZE), - tmpout = new Uint8Array(BCRYPT_HASHSIZE), - countsalt = new Uint8Array(saltlen+4), - i, j, amt, stride, dest, count, - origkeylen = keylen; - - if (rounds < 1) - return -1; - if (passlen === 0 || saltlen === 0 || keylen === 0 || - keylen > (out.byteLength * out.byteLength) || saltlen > (1<<20)) - return -1; - - stride = Math.floor((keylen + out.byteLength - 1) / out.byteLength); - amt = Math.floor((keylen + stride - 1) / stride); - - for (i = 0; i < saltlen; i++) - countsalt[i] = salt[i]; - - crypto_hash_sha512(sha2pass, pass, passlen); - - for (count = 1; keylen > 0; count++) { - countsalt[saltlen+0] = count >>> 24; - countsalt[saltlen+1] = count >>> 16; - countsalt[saltlen+2] = count >>> 8; - countsalt[saltlen+3] = count; - - crypto_hash_sha512(sha2salt, countsalt, saltlen + 4); - bcrypt_hash(sha2pass, sha2salt, tmpout); - for (i = out.byteLength; i--;) - out[i] = tmpout[i]; - - for (i = 1; i < rounds; i++) { - crypto_hash_sha512(sha2salt, tmpout, tmpout.byteLength); - bcrypt_hash(sha2pass, sha2salt, tmpout); - for (j = 0; j < out.byteLength; j++) - out[j] ^= tmpout[j]; - } - - amt = Math.min(amt, keylen); - for (i = 0; i < amt; i++) { - dest = i * stride + (count - 1); - if (dest >= origkeylen) - break; - key[dest] = out[i]; - } - keylen -= i; - } - - return 0; -}; - -module.exports = { - BLOCKS: BCRYPT_BLOCKS, - HASHSIZE: BCRYPT_HASHSIZE, - hash: bcrypt_hash, - pbkdf: bcrypt_pbkdf -}; diff --git a/node_modules/bcrypt-pbkdf/package.json b/node_modules/bcrypt-pbkdf/package.json deleted file mode 100644 index 79a94e4..0000000 --- a/node_modules/bcrypt-pbkdf/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "_from": "bcrypt-pbkdf@^1.0.0", - "_id": "bcrypt-pbkdf@1.0.2", - "_inBundle": false, - "_integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "_location": "/bcrypt-pbkdf", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "bcrypt-pbkdf@^1.0.0", - "name": "bcrypt-pbkdf", - "escapedName": "bcrypt-pbkdf", - "rawSpec": "^1.0.0", - "saveSpec": null, - "fetchSpec": "^1.0.0" - }, - "_requiredBy": [ - "/sshpk" - ], - "_resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "_shasum": "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e", - "_spec": "bcrypt-pbkdf@^1.0.0", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/sshpk", - "bugs": { - "url": "https://github.com/joyent/node-bcrypt-pbkdf/issues" - }, - "bundleDependencies": false, - "dependencies": { - "tweetnacl": "^0.14.3" - }, - "deprecated": false, - "description": "Port of the OpenBSD bcrypt_pbkdf function to pure JS", - "devDependencies": {}, - "homepage": "https://github.com/joyent/node-bcrypt-pbkdf#readme", - "license": "BSD-3-Clause", - "main": "index.js", - "name": "bcrypt-pbkdf", - "repository": { - "type": "git", - "url": "git://github.com/joyent/node-bcrypt-pbkdf.git" - }, - "version": "1.0.2" -} diff --git a/node_modules/caseless/LICENSE b/node_modules/caseless/LICENSE deleted file mode 100644 index 61789f4..0000000 --- a/node_modules/caseless/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -1. Definitions. -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: -You must give any other recipients of the Work or Derivative Works a copy of this License; and -You must cause any modified files to carry prominent notices stating that You changed the files; and -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/caseless/README.md b/node_modules/caseless/README.md deleted file mode 100644 index e5077a2..0000000 --- a/node_modules/caseless/README.md +++ /dev/null @@ -1,45 +0,0 @@ -## Caseless -- wrap an object to set and get property with caseless semantics but also preserve caseing. - -This library is incredibly useful when working with HTTP headers. It allows you to get/set/check for headers in a caseless manner while also preserving the caseing of headers the first time they are set. - -## Usage - -```javascript -var headers = {} - , c = caseless(headers) - ; -c.set('a-Header', 'asdf') -c.get('a-header') === 'asdf' -``` - -## has(key) - -Has takes a name and if it finds a matching header will return that header name with the preserved caseing it was set with. - -```javascript -c.has('a-header') === 'a-Header' -``` - -## set(key, value[, clobber=true]) - -Set is fairly straight forward except that if the header exists and clobber is disabled it will add `','+value` to the existing header. - -```javascript -c.set('a-Header', 'fdas') -c.set('a-HEADER', 'more', false) -c.get('a-header') === 'fdsa,more' -``` - -## swap(key) - -Swaps the casing of a header with the new one that is passed in. - -```javascript -var headers = {} - , c = caseless(headers) - ; -c.set('a-Header', 'fdas') -c.swap('a-HEADER') -c.has('a-header') === 'a-HEADER' -headers === {'a-HEADER': 'fdas'} -``` diff --git a/node_modules/caseless/index.js b/node_modules/caseless/index.js deleted file mode 100644 index b194734..0000000 --- a/node_modules/caseless/index.js +++ /dev/null @@ -1,67 +0,0 @@ -function Caseless (dict) { - this.dict = dict || {} -} -Caseless.prototype.set = function (name, value, clobber) { - if (typeof name === 'object') { - for (var i in name) { - this.set(i, name[i], value) - } - } else { - if (typeof clobber === 'undefined') clobber = true - var has = this.has(name) - - if (!clobber && has) this.dict[has] = this.dict[has] + ',' + value - else this.dict[has || name] = value - return has - } -} -Caseless.prototype.has = function (name) { - var keys = Object.keys(this.dict) - , name = name.toLowerCase() - ; - for (var i=0;i 0; -} - -function Chalk(options) { - // We check for this.template here since calling `chalk.constructor()` - // by itself will have a `this` of a previously constructed chalk object - if (!this || !(this instanceof Chalk) || this.template) { - const chalk = {}; - applyOptions(chalk, options); - - chalk.template = function () { - const args = [].slice.call(arguments); - return chalkTag.apply(null, [chalk.template].concat(args)); - }; - - Object.setPrototypeOf(chalk, Chalk.prototype); - Object.setPrototypeOf(chalk.template, chalk); - - chalk.template.constructor = Chalk; - - return chalk.template; - } - - applyOptions(this, options); -} - -// Use bright blue on Windows as the normal blue color is illegible -if (isSimpleWindowsTerm) { - ansiStyles.blue.open = '\u001B[94m'; -} - -for (const key of Object.keys(ansiStyles)) { - ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); - - styles[key] = { - get() { - const codes = ansiStyles[key]; - return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key); - } - }; -} - -styles.visible = { - get() { - return build.call(this, this._styles || [], true, 'visible'); - } -}; - -ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g'); -for (const model of Object.keys(ansiStyles.color.ansi)) { - if (skipModels.has(model)) { - continue; - } - - styles[model] = { - get() { - const level = this.level; - return function () { - const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments); - const codes = { - open, - close: ansiStyles.color.close, - closeRe: ansiStyles.color.closeRe - }; - return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); - }; - } - }; -} - -ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g'); -for (const model of Object.keys(ansiStyles.bgColor.ansi)) { - if (skipModels.has(model)) { - continue; - } - - const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1); - styles[bgModel] = { - get() { - const level = this.level; - return function () { - const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments); - const codes = { - open, - close: ansiStyles.bgColor.close, - closeRe: ansiStyles.bgColor.closeRe - }; - return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); - }; - } - }; -} - -const proto = Object.defineProperties(() => {}, styles); - -function build(_styles, _empty, key) { - const builder = function () { - return applyStyle.apply(builder, arguments); - }; - - builder._styles = _styles; - builder._empty = _empty; - - const self = this; - - Object.defineProperty(builder, 'level', { - enumerable: true, - get() { - return self.level; - }, - set(level) { - self.level = level; - } - }); - - Object.defineProperty(builder, 'enabled', { - enumerable: true, - get() { - return self.enabled; - }, - set(enabled) { - self.enabled = enabled; - } - }); - - // See below for fix regarding invisible grey/dim combination on Windows - builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey'; - - // `__proto__` is used because we must return a function, but there is - // no way to create a function with a different prototype - builder.__proto__ = proto; // eslint-disable-line no-proto - - return builder; -} - -function applyStyle() { - // Support varags, but simply cast to string in case there's only one arg - const args = arguments; - const argsLen = args.length; - let str = String(arguments[0]); - - if (argsLen === 0) { - return ''; - } - - if (argsLen > 1) { - // Don't slice `arguments`, it prevents V8 optimizations - for (let a = 1; a < argsLen; a++) { - str += ' ' + args[a]; - } - } - - if (!this.enabled || this.level <= 0 || !str) { - return this._empty ? '' : str; - } - - // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, - // see https://github.com/chalk/chalk/issues/58 - // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. - const originalDim = ansiStyles.dim.open; - if (isSimpleWindowsTerm && this.hasGrey) { - ansiStyles.dim.open = ''; - } - - for (const code of this._styles.slice().reverse()) { - // Replace any instances already present with a re-opening code - // otherwise only the part of the string until said closing code - // will be colored, and the rest will simply be 'plain'. - str = code.open + str.replace(code.closeRe, code.open) + code.close; - - // Close the styling before a linebreak and reopen - // after next line to fix a bleed issue on macOS - // https://github.com/chalk/chalk/pull/92 - str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`); - } - - // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue - ansiStyles.dim.open = originalDim; - - return str; -} - -function chalkTag(chalk, strings) { - if (!Array.isArray(strings)) { - // If chalk() was called by itself or with a string, - // return the string itself as a string. - return [].slice.call(arguments, 1).join(' '); - } - - const args = [].slice.call(arguments, 2); - const parts = [strings.raw[0]]; - - for (let i = 1; i < strings.length; i++) { - parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&')); - parts.push(String(strings.raw[i])); - } - - return template(chalk, parts.join('')); -} - -Object.defineProperties(Chalk.prototype, styles); - -module.exports = Chalk(); // eslint-disable-line new-cap -module.exports.supportsColor = stdoutColor; -module.exports.default = module.exports; // For TypeScript diff --git a/node_modules/chalk/index.js.flow b/node_modules/chalk/index.js.flow deleted file mode 100644 index 622caaa..0000000 --- a/node_modules/chalk/index.js.flow +++ /dev/null @@ -1,93 +0,0 @@ -// @flow strict - -type TemplateStringsArray = $ReadOnlyArray; - -export type Level = $Values<{ - None: 0, - Basic: 1, - Ansi256: 2, - TrueColor: 3 -}>; - -export type ChalkOptions = {| - enabled?: boolean, - level?: Level -|}; - -export type ColorSupport = {| - level: Level, - hasBasic: boolean, - has256: boolean, - has16m: boolean -|}; - -export interface Chalk { - (...text: string[]): string, - (text: TemplateStringsArray, ...placeholders: string[]): string, - constructor(options?: ChalkOptions): Chalk, - enabled: boolean, - level: Level, - rgb(r: number, g: number, b: number): Chalk, - hsl(h: number, s: number, l: number): Chalk, - hsv(h: number, s: number, v: number): Chalk, - hwb(h: number, w: number, b: number): Chalk, - bgHex(color: string): Chalk, - bgKeyword(color: string): Chalk, - bgRgb(r: number, g: number, b: number): Chalk, - bgHsl(h: number, s: number, l: number): Chalk, - bgHsv(h: number, s: number, v: number): Chalk, - bgHwb(h: number, w: number, b: number): Chalk, - hex(color: string): Chalk, - keyword(color: string): Chalk, - - +reset: Chalk, - +bold: Chalk, - +dim: Chalk, - +italic: Chalk, - +underline: Chalk, - +inverse: Chalk, - +hidden: Chalk, - +strikethrough: Chalk, - - +visible: Chalk, - - +black: Chalk, - +red: Chalk, - +green: Chalk, - +yellow: Chalk, - +blue: Chalk, - +magenta: Chalk, - +cyan: Chalk, - +white: Chalk, - +gray: Chalk, - +grey: Chalk, - +blackBright: Chalk, - +redBright: Chalk, - +greenBright: Chalk, - +yellowBright: Chalk, - +blueBright: Chalk, - +magentaBright: Chalk, - +cyanBright: Chalk, - +whiteBright: Chalk, - - +bgBlack: Chalk, - +bgRed: Chalk, - +bgGreen: Chalk, - +bgYellow: Chalk, - +bgBlue: Chalk, - +bgMagenta: Chalk, - +bgCyan: Chalk, - +bgWhite: Chalk, - +bgBlackBright: Chalk, - +bgRedBright: Chalk, - +bgGreenBright: Chalk, - +bgYellowBright: Chalk, - +bgBlueBright: Chalk, - +bgMagentaBright: Chalk, - +bgCyanBright: Chalk, - +bgWhiteBrigh: Chalk, - - supportsColor: ColorSupport -}; - -declare module.exports: Chalk; diff --git a/node_modules/chalk/license b/node_modules/chalk/license deleted file mode 100644 index e7af2f7..0000000 --- a/node_modules/chalk/license +++ /dev/null @@ -1,9 +0,0 @@ -MIT License - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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. diff --git a/node_modules/chalk/package.json b/node_modules/chalk/package.json deleted file mode 100644 index 1426e11..0000000 --- a/node_modules/chalk/package.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "_from": "chalk@^2.4.2", - "_id": "chalk@2.4.2", - "_inBundle": false, - "_integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "_location": "/chalk", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "chalk@^2.4.2", - "name": "chalk", - "escapedName": "chalk", - "rawSpec": "^2.4.2", - "saveSpec": null, - "fetchSpec": "^2.4.2" - }, - "_requiredBy": [ - "/markdown-link-check" - ], - "_resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "_shasum": "cd42541677a54333cf541a49108c1432b44c9424", - "_spec": "chalk@^2.4.2", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/markdown-link-check", - "bugs": { - "url": "https://github.com/chalk/chalk/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "deprecated": false, - "description": "Terminal string styling done right", - "devDependencies": { - "ava": "*", - "coveralls": "^3.0.0", - "execa": "^0.9.0", - "flow-bin": "^0.68.0", - "import-fresh": "^2.0.0", - "matcha": "^0.7.0", - "nyc": "^11.0.2", - "resolve-from": "^4.0.0", - "typescript": "^2.5.3", - "xo": "*" - }, - "engines": { - "node": ">=4" - }, - "files": [ - "index.js", - "templates.js", - "types/index.d.ts", - "index.js.flow" - ], - "homepage": "https://github.com/chalk/chalk#readme", - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "str", - "ansi", - "style", - "styles", - "tty", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "license": "MIT", - "name": "chalk", - "repository": { - "type": "git", - "url": "git+https://github.com/chalk/chalk.git" - }, - "scripts": { - "bench": "matcha benchmark.js", - "coveralls": "nyc report --reporter=text-lcov | coveralls", - "test": "xo && tsc --project types && flow --max-warnings=0 && nyc ava" - }, - "types": "types/index.d.ts", - "version": "2.4.2", - "xo": { - "envs": [ - "node", - "mocha" - ], - "ignores": [ - "test/_flow.js" - ] - } -} diff --git a/node_modules/chalk/readme.md b/node_modules/chalk/readme.md deleted file mode 100644 index d298e2c..0000000 --- a/node_modules/chalk/readme.md +++ /dev/null @@ -1,314 +0,0 @@ -

      -
      -
      - Chalk -
      -
      -
      -

      - -> Terminal string styling done right - -[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) [![Coverage Status](https://coveralls.io/repos/github/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/github/chalk/chalk?branch=master) [![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) [![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/xojs/xo) [![Mentioned in Awesome Node.js](https://awesome.re/mentioned-badge.svg)](https://github.com/sindresorhus/awesome-nodejs) - -### [See what's new in Chalk 2](https://github.com/chalk/chalk/releases/tag/v2.0.0) - - - - -## Highlights - -- Expressive API -- Highly performant -- Ability to nest styles -- [256/Truecolor color support](#256-and-truecolor-color-support) -- Auto-detects color support -- Doesn't extend `String.prototype` -- Clean and focused -- Actively maintained -- [Used by ~23,000 packages](https://www.npmjs.com/browse/depended/chalk) as of December 31, 2017 - - -## Install - -```console -$ npm install chalk -``` - - - - - - -## Usage - -```js -const chalk = require('chalk'); - -console.log(chalk.blue('Hello world!')); -``` - -Chalk comes with an easy to use composable API where you just chain and nest the styles you want. - -```js -const chalk = require('chalk'); -const log = console.log; - -// Combine styled and normal strings -log(chalk.blue('Hello') + ' World' + chalk.red('!')); - -// Compose multiple styles using the chainable API -log(chalk.blue.bgRed.bold('Hello world!')); - -// Pass in multiple arguments -log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz')); - -// Nest styles -log(chalk.red('Hello', chalk.underline.bgBlue('world') + '!')); - -// Nest styles of the same type even (color, underline, background) -log(chalk.green( - 'I am a green line ' + - chalk.blue.underline.bold('with a blue substring') + - ' that becomes green again!' -)); - -// ES2015 template literal -log(` -CPU: ${chalk.red('90%')} -RAM: ${chalk.green('40%')} -DISK: ${chalk.yellow('70%')} -`); - -// ES2015 tagged template literal -log(chalk` -CPU: {red ${cpu.totalPercent}%} -RAM: {green ${ram.used / ram.total * 100}%} -DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%} -`); - -// Use RGB colors in terminal emulators that support it. -log(chalk.keyword('orange')('Yay for orange colored text!')); -log(chalk.rgb(123, 45, 67).underline('Underlined reddish color')); -log(chalk.hex('#DEADED').bold('Bold gray!')); -``` - -Easily define your own themes: - -```js -const chalk = require('chalk'); - -const error = chalk.bold.red; -const warning = chalk.keyword('orange'); - -console.log(error('Error!')); -console.log(warning('Warning!')); -``` - -Take advantage of console.log [string substitution](https://nodejs.org/docs/latest/api/console.html#console_console_log_data_args): - -```js -const name = 'Sindre'; -console.log(chalk.green('Hello %s'), name); -//=> 'Hello Sindre' -``` - - -## API - -### chalk.` -Browserstack-logo-white - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/node_modules/psl/data/rules.json b/node_modules/psl/data/rules.json deleted file mode 100644 index e19abdc..0000000 --- a/node_modules/psl/data/rules.json +++ /dev/null @@ -1,8834 +0,0 @@ -[ -"ac", -"com.ac", -"edu.ac", -"gov.ac", -"net.ac", -"mil.ac", -"org.ac", -"ad", -"nom.ad", -"ae", -"co.ae", -"net.ae", -"org.ae", -"sch.ae", -"ac.ae", -"gov.ae", -"mil.ae", -"aero", -"accident-investigation.aero", -"accident-prevention.aero", -"aerobatic.aero", -"aeroclub.aero", -"aerodrome.aero", -"agents.aero", -"aircraft.aero", -"airline.aero", -"airport.aero", -"air-surveillance.aero", -"airtraffic.aero", -"air-traffic-control.aero", -"ambulance.aero", -"amusement.aero", -"association.aero", -"author.aero", -"ballooning.aero", -"broker.aero", -"caa.aero", -"cargo.aero", -"catering.aero", -"certification.aero", -"championship.aero", -"charter.aero", -"civilaviation.aero", -"club.aero", -"conference.aero", -"consultant.aero", -"consulting.aero", -"control.aero", -"council.aero", -"crew.aero", -"design.aero", -"dgca.aero", -"educator.aero", -"emergency.aero", -"engine.aero", -"engineer.aero", -"entertainment.aero", -"equipment.aero", -"exchange.aero", -"express.aero", -"federation.aero", -"flight.aero", -"freight.aero", -"fuel.aero", -"gliding.aero", -"government.aero", -"groundhandling.aero", -"group.aero", -"hanggliding.aero", -"homebuilt.aero", -"insurance.aero", -"journal.aero", -"journalist.aero", -"leasing.aero", -"logistics.aero", -"magazine.aero", -"maintenance.aero", -"media.aero", -"microlight.aero", -"modelling.aero", -"navigation.aero", -"parachuting.aero", -"paragliding.aero", -"passenger-association.aero", -"pilot.aero", -"press.aero", -"production.aero", -"recreation.aero", -"repbody.aero", -"res.aero", -"research.aero", -"rotorcraft.aero", -"safety.aero", -"scientist.aero", -"services.aero", -"show.aero", -"skydiving.aero", -"software.aero", -"student.aero", -"trader.aero", -"trading.aero", -"trainer.aero", -"union.aero", -"workinggroup.aero", -"works.aero", -"af", -"gov.af", -"com.af", -"org.af", -"net.af", -"edu.af", -"ag", -"com.ag", -"org.ag", -"net.ag", -"co.ag", -"nom.ag", -"ai", -"off.ai", -"com.ai", -"net.ai", -"org.ai", -"al", -"com.al", -"edu.al", -"gov.al", -"mil.al", -"net.al", -"org.al", -"am", -"co.am", -"com.am", -"commune.am", -"net.am", -"org.am", -"ao", -"ed.ao", -"gv.ao", -"og.ao", -"co.ao", -"pb.ao", -"it.ao", -"aq", -"ar", -"com.ar", -"edu.ar", -"gob.ar", -"gov.ar", -"int.ar", -"mil.ar", -"musica.ar", -"net.ar", -"org.ar", -"tur.ar", -"arpa", -"e164.arpa", -"in-addr.arpa", -"ip6.arpa", -"iris.arpa", -"uri.arpa", -"urn.arpa", -"as", -"gov.as", -"asia", -"at", -"ac.at", -"co.at", -"gv.at", -"or.at", -"au", -"com.au", -"net.au", -"org.au", -"edu.au", -"gov.au", -"asn.au", -"id.au", -"info.au", -"conf.au", -"oz.au", -"act.au", -"nsw.au", -"nt.au", -"qld.au", -"sa.au", -"tas.au", -"vic.au", -"wa.au", -"act.edu.au", -"catholic.edu.au", -"nsw.edu.au", -"nt.edu.au", -"qld.edu.au", -"sa.edu.au", -"tas.edu.au", -"vic.edu.au", -"wa.edu.au", -"qld.gov.au", -"sa.gov.au", -"tas.gov.au", -"vic.gov.au", -"wa.gov.au", -"education.tas.edu.au", -"schools.nsw.edu.au", -"aw", -"com.aw", -"ax", -"az", -"com.az", -"net.az", -"int.az", -"gov.az", -"org.az", -"edu.az", -"info.az", -"pp.az", -"mil.az", -"name.az", -"pro.az", -"biz.az", -"ba", -"com.ba", -"edu.ba", -"gov.ba", -"mil.ba", -"net.ba", -"org.ba", -"bb", -"biz.bb", -"co.bb", -"com.bb", -"edu.bb", -"gov.bb", -"info.bb", -"net.bb", -"org.bb", -"store.bb", -"tv.bb", -"*.bd", -"be", -"ac.be", -"bf", -"gov.bf", -"bg", -"a.bg", -"b.bg", -"c.bg", -"d.bg", -"e.bg", -"f.bg", -"g.bg", -"h.bg", -"i.bg", -"j.bg", -"k.bg", -"l.bg", -"m.bg", -"n.bg", -"o.bg", -"p.bg", -"q.bg", -"r.bg", -"s.bg", -"t.bg", -"u.bg", -"v.bg", -"w.bg", -"x.bg", -"y.bg", -"z.bg", -"0.bg", -"1.bg", -"2.bg", -"3.bg", -"4.bg", -"5.bg", -"6.bg", -"7.bg", -"8.bg", -"9.bg", -"bh", -"com.bh", -"edu.bh", -"net.bh", -"org.bh", -"gov.bh", -"bi", -"co.bi", -"com.bi", -"edu.bi", -"or.bi", -"org.bi", -"biz", -"bj", -"asso.bj", -"barreau.bj", -"gouv.bj", -"bm", -"com.bm", -"edu.bm", -"gov.bm", -"net.bm", -"org.bm", -"bn", -"com.bn", -"edu.bn", -"gov.bn", -"net.bn", -"org.bn", -"bo", -"com.bo", -"edu.bo", -"gob.bo", -"int.bo", -"org.bo", -"net.bo", -"mil.bo", -"tv.bo", -"web.bo", -"academia.bo", -"agro.bo", -"arte.bo", -"blog.bo", -"bolivia.bo", -"ciencia.bo", -"cooperativa.bo", -"democracia.bo", -"deporte.bo", -"ecologia.bo", -"economia.bo", -"empresa.bo", -"indigena.bo", -"industria.bo", -"info.bo", -"medicina.bo", -"movimiento.bo", -"musica.bo", -"natural.bo", -"nombre.bo", -"noticias.bo", -"patria.bo", -"politica.bo", -"profesional.bo", -"plurinacional.bo", -"pueblo.bo", -"revista.bo", -"salud.bo", -"tecnologia.bo", -"tksat.bo", -"transporte.bo", -"wiki.bo", -"br", -"9guacu.br", -"abc.br", -"adm.br", -"adv.br", -"agr.br", -"aju.br", -"am.br", -"anani.br", -"aparecida.br", -"arq.br", -"art.br", -"ato.br", -"b.br", -"barueri.br", -"belem.br", -"bhz.br", -"bio.br", -"blog.br", -"bmd.br", -"boavista.br", -"bsb.br", -"campinagrande.br", -"campinas.br", -"caxias.br", -"cim.br", -"cng.br", -"cnt.br", -"com.br", -"contagem.br", -"coop.br", -"cri.br", -"cuiaba.br", -"curitiba.br", -"def.br", -"ecn.br", -"eco.br", -"edu.br", -"emp.br", -"eng.br", -"esp.br", -"etc.br", -"eti.br", -"far.br", -"feira.br", -"flog.br", -"floripa.br", -"fm.br", -"fnd.br", -"fortal.br", -"fot.br", -"foz.br", -"fst.br", -"g12.br", -"ggf.br", -"goiania.br", -"gov.br", -"ac.gov.br", -"al.gov.br", -"am.gov.br", -"ap.gov.br", -"ba.gov.br", -"ce.gov.br", -"df.gov.br", -"es.gov.br", -"go.gov.br", -"ma.gov.br", -"mg.gov.br", -"ms.gov.br", -"mt.gov.br", -"pa.gov.br", -"pb.gov.br", -"pe.gov.br", -"pi.gov.br", -"pr.gov.br", -"rj.gov.br", -"rn.gov.br", -"ro.gov.br", -"rr.gov.br", -"rs.gov.br", -"sc.gov.br", -"se.gov.br", -"sp.gov.br", -"to.gov.br", -"gru.br", -"imb.br", -"ind.br", -"inf.br", -"jab.br", -"jampa.br", -"jdf.br", -"joinville.br", -"jor.br", -"jus.br", -"leg.br", -"lel.br", -"londrina.br", -"macapa.br", -"maceio.br", -"manaus.br", -"maringa.br", -"mat.br", -"med.br", -"mil.br", -"morena.br", -"mp.br", -"mus.br", -"natal.br", -"net.br", -"niteroi.br", -"*.nom.br", -"not.br", -"ntr.br", -"odo.br", -"ong.br", -"org.br", -"osasco.br", -"palmas.br", -"poa.br", -"ppg.br", -"pro.br", -"psc.br", -"psi.br", -"pvh.br", -"qsl.br", -"radio.br", -"rec.br", -"recife.br", -"ribeirao.br", -"rio.br", -"riobranco.br", -"riopreto.br", -"salvador.br", -"sampa.br", -"santamaria.br", -"santoandre.br", -"saobernardo.br", -"saogonca.br", -"sjc.br", -"slg.br", -"slz.br", -"sorocaba.br", -"srv.br", -"taxi.br", -"tc.br", -"teo.br", -"the.br", -"tmp.br", -"trd.br", -"tur.br", -"tv.br", -"udi.br", -"vet.br", -"vix.br", -"vlog.br", -"wiki.br", -"zlg.br", -"bs", -"com.bs", -"net.bs", -"org.bs", -"edu.bs", -"gov.bs", -"bt", -"com.bt", -"edu.bt", -"gov.bt", -"net.bt", -"org.bt", -"bv", -"bw", -"co.bw", -"org.bw", -"by", -"gov.by", -"mil.by", -"com.by", -"of.by", -"bz", -"com.bz", -"net.bz", -"org.bz", -"edu.bz", -"gov.bz", -"ca", -"ab.ca", -"bc.ca", -"mb.ca", -"nb.ca", -"nf.ca", -"nl.ca", -"ns.ca", -"nt.ca", -"nu.ca", -"on.ca", -"pe.ca", -"qc.ca", -"sk.ca", -"yk.ca", -"gc.ca", -"cat", -"cc", -"cd", -"gov.cd", -"cf", -"cg", -"ch", -"ci", -"org.ci", -"or.ci", -"com.ci", -"co.ci", -"edu.ci", -"ed.ci", -"ac.ci", -"net.ci", -"go.ci", -"asso.ci", -"aéroport.ci", -"int.ci", -"presse.ci", -"md.ci", -"gouv.ci", -"*.ck", -"!www.ck", -"cl", -"aprendemas.cl", -"co.cl", -"gob.cl", -"gov.cl", -"mil.cl", -"cm", -"co.cm", -"com.cm", -"gov.cm", -"net.cm", -"cn", -"ac.cn", -"com.cn", -"edu.cn", -"gov.cn", -"net.cn", -"org.cn", -"mil.cn", -"公司.cn", -"网络.cn", -"網絡.cn", -"ah.cn", -"bj.cn", -"cq.cn", -"fj.cn", -"gd.cn", -"gs.cn", -"gz.cn", -"gx.cn", -"ha.cn", -"hb.cn", -"he.cn", -"hi.cn", -"hl.cn", -"hn.cn", -"jl.cn", -"js.cn", -"jx.cn", -"ln.cn", -"nm.cn", -"nx.cn", -"qh.cn", -"sc.cn", -"sd.cn", -"sh.cn", -"sn.cn", -"sx.cn", -"tj.cn", -"xj.cn", -"xz.cn", -"yn.cn", -"zj.cn", -"hk.cn", -"mo.cn", -"tw.cn", -"co", -"arts.co", -"com.co", -"edu.co", -"firm.co", -"gov.co", -"info.co", -"int.co", -"mil.co", -"net.co", -"nom.co", -"org.co", -"rec.co", -"web.co", -"com", -"coop", -"cr", -"ac.cr", -"co.cr", -"ed.cr", -"fi.cr", -"go.cr", -"or.cr", -"sa.cr", -"cu", -"com.cu", -"edu.cu", -"org.cu", -"net.cu", -"gov.cu", -"inf.cu", -"cv", -"cw", -"com.cw", -"edu.cw", -"net.cw", -"org.cw", -"cx", -"gov.cx", -"cy", -"ac.cy", -"biz.cy", -"com.cy", -"ekloges.cy", -"gov.cy", -"ltd.cy", -"name.cy", -"net.cy", -"org.cy", -"parliament.cy", -"press.cy", -"pro.cy", -"tm.cy", -"cz", -"de", -"dj", -"dk", -"dm", -"com.dm", -"net.dm", -"org.dm", -"edu.dm", -"gov.dm", -"do", -"art.do", -"com.do", -"edu.do", -"gob.do", -"gov.do", -"mil.do", -"net.do", -"org.do", -"sld.do", -"web.do", -"dz", -"com.dz", -"org.dz", -"net.dz", -"gov.dz", -"edu.dz", -"asso.dz", -"pol.dz", -"art.dz", -"ec", -"com.ec", -"info.ec", -"net.ec", -"fin.ec", -"k12.ec", -"med.ec", -"pro.ec", -"org.ec", -"edu.ec", -"gov.ec", -"gob.ec", -"mil.ec", -"edu", -"ee", -"edu.ee", -"gov.ee", -"riik.ee", -"lib.ee", -"med.ee", -"com.ee", -"pri.ee", -"aip.ee", -"org.ee", -"fie.ee", -"eg", -"com.eg", -"edu.eg", -"eun.eg", -"gov.eg", -"mil.eg", -"name.eg", -"net.eg", -"org.eg", -"sci.eg", -"*.er", -"es", -"com.es", -"nom.es", -"org.es", -"gob.es", -"edu.es", -"et", -"com.et", -"gov.et", -"org.et", -"edu.et", -"biz.et", -"name.et", -"info.et", -"net.et", -"eu", -"fi", -"aland.fi", -"fj", -"ac.fj", -"biz.fj", -"com.fj", -"gov.fj", -"info.fj", -"mil.fj", -"name.fj", -"net.fj", -"org.fj", -"pro.fj", -"*.fk", -"fm", -"fo", -"fr", -"asso.fr", -"com.fr", -"gouv.fr", -"nom.fr", -"prd.fr", -"tm.fr", -"aeroport.fr", -"avocat.fr", -"avoues.fr", -"cci.fr", -"chambagri.fr", -"chirurgiens-dentistes.fr", -"experts-comptables.fr", -"geometre-expert.fr", -"greta.fr", -"huissier-justice.fr", -"medecin.fr", -"notaires.fr", -"pharmacien.fr", -"port.fr", -"veterinaire.fr", -"ga", -"gb", -"gd", -"ge", -"com.ge", -"edu.ge", -"gov.ge", -"org.ge", -"mil.ge", -"net.ge", -"pvt.ge", -"gf", -"gg", -"co.gg", -"net.gg", -"org.gg", -"gh", -"com.gh", -"edu.gh", -"gov.gh", -"org.gh", -"mil.gh", -"gi", -"com.gi", -"ltd.gi", -"gov.gi", -"mod.gi", -"edu.gi", -"org.gi", -"gl", -"co.gl", -"com.gl", -"edu.gl", -"net.gl", -"org.gl", -"gm", -"gn", -"ac.gn", -"com.gn", -"edu.gn", -"gov.gn", -"org.gn", -"net.gn", -"gov", -"gp", -"com.gp", -"net.gp", -"mobi.gp", -"edu.gp", -"org.gp", -"asso.gp", -"gq", -"gr", -"com.gr", -"edu.gr", -"net.gr", -"org.gr", -"gov.gr", -"gs", -"gt", -"com.gt", -"edu.gt", -"gob.gt", -"ind.gt", -"mil.gt", -"net.gt", -"org.gt", -"gu", -"com.gu", -"edu.gu", -"gov.gu", -"guam.gu", -"info.gu", -"net.gu", -"org.gu", -"web.gu", -"gw", -"gy", -"co.gy", -"com.gy", -"edu.gy", -"gov.gy", -"net.gy", -"org.gy", -"hk", -"com.hk", -"edu.hk", -"gov.hk", -"idv.hk", -"net.hk", -"org.hk", -"公司.hk", -"教育.hk", -"敎育.hk", -"政府.hk", -"個人.hk", -"个人.hk", -"箇人.hk", -"網络.hk", -"网络.hk", -"组織.hk", -"網絡.hk", -"网絡.hk", -"组织.hk", -"組織.hk", -"組织.hk", -"hm", -"hn", -"com.hn", -"edu.hn", -"org.hn", -"net.hn", -"mil.hn", -"gob.hn", -"hr", -"iz.hr", -"from.hr", -"name.hr", -"com.hr", -"ht", -"com.ht", -"shop.ht", -"firm.ht", -"info.ht", -"adult.ht", -"net.ht", -"pro.ht", -"org.ht", -"med.ht", -"art.ht", -"coop.ht", -"pol.ht", -"asso.ht", -"edu.ht", -"rel.ht", -"gouv.ht", -"perso.ht", -"hu", -"co.hu", -"info.hu", -"org.hu", -"priv.hu", -"sport.hu", -"tm.hu", -"2000.hu", -"agrar.hu", -"bolt.hu", -"casino.hu", -"city.hu", -"erotica.hu", -"erotika.hu", -"film.hu", -"forum.hu", -"games.hu", -"hotel.hu", -"ingatlan.hu", -"jogasz.hu", -"konyvelo.hu", -"lakas.hu", -"media.hu", -"news.hu", -"reklam.hu", -"sex.hu", -"shop.hu", -"suli.hu", -"szex.hu", -"tozsde.hu", -"utazas.hu", -"video.hu", -"id", -"ac.id", -"biz.id", -"co.id", -"desa.id", -"go.id", -"mil.id", -"my.id", -"net.id", -"or.id", -"ponpes.id", -"sch.id", -"web.id", -"ie", -"gov.ie", -"il", -"ac.il", -"co.il", -"gov.il", -"idf.il", -"k12.il", -"muni.il", -"net.il", -"org.il", -"im", -"ac.im", -"co.im", -"com.im", -"ltd.co.im", -"net.im", -"org.im", -"plc.co.im", -"tt.im", -"tv.im", -"in", -"co.in", -"firm.in", -"net.in", -"org.in", -"gen.in", -"ind.in", -"nic.in", -"ac.in", -"edu.in", -"res.in", -"gov.in", -"mil.in", -"info", -"int", -"eu.int", -"io", -"com.io", -"iq", -"gov.iq", -"edu.iq", -"mil.iq", -"com.iq", -"org.iq", -"net.iq", -"ir", -"ac.ir", -"co.ir", -"gov.ir", -"id.ir", -"net.ir", -"org.ir", -"sch.ir", -"ایران.ir", -"ايران.ir", -"is", -"net.is", -"com.is", -"edu.is", -"gov.is", -"org.is", -"int.is", -"it", -"gov.it", -"edu.it", -"abr.it", -"abruzzo.it", -"aosta-valley.it", -"aostavalley.it", -"bas.it", -"basilicata.it", -"cal.it", -"calabria.it", -"cam.it", -"campania.it", -"emilia-romagna.it", -"emiliaromagna.it", -"emr.it", -"friuli-v-giulia.it", -"friuli-ve-giulia.it", -"friuli-vegiulia.it", -"friuli-venezia-giulia.it", -"friuli-veneziagiulia.it", -"friuli-vgiulia.it", -"friuliv-giulia.it", -"friulive-giulia.it", -"friulivegiulia.it", -"friulivenezia-giulia.it", -"friuliveneziagiulia.it", -"friulivgiulia.it", -"fvg.it", -"laz.it", -"lazio.it", -"lig.it", -"liguria.it", -"lom.it", -"lombardia.it", -"lombardy.it", -"lucania.it", -"mar.it", -"marche.it", -"mol.it", -"molise.it", -"piedmont.it", -"piemonte.it", -"pmn.it", -"pug.it", -"puglia.it", -"sar.it", -"sardegna.it", -"sardinia.it", -"sic.it", -"sicilia.it", -"sicily.it", -"taa.it", -"tos.it", -"toscana.it", -"trentin-sud-tirol.it", -"trentin-süd-tirol.it", -"trentin-sudtirol.it", -"trentin-südtirol.it", -"trentin-sued-tirol.it", -"trentin-suedtirol.it", -"trentino-a-adige.it", -"trentino-aadige.it", -"trentino-alto-adige.it", -"trentino-altoadige.it", -"trentino-s-tirol.it", -"trentino-stirol.it", -"trentino-sud-tirol.it", -"trentino-süd-tirol.it", -"trentino-sudtirol.it", -"trentino-südtirol.it", -"trentino-sued-tirol.it", -"trentino-suedtirol.it", -"trentino.it", -"trentinoa-adige.it", -"trentinoaadige.it", -"trentinoalto-adige.it", -"trentinoaltoadige.it", -"trentinos-tirol.it", -"trentinostirol.it", -"trentinosud-tirol.it", -"trentinosüd-tirol.it", -"trentinosudtirol.it", -"trentinosüdtirol.it", -"trentinosued-tirol.it", -"trentinosuedtirol.it", -"trentinsud-tirol.it", -"trentinsüd-tirol.it", -"trentinsudtirol.it", -"trentinsüdtirol.it", -"trentinsued-tirol.it", -"trentinsuedtirol.it", -"tuscany.it", -"umb.it", -"umbria.it", -"val-d-aosta.it", -"val-daosta.it", -"vald-aosta.it", -"valdaosta.it", -"valle-aosta.it", -"valle-d-aosta.it", -"valle-daosta.it", -"valleaosta.it", -"valled-aosta.it", -"valledaosta.it", -"vallee-aoste.it", -"vallée-aoste.it", -"vallee-d-aoste.it", -"vallée-d-aoste.it", -"valleeaoste.it", -"valléeaoste.it", -"valleedaoste.it", -"valléedaoste.it", -"vao.it", -"vda.it", -"ven.it", -"veneto.it", -"ag.it", -"agrigento.it", -"al.it", -"alessandria.it", -"alto-adige.it", -"altoadige.it", -"an.it", -"ancona.it", -"andria-barletta-trani.it", -"andria-trani-barletta.it", -"andriabarlettatrani.it", -"andriatranibarletta.it", -"ao.it", -"aosta.it", -"aoste.it", -"ap.it", -"aq.it", -"aquila.it", -"ar.it", -"arezzo.it", -"ascoli-piceno.it", -"ascolipiceno.it", -"asti.it", -"at.it", -"av.it", -"avellino.it", -"ba.it", -"balsan-sudtirol.it", -"balsan-südtirol.it", -"balsan-suedtirol.it", -"balsan.it", -"bari.it", -"barletta-trani-andria.it", -"barlettatraniandria.it", -"belluno.it", -"benevento.it", -"bergamo.it", -"bg.it", -"bi.it", -"biella.it", -"bl.it", -"bn.it", -"bo.it", -"bologna.it", -"bolzano-altoadige.it", -"bolzano.it", -"bozen-sudtirol.it", -"bozen-südtirol.it", -"bozen-suedtirol.it", -"bozen.it", -"br.it", -"brescia.it", -"brindisi.it", -"bs.it", -"bt.it", -"bulsan-sudtirol.it", -"bulsan-südtirol.it", -"bulsan-suedtirol.it", -"bulsan.it", -"bz.it", -"ca.it", -"cagliari.it", -"caltanissetta.it", -"campidano-medio.it", -"campidanomedio.it", -"campobasso.it", -"carbonia-iglesias.it", -"carboniaiglesias.it", -"carrara-massa.it", -"carraramassa.it", -"caserta.it", -"catania.it", -"catanzaro.it", -"cb.it", -"ce.it", -"cesena-forli.it", -"cesena-forlì.it", -"cesenaforli.it", -"cesenaforlì.it", -"ch.it", -"chieti.it", -"ci.it", -"cl.it", -"cn.it", -"co.it", -"como.it", -"cosenza.it", -"cr.it", -"cremona.it", -"crotone.it", -"cs.it", -"ct.it", -"cuneo.it", -"cz.it", -"dell-ogliastra.it", -"dellogliastra.it", -"en.it", -"enna.it", -"fc.it", -"fe.it", -"fermo.it", -"ferrara.it", -"fg.it", -"fi.it", -"firenze.it", -"florence.it", -"fm.it", -"foggia.it", -"forli-cesena.it", -"forlì-cesena.it", -"forlicesena.it", -"forlìcesena.it", -"fr.it", -"frosinone.it", -"ge.it", -"genoa.it", -"genova.it", -"go.it", -"gorizia.it", -"gr.it", -"grosseto.it", -"iglesias-carbonia.it", -"iglesiascarbonia.it", -"im.it", -"imperia.it", -"is.it", -"isernia.it", -"kr.it", -"la-spezia.it", -"laquila.it", -"laspezia.it", -"latina.it", -"lc.it", -"le.it", -"lecce.it", -"lecco.it", -"li.it", -"livorno.it", -"lo.it", -"lodi.it", -"lt.it", -"lu.it", -"lucca.it", -"macerata.it", -"mantova.it", -"massa-carrara.it", -"massacarrara.it", -"matera.it", -"mb.it", -"mc.it", -"me.it", -"medio-campidano.it", -"mediocampidano.it", -"messina.it", -"mi.it", -"milan.it", -"milano.it", -"mn.it", -"mo.it", -"modena.it", -"monza-brianza.it", -"monza-e-della-brianza.it", -"monza.it", -"monzabrianza.it", -"monzaebrianza.it", -"monzaedellabrianza.it", -"ms.it", -"mt.it", -"na.it", -"naples.it", -"napoli.it", -"no.it", -"novara.it", -"nu.it", -"nuoro.it", -"og.it", -"ogliastra.it", -"olbia-tempio.it", -"olbiatempio.it", -"or.it", -"oristano.it", -"ot.it", -"pa.it", -"padova.it", -"padua.it", -"palermo.it", -"parma.it", -"pavia.it", -"pc.it", -"pd.it", -"pe.it", -"perugia.it", -"pesaro-urbino.it", -"pesarourbino.it", -"pescara.it", -"pg.it", -"pi.it", -"piacenza.it", -"pisa.it", -"pistoia.it", -"pn.it", -"po.it", -"pordenone.it", -"potenza.it", -"pr.it", -"prato.it", -"pt.it", -"pu.it", -"pv.it", -"pz.it", -"ra.it", -"ragusa.it", -"ravenna.it", -"rc.it", -"re.it", -"reggio-calabria.it", -"reggio-emilia.it", -"reggiocalabria.it", -"reggioemilia.it", -"rg.it", -"ri.it", -"rieti.it", -"rimini.it", -"rm.it", -"rn.it", -"ro.it", -"roma.it", -"rome.it", -"rovigo.it", -"sa.it", -"salerno.it", -"sassari.it", -"savona.it", -"si.it", -"siena.it", -"siracusa.it", -"so.it", -"sondrio.it", -"sp.it", -"sr.it", -"ss.it", -"suedtirol.it", -"südtirol.it", -"sv.it", -"ta.it", -"taranto.it", -"te.it", -"tempio-olbia.it", -"tempioolbia.it", -"teramo.it", -"terni.it", -"tn.it", -"to.it", -"torino.it", -"tp.it", -"tr.it", -"trani-andria-barletta.it", -"trani-barletta-andria.it", -"traniandriabarletta.it", -"tranibarlettaandria.it", -"trapani.it", -"trento.it", -"treviso.it", -"trieste.it", -"ts.it", -"turin.it", -"tv.it", -"ud.it", -"udine.it", -"urbino-pesaro.it", -"urbinopesaro.it", -"va.it", -"varese.it", -"vb.it", -"vc.it", -"ve.it", -"venezia.it", -"venice.it", -"verbania.it", -"vercelli.it", -"verona.it", -"vi.it", -"vibo-valentia.it", -"vibovalentia.it", -"vicenza.it", -"viterbo.it", -"vr.it", -"vs.it", -"vt.it", -"vv.it", -"je", -"co.je", -"net.je", -"org.je", -"*.jm", -"jo", -"com.jo", -"org.jo", -"net.jo", -"edu.jo", -"sch.jo", -"gov.jo", -"mil.jo", -"name.jo", -"jobs", -"jp", -"ac.jp", -"ad.jp", -"co.jp", -"ed.jp", -"go.jp", -"gr.jp", -"lg.jp", -"ne.jp", -"or.jp", -"aichi.jp", -"akita.jp", -"aomori.jp", -"chiba.jp", -"ehime.jp", -"fukui.jp", -"fukuoka.jp", -"fukushima.jp", -"gifu.jp", -"gunma.jp", -"hiroshima.jp", -"hokkaido.jp", -"hyogo.jp", -"ibaraki.jp", -"ishikawa.jp", -"iwate.jp", -"kagawa.jp", -"kagoshima.jp", -"kanagawa.jp", -"kochi.jp", -"kumamoto.jp", -"kyoto.jp", -"mie.jp", -"miyagi.jp", -"miyazaki.jp", -"nagano.jp", -"nagasaki.jp", -"nara.jp", -"niigata.jp", -"oita.jp", -"okayama.jp", -"okinawa.jp", -"osaka.jp", -"saga.jp", -"saitama.jp", -"shiga.jp", -"shimane.jp", -"shizuoka.jp", -"tochigi.jp", -"tokushima.jp", -"tokyo.jp", -"tottori.jp", -"toyama.jp", -"wakayama.jp", -"yamagata.jp", -"yamaguchi.jp", -"yamanashi.jp", -"栃木.jp", -"愛知.jp", -"愛媛.jp", -"兵庫.jp", -"熊本.jp", -"茨城.jp", -"北海道.jp", -"千葉.jp", -"和歌山.jp", -"長崎.jp", -"長野.jp", -"新潟.jp", -"青森.jp", -"静岡.jp", -"東京.jp", -"石川.jp", -"埼玉.jp", -"三重.jp", -"京都.jp", -"佐賀.jp", -"大分.jp", -"大阪.jp", -"奈良.jp", -"宮城.jp", -"宮崎.jp", -"富山.jp", -"山口.jp", -"山形.jp", -"山梨.jp", -"岩手.jp", -"岐阜.jp", -"岡山.jp", -"島根.jp", -"広島.jp", -"徳島.jp", -"沖縄.jp", -"滋賀.jp", -"神奈川.jp", -"福井.jp", -"福岡.jp", -"福島.jp", -"秋田.jp", -"群馬.jp", -"香川.jp", -"高知.jp", -"鳥取.jp", -"鹿児島.jp", -"*.kawasaki.jp", -"*.kitakyushu.jp", -"*.kobe.jp", -"*.nagoya.jp", -"*.sapporo.jp", -"*.sendai.jp", -"*.yokohama.jp", -"!city.kawasaki.jp", -"!city.kitakyushu.jp", -"!city.kobe.jp", -"!city.nagoya.jp", -"!city.sapporo.jp", -"!city.sendai.jp", -"!city.yokohama.jp", -"aisai.aichi.jp", -"ama.aichi.jp", -"anjo.aichi.jp", -"asuke.aichi.jp", -"chiryu.aichi.jp", -"chita.aichi.jp", -"fuso.aichi.jp", -"gamagori.aichi.jp", -"handa.aichi.jp", -"hazu.aichi.jp", -"hekinan.aichi.jp", -"higashiura.aichi.jp", -"ichinomiya.aichi.jp", -"inazawa.aichi.jp", -"inuyama.aichi.jp", -"isshiki.aichi.jp", -"iwakura.aichi.jp", -"kanie.aichi.jp", -"kariya.aichi.jp", -"kasugai.aichi.jp", -"kira.aichi.jp", -"kiyosu.aichi.jp", -"komaki.aichi.jp", -"konan.aichi.jp", -"kota.aichi.jp", -"mihama.aichi.jp", -"miyoshi.aichi.jp", -"nishio.aichi.jp", -"nisshin.aichi.jp", -"obu.aichi.jp", -"oguchi.aichi.jp", -"oharu.aichi.jp", -"okazaki.aichi.jp", -"owariasahi.aichi.jp", -"seto.aichi.jp", -"shikatsu.aichi.jp", -"shinshiro.aichi.jp", -"shitara.aichi.jp", -"tahara.aichi.jp", -"takahama.aichi.jp", -"tobishima.aichi.jp", -"toei.aichi.jp", -"togo.aichi.jp", -"tokai.aichi.jp", -"tokoname.aichi.jp", -"toyoake.aichi.jp", -"toyohashi.aichi.jp", -"toyokawa.aichi.jp", -"toyone.aichi.jp", -"toyota.aichi.jp", -"tsushima.aichi.jp", -"yatomi.aichi.jp", -"akita.akita.jp", -"daisen.akita.jp", -"fujisato.akita.jp", -"gojome.akita.jp", -"hachirogata.akita.jp", -"happou.akita.jp", -"higashinaruse.akita.jp", -"honjo.akita.jp", -"honjyo.akita.jp", -"ikawa.akita.jp", -"kamikoani.akita.jp", -"kamioka.akita.jp", -"katagami.akita.jp", -"kazuno.akita.jp", -"kitaakita.akita.jp", -"kosaka.akita.jp", -"kyowa.akita.jp", -"misato.akita.jp", -"mitane.akita.jp", -"moriyoshi.akita.jp", -"nikaho.akita.jp", -"noshiro.akita.jp", -"odate.akita.jp", -"oga.akita.jp", -"ogata.akita.jp", -"semboku.akita.jp", -"yokote.akita.jp", -"yurihonjo.akita.jp", -"aomori.aomori.jp", -"gonohe.aomori.jp", -"hachinohe.aomori.jp", -"hashikami.aomori.jp", -"hiranai.aomori.jp", -"hirosaki.aomori.jp", -"itayanagi.aomori.jp", -"kuroishi.aomori.jp", -"misawa.aomori.jp", -"mutsu.aomori.jp", -"nakadomari.aomori.jp", -"noheji.aomori.jp", -"oirase.aomori.jp", -"owani.aomori.jp", -"rokunohe.aomori.jp", -"sannohe.aomori.jp", -"shichinohe.aomori.jp", -"shingo.aomori.jp", -"takko.aomori.jp", -"towada.aomori.jp", -"tsugaru.aomori.jp", -"tsuruta.aomori.jp", -"abiko.chiba.jp", -"asahi.chiba.jp", -"chonan.chiba.jp", -"chosei.chiba.jp", -"choshi.chiba.jp", -"chuo.chiba.jp", -"funabashi.chiba.jp", -"futtsu.chiba.jp", -"hanamigawa.chiba.jp", -"ichihara.chiba.jp", -"ichikawa.chiba.jp", -"ichinomiya.chiba.jp", -"inzai.chiba.jp", -"isumi.chiba.jp", -"kamagaya.chiba.jp", -"kamogawa.chiba.jp", -"kashiwa.chiba.jp", -"katori.chiba.jp", -"katsuura.chiba.jp", -"kimitsu.chiba.jp", -"kisarazu.chiba.jp", -"kozaki.chiba.jp", -"kujukuri.chiba.jp", -"kyonan.chiba.jp", -"matsudo.chiba.jp", -"midori.chiba.jp", -"mihama.chiba.jp", -"minamiboso.chiba.jp", -"mobara.chiba.jp", -"mutsuzawa.chiba.jp", -"nagara.chiba.jp", -"nagareyama.chiba.jp", -"narashino.chiba.jp", -"narita.chiba.jp", -"noda.chiba.jp", -"oamishirasato.chiba.jp", -"omigawa.chiba.jp", -"onjuku.chiba.jp", -"otaki.chiba.jp", -"sakae.chiba.jp", -"sakura.chiba.jp", -"shimofusa.chiba.jp", -"shirako.chiba.jp", -"shiroi.chiba.jp", -"shisui.chiba.jp", -"sodegaura.chiba.jp", -"sosa.chiba.jp", -"tako.chiba.jp", -"tateyama.chiba.jp", -"togane.chiba.jp", -"tohnosho.chiba.jp", -"tomisato.chiba.jp", -"urayasu.chiba.jp", -"yachimata.chiba.jp", -"yachiyo.chiba.jp", -"yokaichiba.chiba.jp", -"yokoshibahikari.chiba.jp", -"yotsukaido.chiba.jp", -"ainan.ehime.jp", -"honai.ehime.jp", -"ikata.ehime.jp", -"imabari.ehime.jp", -"iyo.ehime.jp", -"kamijima.ehime.jp", -"kihoku.ehime.jp", -"kumakogen.ehime.jp", -"masaki.ehime.jp", -"matsuno.ehime.jp", -"matsuyama.ehime.jp", -"namikata.ehime.jp", -"niihama.ehime.jp", -"ozu.ehime.jp", -"saijo.ehime.jp", -"seiyo.ehime.jp", -"shikokuchuo.ehime.jp", -"tobe.ehime.jp", -"toon.ehime.jp", -"uchiko.ehime.jp", -"uwajima.ehime.jp", -"yawatahama.ehime.jp", -"echizen.fukui.jp", -"eiheiji.fukui.jp", -"fukui.fukui.jp", -"ikeda.fukui.jp", -"katsuyama.fukui.jp", -"mihama.fukui.jp", -"minamiechizen.fukui.jp", -"obama.fukui.jp", -"ohi.fukui.jp", -"ono.fukui.jp", -"sabae.fukui.jp", -"sakai.fukui.jp", -"takahama.fukui.jp", -"tsuruga.fukui.jp", -"wakasa.fukui.jp", -"ashiya.fukuoka.jp", -"buzen.fukuoka.jp", -"chikugo.fukuoka.jp", -"chikuho.fukuoka.jp", -"chikujo.fukuoka.jp", -"chikushino.fukuoka.jp", -"chikuzen.fukuoka.jp", -"chuo.fukuoka.jp", -"dazaifu.fukuoka.jp", -"fukuchi.fukuoka.jp", -"hakata.fukuoka.jp", -"higashi.fukuoka.jp", -"hirokawa.fukuoka.jp", -"hisayama.fukuoka.jp", -"iizuka.fukuoka.jp", -"inatsuki.fukuoka.jp", -"kaho.fukuoka.jp", -"kasuga.fukuoka.jp", -"kasuya.fukuoka.jp", -"kawara.fukuoka.jp", -"keisen.fukuoka.jp", -"koga.fukuoka.jp", -"kurate.fukuoka.jp", -"kurogi.fukuoka.jp", -"kurume.fukuoka.jp", -"minami.fukuoka.jp", -"miyako.fukuoka.jp", -"miyama.fukuoka.jp", -"miyawaka.fukuoka.jp", -"mizumaki.fukuoka.jp", -"munakata.fukuoka.jp", -"nakagawa.fukuoka.jp", -"nakama.fukuoka.jp", -"nishi.fukuoka.jp", -"nogata.fukuoka.jp", -"ogori.fukuoka.jp", -"okagaki.fukuoka.jp", -"okawa.fukuoka.jp", -"oki.fukuoka.jp", -"omuta.fukuoka.jp", -"onga.fukuoka.jp", -"onojo.fukuoka.jp", -"oto.fukuoka.jp", -"saigawa.fukuoka.jp", -"sasaguri.fukuoka.jp", -"shingu.fukuoka.jp", -"shinyoshitomi.fukuoka.jp", -"shonai.fukuoka.jp", -"soeda.fukuoka.jp", -"sue.fukuoka.jp", -"tachiarai.fukuoka.jp", -"tagawa.fukuoka.jp", -"takata.fukuoka.jp", -"toho.fukuoka.jp", -"toyotsu.fukuoka.jp", -"tsuiki.fukuoka.jp", -"ukiha.fukuoka.jp", -"umi.fukuoka.jp", -"usui.fukuoka.jp", -"yamada.fukuoka.jp", -"yame.fukuoka.jp", -"yanagawa.fukuoka.jp", -"yukuhashi.fukuoka.jp", -"aizubange.fukushima.jp", -"aizumisato.fukushima.jp", -"aizuwakamatsu.fukushima.jp", -"asakawa.fukushima.jp", -"bandai.fukushima.jp", -"date.fukushima.jp", -"fukushima.fukushima.jp", -"furudono.fukushima.jp", -"futaba.fukushima.jp", -"hanawa.fukushima.jp", -"higashi.fukushima.jp", -"hirata.fukushima.jp", -"hirono.fukushima.jp", -"iitate.fukushima.jp", -"inawashiro.fukushima.jp", -"ishikawa.fukushima.jp", -"iwaki.fukushima.jp", -"izumizaki.fukushima.jp", -"kagamiishi.fukushima.jp", -"kaneyama.fukushima.jp", -"kawamata.fukushima.jp", -"kitakata.fukushima.jp", -"kitashiobara.fukushima.jp", -"koori.fukushima.jp", -"koriyama.fukushima.jp", -"kunimi.fukushima.jp", -"miharu.fukushima.jp", -"mishima.fukushima.jp", -"namie.fukushima.jp", -"nango.fukushima.jp", -"nishiaizu.fukushima.jp", -"nishigo.fukushima.jp", -"okuma.fukushima.jp", -"omotego.fukushima.jp", -"ono.fukushima.jp", -"otama.fukushima.jp", -"samegawa.fukushima.jp", -"shimogo.fukushima.jp", -"shirakawa.fukushima.jp", -"showa.fukushima.jp", -"soma.fukushima.jp", -"sukagawa.fukushima.jp", -"taishin.fukushima.jp", -"tamakawa.fukushima.jp", -"tanagura.fukushima.jp", -"tenei.fukushima.jp", -"yabuki.fukushima.jp", -"yamato.fukushima.jp", -"yamatsuri.fukushima.jp", -"yanaizu.fukushima.jp", -"yugawa.fukushima.jp", -"anpachi.gifu.jp", -"ena.gifu.jp", -"gifu.gifu.jp", -"ginan.gifu.jp", -"godo.gifu.jp", -"gujo.gifu.jp", -"hashima.gifu.jp", -"hichiso.gifu.jp", -"hida.gifu.jp", -"higashishirakawa.gifu.jp", -"ibigawa.gifu.jp", -"ikeda.gifu.jp", -"kakamigahara.gifu.jp", -"kani.gifu.jp", -"kasahara.gifu.jp", -"kasamatsu.gifu.jp", -"kawaue.gifu.jp", -"kitagata.gifu.jp", -"mino.gifu.jp", -"minokamo.gifu.jp", -"mitake.gifu.jp", -"mizunami.gifu.jp", -"motosu.gifu.jp", -"nakatsugawa.gifu.jp", -"ogaki.gifu.jp", -"sakahogi.gifu.jp", -"seki.gifu.jp", -"sekigahara.gifu.jp", -"shirakawa.gifu.jp", -"tajimi.gifu.jp", -"takayama.gifu.jp", -"tarui.gifu.jp", -"toki.gifu.jp", -"tomika.gifu.jp", -"wanouchi.gifu.jp", -"yamagata.gifu.jp", -"yaotsu.gifu.jp", -"yoro.gifu.jp", -"annaka.gunma.jp", -"chiyoda.gunma.jp", -"fujioka.gunma.jp", -"higashiagatsuma.gunma.jp", -"isesaki.gunma.jp", -"itakura.gunma.jp", -"kanna.gunma.jp", -"kanra.gunma.jp", -"katashina.gunma.jp", -"kawaba.gunma.jp", -"kiryu.gunma.jp", -"kusatsu.gunma.jp", -"maebashi.gunma.jp", -"meiwa.gunma.jp", -"midori.gunma.jp", -"minakami.gunma.jp", -"naganohara.gunma.jp", -"nakanojo.gunma.jp", -"nanmoku.gunma.jp", -"numata.gunma.jp", -"oizumi.gunma.jp", -"ora.gunma.jp", -"ota.gunma.jp", -"shibukawa.gunma.jp", -"shimonita.gunma.jp", -"shinto.gunma.jp", -"showa.gunma.jp", -"takasaki.gunma.jp", -"takayama.gunma.jp", -"tamamura.gunma.jp", -"tatebayashi.gunma.jp", -"tomioka.gunma.jp", -"tsukiyono.gunma.jp", -"tsumagoi.gunma.jp", -"ueno.gunma.jp", -"yoshioka.gunma.jp", -"asaminami.hiroshima.jp", -"daiwa.hiroshima.jp", -"etajima.hiroshima.jp", -"fuchu.hiroshima.jp", -"fukuyama.hiroshima.jp", -"hatsukaichi.hiroshima.jp", -"higashihiroshima.hiroshima.jp", -"hongo.hiroshima.jp", -"jinsekikogen.hiroshima.jp", -"kaita.hiroshima.jp", -"kui.hiroshima.jp", -"kumano.hiroshima.jp", -"kure.hiroshima.jp", -"mihara.hiroshima.jp", -"miyoshi.hiroshima.jp", -"naka.hiroshima.jp", -"onomichi.hiroshima.jp", -"osakikamijima.hiroshima.jp", -"otake.hiroshima.jp", -"saka.hiroshima.jp", -"sera.hiroshima.jp", -"seranishi.hiroshima.jp", -"shinichi.hiroshima.jp", -"shobara.hiroshima.jp", -"takehara.hiroshima.jp", -"abashiri.hokkaido.jp", -"abira.hokkaido.jp", -"aibetsu.hokkaido.jp", -"akabira.hokkaido.jp", -"akkeshi.hokkaido.jp", -"asahikawa.hokkaido.jp", -"ashibetsu.hokkaido.jp", -"ashoro.hokkaido.jp", -"assabu.hokkaido.jp", -"atsuma.hokkaido.jp", -"bibai.hokkaido.jp", -"biei.hokkaido.jp", -"bifuka.hokkaido.jp", -"bihoro.hokkaido.jp", -"biratori.hokkaido.jp", -"chippubetsu.hokkaido.jp", -"chitose.hokkaido.jp", -"date.hokkaido.jp", -"ebetsu.hokkaido.jp", -"embetsu.hokkaido.jp", -"eniwa.hokkaido.jp", -"erimo.hokkaido.jp", -"esan.hokkaido.jp", -"esashi.hokkaido.jp", -"fukagawa.hokkaido.jp", -"fukushima.hokkaido.jp", -"furano.hokkaido.jp", -"furubira.hokkaido.jp", -"haboro.hokkaido.jp", -"hakodate.hokkaido.jp", -"hamatonbetsu.hokkaido.jp", -"hidaka.hokkaido.jp", -"higashikagura.hokkaido.jp", -"higashikawa.hokkaido.jp", -"hiroo.hokkaido.jp", -"hokuryu.hokkaido.jp", -"hokuto.hokkaido.jp", -"honbetsu.hokkaido.jp", -"horokanai.hokkaido.jp", -"horonobe.hokkaido.jp", -"ikeda.hokkaido.jp", -"imakane.hokkaido.jp", -"ishikari.hokkaido.jp", -"iwamizawa.hokkaido.jp", -"iwanai.hokkaido.jp", -"kamifurano.hokkaido.jp", -"kamikawa.hokkaido.jp", -"kamishihoro.hokkaido.jp", -"kamisunagawa.hokkaido.jp", -"kamoenai.hokkaido.jp", -"kayabe.hokkaido.jp", -"kembuchi.hokkaido.jp", -"kikonai.hokkaido.jp", -"kimobetsu.hokkaido.jp", -"kitahiroshima.hokkaido.jp", -"kitami.hokkaido.jp", -"kiyosato.hokkaido.jp", -"koshimizu.hokkaido.jp", -"kunneppu.hokkaido.jp", -"kuriyama.hokkaido.jp", -"kuromatsunai.hokkaido.jp", -"kushiro.hokkaido.jp", -"kutchan.hokkaido.jp", -"kyowa.hokkaido.jp", -"mashike.hokkaido.jp", -"matsumae.hokkaido.jp", -"mikasa.hokkaido.jp", -"minamifurano.hokkaido.jp", -"mombetsu.hokkaido.jp", -"moseushi.hokkaido.jp", -"mukawa.hokkaido.jp", -"muroran.hokkaido.jp", -"naie.hokkaido.jp", -"nakagawa.hokkaido.jp", -"nakasatsunai.hokkaido.jp", -"nakatombetsu.hokkaido.jp", -"nanae.hokkaido.jp", -"nanporo.hokkaido.jp", -"nayoro.hokkaido.jp", -"nemuro.hokkaido.jp", -"niikappu.hokkaido.jp", -"niki.hokkaido.jp", -"nishiokoppe.hokkaido.jp", -"noboribetsu.hokkaido.jp", -"numata.hokkaido.jp", -"obihiro.hokkaido.jp", -"obira.hokkaido.jp", -"oketo.hokkaido.jp", -"okoppe.hokkaido.jp", -"otaru.hokkaido.jp", -"otobe.hokkaido.jp", -"otofuke.hokkaido.jp", -"otoineppu.hokkaido.jp", -"oumu.hokkaido.jp", -"ozora.hokkaido.jp", -"pippu.hokkaido.jp", -"rankoshi.hokkaido.jp", -"rebun.hokkaido.jp", -"rikubetsu.hokkaido.jp", -"rishiri.hokkaido.jp", -"rishirifuji.hokkaido.jp", -"saroma.hokkaido.jp", -"sarufutsu.hokkaido.jp", -"shakotan.hokkaido.jp", -"shari.hokkaido.jp", -"shibecha.hokkaido.jp", -"shibetsu.hokkaido.jp", -"shikabe.hokkaido.jp", -"shikaoi.hokkaido.jp", -"shimamaki.hokkaido.jp", -"shimizu.hokkaido.jp", -"shimokawa.hokkaido.jp", -"shinshinotsu.hokkaido.jp", -"shintoku.hokkaido.jp", -"shiranuka.hokkaido.jp", -"shiraoi.hokkaido.jp", -"shiriuchi.hokkaido.jp", -"sobetsu.hokkaido.jp", -"sunagawa.hokkaido.jp", -"taiki.hokkaido.jp", -"takasu.hokkaido.jp", -"takikawa.hokkaido.jp", -"takinoue.hokkaido.jp", -"teshikaga.hokkaido.jp", -"tobetsu.hokkaido.jp", -"tohma.hokkaido.jp", -"tomakomai.hokkaido.jp", -"tomari.hokkaido.jp", -"toya.hokkaido.jp", -"toyako.hokkaido.jp", -"toyotomi.hokkaido.jp", -"toyoura.hokkaido.jp", -"tsubetsu.hokkaido.jp", -"tsukigata.hokkaido.jp", -"urakawa.hokkaido.jp", -"urausu.hokkaido.jp", -"uryu.hokkaido.jp", -"utashinai.hokkaido.jp", -"wakkanai.hokkaido.jp", -"wassamu.hokkaido.jp", -"yakumo.hokkaido.jp", -"yoichi.hokkaido.jp", -"aioi.hyogo.jp", -"akashi.hyogo.jp", -"ako.hyogo.jp", -"amagasaki.hyogo.jp", -"aogaki.hyogo.jp", -"asago.hyogo.jp", -"ashiya.hyogo.jp", -"awaji.hyogo.jp", -"fukusaki.hyogo.jp", -"goshiki.hyogo.jp", -"harima.hyogo.jp", -"himeji.hyogo.jp", -"ichikawa.hyogo.jp", -"inagawa.hyogo.jp", -"itami.hyogo.jp", -"kakogawa.hyogo.jp", -"kamigori.hyogo.jp", -"kamikawa.hyogo.jp", -"kasai.hyogo.jp", -"kasuga.hyogo.jp", -"kawanishi.hyogo.jp", -"miki.hyogo.jp", -"minamiawaji.hyogo.jp", -"nishinomiya.hyogo.jp", -"nishiwaki.hyogo.jp", -"ono.hyogo.jp", -"sanda.hyogo.jp", -"sannan.hyogo.jp", -"sasayama.hyogo.jp", -"sayo.hyogo.jp", -"shingu.hyogo.jp", -"shinonsen.hyogo.jp", -"shiso.hyogo.jp", -"sumoto.hyogo.jp", -"taishi.hyogo.jp", -"taka.hyogo.jp", -"takarazuka.hyogo.jp", -"takasago.hyogo.jp", -"takino.hyogo.jp", -"tamba.hyogo.jp", -"tatsuno.hyogo.jp", -"toyooka.hyogo.jp", -"yabu.hyogo.jp", -"yashiro.hyogo.jp", -"yoka.hyogo.jp", -"yokawa.hyogo.jp", -"ami.ibaraki.jp", -"asahi.ibaraki.jp", -"bando.ibaraki.jp", -"chikusei.ibaraki.jp", -"daigo.ibaraki.jp", -"fujishiro.ibaraki.jp", -"hitachi.ibaraki.jp", -"hitachinaka.ibaraki.jp", -"hitachiomiya.ibaraki.jp", -"hitachiota.ibaraki.jp", -"ibaraki.ibaraki.jp", -"ina.ibaraki.jp", -"inashiki.ibaraki.jp", -"itako.ibaraki.jp", -"iwama.ibaraki.jp", -"joso.ibaraki.jp", -"kamisu.ibaraki.jp", -"kasama.ibaraki.jp", -"kashima.ibaraki.jp", -"kasumigaura.ibaraki.jp", -"koga.ibaraki.jp", -"miho.ibaraki.jp", -"mito.ibaraki.jp", -"moriya.ibaraki.jp", -"naka.ibaraki.jp", -"namegata.ibaraki.jp", -"oarai.ibaraki.jp", -"ogawa.ibaraki.jp", -"omitama.ibaraki.jp", -"ryugasaki.ibaraki.jp", -"sakai.ibaraki.jp", -"sakuragawa.ibaraki.jp", -"shimodate.ibaraki.jp", -"shimotsuma.ibaraki.jp", -"shirosato.ibaraki.jp", -"sowa.ibaraki.jp", -"suifu.ibaraki.jp", -"takahagi.ibaraki.jp", -"tamatsukuri.ibaraki.jp", -"tokai.ibaraki.jp", -"tomobe.ibaraki.jp", -"tone.ibaraki.jp", -"toride.ibaraki.jp", -"tsuchiura.ibaraki.jp", -"tsukuba.ibaraki.jp", -"uchihara.ibaraki.jp", -"ushiku.ibaraki.jp", -"yachiyo.ibaraki.jp", -"yamagata.ibaraki.jp", -"yawara.ibaraki.jp", -"yuki.ibaraki.jp", -"anamizu.ishikawa.jp", -"hakui.ishikawa.jp", -"hakusan.ishikawa.jp", -"kaga.ishikawa.jp", -"kahoku.ishikawa.jp", -"kanazawa.ishikawa.jp", -"kawakita.ishikawa.jp", -"komatsu.ishikawa.jp", -"nakanoto.ishikawa.jp", -"nanao.ishikawa.jp", -"nomi.ishikawa.jp", -"nonoichi.ishikawa.jp", -"noto.ishikawa.jp", -"shika.ishikawa.jp", -"suzu.ishikawa.jp", -"tsubata.ishikawa.jp", -"tsurugi.ishikawa.jp", -"uchinada.ishikawa.jp", -"wajima.ishikawa.jp", -"fudai.iwate.jp", -"fujisawa.iwate.jp", -"hanamaki.iwate.jp", -"hiraizumi.iwate.jp", -"hirono.iwate.jp", -"ichinohe.iwate.jp", -"ichinoseki.iwate.jp", -"iwaizumi.iwate.jp", -"iwate.iwate.jp", -"joboji.iwate.jp", -"kamaishi.iwate.jp", -"kanegasaki.iwate.jp", -"karumai.iwate.jp", -"kawai.iwate.jp", -"kitakami.iwate.jp", -"kuji.iwate.jp", -"kunohe.iwate.jp", -"kuzumaki.iwate.jp", -"miyako.iwate.jp", -"mizusawa.iwate.jp", -"morioka.iwate.jp", -"ninohe.iwate.jp", -"noda.iwate.jp", -"ofunato.iwate.jp", -"oshu.iwate.jp", -"otsuchi.iwate.jp", -"rikuzentakata.iwate.jp", -"shiwa.iwate.jp", -"shizukuishi.iwate.jp", -"sumita.iwate.jp", -"tanohata.iwate.jp", -"tono.iwate.jp", -"yahaba.iwate.jp", -"yamada.iwate.jp", -"ayagawa.kagawa.jp", -"higashikagawa.kagawa.jp", -"kanonji.kagawa.jp", -"kotohira.kagawa.jp", -"manno.kagawa.jp", -"marugame.kagawa.jp", -"mitoyo.kagawa.jp", -"naoshima.kagawa.jp", -"sanuki.kagawa.jp", -"tadotsu.kagawa.jp", -"takamatsu.kagawa.jp", -"tonosho.kagawa.jp", -"uchinomi.kagawa.jp", -"utazu.kagawa.jp", -"zentsuji.kagawa.jp", -"akune.kagoshima.jp", -"amami.kagoshima.jp", -"hioki.kagoshima.jp", -"isa.kagoshima.jp", -"isen.kagoshima.jp", -"izumi.kagoshima.jp", -"kagoshima.kagoshima.jp", -"kanoya.kagoshima.jp", -"kawanabe.kagoshima.jp", -"kinko.kagoshima.jp", -"kouyama.kagoshima.jp", -"makurazaki.kagoshima.jp", -"matsumoto.kagoshima.jp", -"minamitane.kagoshima.jp", -"nakatane.kagoshima.jp", -"nishinoomote.kagoshima.jp", -"satsumasendai.kagoshima.jp", -"soo.kagoshima.jp", -"tarumizu.kagoshima.jp", -"yusui.kagoshima.jp", -"aikawa.kanagawa.jp", -"atsugi.kanagawa.jp", -"ayase.kanagawa.jp", -"chigasaki.kanagawa.jp", -"ebina.kanagawa.jp", -"fujisawa.kanagawa.jp", -"hadano.kanagawa.jp", -"hakone.kanagawa.jp", -"hiratsuka.kanagawa.jp", -"isehara.kanagawa.jp", -"kaisei.kanagawa.jp", -"kamakura.kanagawa.jp", -"kiyokawa.kanagawa.jp", -"matsuda.kanagawa.jp", -"minamiashigara.kanagawa.jp", -"miura.kanagawa.jp", -"nakai.kanagawa.jp", -"ninomiya.kanagawa.jp", -"odawara.kanagawa.jp", -"oi.kanagawa.jp", -"oiso.kanagawa.jp", -"sagamihara.kanagawa.jp", -"samukawa.kanagawa.jp", -"tsukui.kanagawa.jp", -"yamakita.kanagawa.jp", -"yamato.kanagawa.jp", -"yokosuka.kanagawa.jp", -"yugawara.kanagawa.jp", -"zama.kanagawa.jp", -"zushi.kanagawa.jp", -"aki.kochi.jp", -"geisei.kochi.jp", -"hidaka.kochi.jp", -"higashitsuno.kochi.jp", -"ino.kochi.jp", -"kagami.kochi.jp", -"kami.kochi.jp", -"kitagawa.kochi.jp", -"kochi.kochi.jp", -"mihara.kochi.jp", -"motoyama.kochi.jp", -"muroto.kochi.jp", -"nahari.kochi.jp", -"nakamura.kochi.jp", -"nankoku.kochi.jp", -"nishitosa.kochi.jp", -"niyodogawa.kochi.jp", -"ochi.kochi.jp", -"okawa.kochi.jp", -"otoyo.kochi.jp", -"otsuki.kochi.jp", -"sakawa.kochi.jp", -"sukumo.kochi.jp", -"susaki.kochi.jp", -"tosa.kochi.jp", -"tosashimizu.kochi.jp", -"toyo.kochi.jp", -"tsuno.kochi.jp", -"umaji.kochi.jp", -"yasuda.kochi.jp", -"yusuhara.kochi.jp", -"amakusa.kumamoto.jp", -"arao.kumamoto.jp", -"aso.kumamoto.jp", -"choyo.kumamoto.jp", -"gyokuto.kumamoto.jp", -"kamiamakusa.kumamoto.jp", -"kikuchi.kumamoto.jp", -"kumamoto.kumamoto.jp", -"mashiki.kumamoto.jp", -"mifune.kumamoto.jp", -"minamata.kumamoto.jp", -"minamioguni.kumamoto.jp", -"nagasu.kumamoto.jp", -"nishihara.kumamoto.jp", -"oguni.kumamoto.jp", -"ozu.kumamoto.jp", -"sumoto.kumamoto.jp", -"takamori.kumamoto.jp", -"uki.kumamoto.jp", -"uto.kumamoto.jp", -"yamaga.kumamoto.jp", -"yamato.kumamoto.jp", -"yatsushiro.kumamoto.jp", -"ayabe.kyoto.jp", -"fukuchiyama.kyoto.jp", -"higashiyama.kyoto.jp", -"ide.kyoto.jp", -"ine.kyoto.jp", -"joyo.kyoto.jp", -"kameoka.kyoto.jp", -"kamo.kyoto.jp", -"kita.kyoto.jp", -"kizu.kyoto.jp", -"kumiyama.kyoto.jp", -"kyotamba.kyoto.jp", -"kyotanabe.kyoto.jp", -"kyotango.kyoto.jp", -"maizuru.kyoto.jp", -"minami.kyoto.jp", -"minamiyamashiro.kyoto.jp", -"miyazu.kyoto.jp", -"muko.kyoto.jp", -"nagaokakyo.kyoto.jp", -"nakagyo.kyoto.jp", -"nantan.kyoto.jp", -"oyamazaki.kyoto.jp", -"sakyo.kyoto.jp", -"seika.kyoto.jp", -"tanabe.kyoto.jp", -"uji.kyoto.jp", -"ujitawara.kyoto.jp", -"wazuka.kyoto.jp", -"yamashina.kyoto.jp", -"yawata.kyoto.jp", -"asahi.mie.jp", -"inabe.mie.jp", -"ise.mie.jp", -"kameyama.mie.jp", -"kawagoe.mie.jp", -"kiho.mie.jp", -"kisosaki.mie.jp", -"kiwa.mie.jp", -"komono.mie.jp", -"kumano.mie.jp", -"kuwana.mie.jp", -"matsusaka.mie.jp", -"meiwa.mie.jp", -"mihama.mie.jp", -"minamiise.mie.jp", -"misugi.mie.jp", -"miyama.mie.jp", -"nabari.mie.jp", -"shima.mie.jp", -"suzuka.mie.jp", -"tado.mie.jp", -"taiki.mie.jp", -"taki.mie.jp", -"tamaki.mie.jp", -"toba.mie.jp", -"tsu.mie.jp", -"udono.mie.jp", -"ureshino.mie.jp", -"watarai.mie.jp", -"yokkaichi.mie.jp", -"furukawa.miyagi.jp", -"higashimatsushima.miyagi.jp", -"ishinomaki.miyagi.jp", -"iwanuma.miyagi.jp", -"kakuda.miyagi.jp", -"kami.miyagi.jp", -"kawasaki.miyagi.jp", -"marumori.miyagi.jp", -"matsushima.miyagi.jp", -"minamisanriku.miyagi.jp", -"misato.miyagi.jp", -"murata.miyagi.jp", -"natori.miyagi.jp", -"ogawara.miyagi.jp", -"ohira.miyagi.jp", -"onagawa.miyagi.jp", -"osaki.miyagi.jp", -"rifu.miyagi.jp", -"semine.miyagi.jp", -"shibata.miyagi.jp", -"shichikashuku.miyagi.jp", -"shikama.miyagi.jp", -"shiogama.miyagi.jp", -"shiroishi.miyagi.jp", -"tagajo.miyagi.jp", -"taiwa.miyagi.jp", -"tome.miyagi.jp", -"tomiya.miyagi.jp", -"wakuya.miyagi.jp", -"watari.miyagi.jp", -"yamamoto.miyagi.jp", -"zao.miyagi.jp", -"aya.miyazaki.jp", -"ebino.miyazaki.jp", -"gokase.miyazaki.jp", -"hyuga.miyazaki.jp", -"kadogawa.miyazaki.jp", -"kawaminami.miyazaki.jp", -"kijo.miyazaki.jp", -"kitagawa.miyazaki.jp", -"kitakata.miyazaki.jp", -"kitaura.miyazaki.jp", -"kobayashi.miyazaki.jp", -"kunitomi.miyazaki.jp", -"kushima.miyazaki.jp", -"mimata.miyazaki.jp", -"miyakonojo.miyazaki.jp", -"miyazaki.miyazaki.jp", -"morotsuka.miyazaki.jp", -"nichinan.miyazaki.jp", -"nishimera.miyazaki.jp", -"nobeoka.miyazaki.jp", -"saito.miyazaki.jp", -"shiiba.miyazaki.jp", -"shintomi.miyazaki.jp", -"takaharu.miyazaki.jp", -"takanabe.miyazaki.jp", -"takazaki.miyazaki.jp", -"tsuno.miyazaki.jp", -"achi.nagano.jp", -"agematsu.nagano.jp", -"anan.nagano.jp", -"aoki.nagano.jp", -"asahi.nagano.jp", -"azumino.nagano.jp", -"chikuhoku.nagano.jp", -"chikuma.nagano.jp", -"chino.nagano.jp", -"fujimi.nagano.jp", -"hakuba.nagano.jp", -"hara.nagano.jp", -"hiraya.nagano.jp", -"iida.nagano.jp", -"iijima.nagano.jp", -"iiyama.nagano.jp", -"iizuna.nagano.jp", -"ikeda.nagano.jp", -"ikusaka.nagano.jp", -"ina.nagano.jp", -"karuizawa.nagano.jp", -"kawakami.nagano.jp", -"kiso.nagano.jp", -"kisofukushima.nagano.jp", -"kitaaiki.nagano.jp", -"komagane.nagano.jp", -"komoro.nagano.jp", -"matsukawa.nagano.jp", -"matsumoto.nagano.jp", -"miasa.nagano.jp", -"minamiaiki.nagano.jp", -"minamimaki.nagano.jp", -"minamiminowa.nagano.jp", -"minowa.nagano.jp", -"miyada.nagano.jp", -"miyota.nagano.jp", -"mochizuki.nagano.jp", -"nagano.nagano.jp", -"nagawa.nagano.jp", -"nagiso.nagano.jp", -"nakagawa.nagano.jp", -"nakano.nagano.jp", -"nozawaonsen.nagano.jp", -"obuse.nagano.jp", -"ogawa.nagano.jp", -"okaya.nagano.jp", -"omachi.nagano.jp", -"omi.nagano.jp", -"ookuwa.nagano.jp", -"ooshika.nagano.jp", -"otaki.nagano.jp", -"otari.nagano.jp", -"sakae.nagano.jp", -"sakaki.nagano.jp", -"saku.nagano.jp", -"sakuho.nagano.jp", -"shimosuwa.nagano.jp", -"shinanomachi.nagano.jp", -"shiojiri.nagano.jp", -"suwa.nagano.jp", -"suzaka.nagano.jp", -"takagi.nagano.jp", -"takamori.nagano.jp", -"takayama.nagano.jp", -"tateshina.nagano.jp", -"tatsuno.nagano.jp", -"togakushi.nagano.jp", -"togura.nagano.jp", -"tomi.nagano.jp", -"ueda.nagano.jp", -"wada.nagano.jp", -"yamagata.nagano.jp", -"yamanouchi.nagano.jp", -"yasaka.nagano.jp", -"yasuoka.nagano.jp", -"chijiwa.nagasaki.jp", -"futsu.nagasaki.jp", -"goto.nagasaki.jp", -"hasami.nagasaki.jp", -"hirado.nagasaki.jp", -"iki.nagasaki.jp", -"isahaya.nagasaki.jp", -"kawatana.nagasaki.jp", -"kuchinotsu.nagasaki.jp", -"matsuura.nagasaki.jp", -"nagasaki.nagasaki.jp", -"obama.nagasaki.jp", -"omura.nagasaki.jp", -"oseto.nagasaki.jp", -"saikai.nagasaki.jp", -"sasebo.nagasaki.jp", -"seihi.nagasaki.jp", -"shimabara.nagasaki.jp", -"shinkamigoto.nagasaki.jp", -"togitsu.nagasaki.jp", -"tsushima.nagasaki.jp", -"unzen.nagasaki.jp", -"ando.nara.jp", -"gose.nara.jp", -"heguri.nara.jp", -"higashiyoshino.nara.jp", -"ikaruga.nara.jp", -"ikoma.nara.jp", -"kamikitayama.nara.jp", -"kanmaki.nara.jp", -"kashiba.nara.jp", -"kashihara.nara.jp", -"katsuragi.nara.jp", -"kawai.nara.jp", -"kawakami.nara.jp", -"kawanishi.nara.jp", -"koryo.nara.jp", -"kurotaki.nara.jp", -"mitsue.nara.jp", -"miyake.nara.jp", -"nara.nara.jp", -"nosegawa.nara.jp", -"oji.nara.jp", -"ouda.nara.jp", -"oyodo.nara.jp", -"sakurai.nara.jp", -"sango.nara.jp", -"shimoichi.nara.jp", -"shimokitayama.nara.jp", -"shinjo.nara.jp", -"soni.nara.jp", -"takatori.nara.jp", -"tawaramoto.nara.jp", -"tenkawa.nara.jp", -"tenri.nara.jp", -"uda.nara.jp", -"yamatokoriyama.nara.jp", -"yamatotakada.nara.jp", -"yamazoe.nara.jp", -"yoshino.nara.jp", -"aga.niigata.jp", -"agano.niigata.jp", -"gosen.niigata.jp", -"itoigawa.niigata.jp", -"izumozaki.niigata.jp", -"joetsu.niigata.jp", -"kamo.niigata.jp", -"kariwa.niigata.jp", -"kashiwazaki.niigata.jp", -"minamiuonuma.niigata.jp", -"mitsuke.niigata.jp", -"muika.niigata.jp", -"murakami.niigata.jp", -"myoko.niigata.jp", -"nagaoka.niigata.jp", -"niigata.niigata.jp", -"ojiya.niigata.jp", -"omi.niigata.jp", -"sado.niigata.jp", -"sanjo.niigata.jp", -"seiro.niigata.jp", -"seirou.niigata.jp", -"sekikawa.niigata.jp", -"shibata.niigata.jp", -"tagami.niigata.jp", -"tainai.niigata.jp", -"tochio.niigata.jp", -"tokamachi.niigata.jp", -"tsubame.niigata.jp", -"tsunan.niigata.jp", -"uonuma.niigata.jp", -"yahiko.niigata.jp", -"yoita.niigata.jp", -"yuzawa.niigata.jp", -"beppu.oita.jp", -"bungoono.oita.jp", -"bungotakada.oita.jp", -"hasama.oita.jp", -"hiji.oita.jp", -"himeshima.oita.jp", -"hita.oita.jp", -"kamitsue.oita.jp", -"kokonoe.oita.jp", -"kuju.oita.jp", -"kunisaki.oita.jp", -"kusu.oita.jp", -"oita.oita.jp", -"saiki.oita.jp", -"taketa.oita.jp", -"tsukumi.oita.jp", -"usa.oita.jp", -"usuki.oita.jp", -"yufu.oita.jp", -"akaiwa.okayama.jp", -"asakuchi.okayama.jp", -"bizen.okayama.jp", -"hayashima.okayama.jp", -"ibara.okayama.jp", -"kagamino.okayama.jp", -"kasaoka.okayama.jp", -"kibichuo.okayama.jp", -"kumenan.okayama.jp", -"kurashiki.okayama.jp", -"maniwa.okayama.jp", -"misaki.okayama.jp", -"nagi.okayama.jp", -"niimi.okayama.jp", -"nishiawakura.okayama.jp", -"okayama.okayama.jp", -"satosho.okayama.jp", -"setouchi.okayama.jp", -"shinjo.okayama.jp", -"shoo.okayama.jp", -"soja.okayama.jp", -"takahashi.okayama.jp", -"tamano.okayama.jp", -"tsuyama.okayama.jp", -"wake.okayama.jp", -"yakage.okayama.jp", -"aguni.okinawa.jp", -"ginowan.okinawa.jp", -"ginoza.okinawa.jp", -"gushikami.okinawa.jp", -"haebaru.okinawa.jp", -"higashi.okinawa.jp", -"hirara.okinawa.jp", -"iheya.okinawa.jp", -"ishigaki.okinawa.jp", -"ishikawa.okinawa.jp", -"itoman.okinawa.jp", -"izena.okinawa.jp", -"kadena.okinawa.jp", -"kin.okinawa.jp", -"kitadaito.okinawa.jp", -"kitanakagusuku.okinawa.jp", -"kumejima.okinawa.jp", -"kunigami.okinawa.jp", -"minamidaito.okinawa.jp", -"motobu.okinawa.jp", -"nago.okinawa.jp", -"naha.okinawa.jp", -"nakagusuku.okinawa.jp", -"nakijin.okinawa.jp", -"nanjo.okinawa.jp", -"nishihara.okinawa.jp", -"ogimi.okinawa.jp", -"okinawa.okinawa.jp", -"onna.okinawa.jp", -"shimoji.okinawa.jp", -"taketomi.okinawa.jp", -"tarama.okinawa.jp", -"tokashiki.okinawa.jp", -"tomigusuku.okinawa.jp", -"tonaki.okinawa.jp", -"urasoe.okinawa.jp", -"uruma.okinawa.jp", -"yaese.okinawa.jp", -"yomitan.okinawa.jp", -"yonabaru.okinawa.jp", -"yonaguni.okinawa.jp", -"zamami.okinawa.jp", -"abeno.osaka.jp", -"chihayaakasaka.osaka.jp", -"chuo.osaka.jp", -"daito.osaka.jp", -"fujiidera.osaka.jp", -"habikino.osaka.jp", -"hannan.osaka.jp", -"higashiosaka.osaka.jp", -"higashisumiyoshi.osaka.jp", -"higashiyodogawa.osaka.jp", -"hirakata.osaka.jp", -"ibaraki.osaka.jp", -"ikeda.osaka.jp", -"izumi.osaka.jp", -"izumiotsu.osaka.jp", -"izumisano.osaka.jp", -"kadoma.osaka.jp", -"kaizuka.osaka.jp", -"kanan.osaka.jp", -"kashiwara.osaka.jp", -"katano.osaka.jp", -"kawachinagano.osaka.jp", -"kishiwada.osaka.jp", -"kita.osaka.jp", -"kumatori.osaka.jp", -"matsubara.osaka.jp", -"minato.osaka.jp", -"minoh.osaka.jp", -"misaki.osaka.jp", -"moriguchi.osaka.jp", -"neyagawa.osaka.jp", -"nishi.osaka.jp", -"nose.osaka.jp", -"osakasayama.osaka.jp", -"sakai.osaka.jp", -"sayama.osaka.jp", -"sennan.osaka.jp", -"settsu.osaka.jp", -"shijonawate.osaka.jp", -"shimamoto.osaka.jp", -"suita.osaka.jp", -"tadaoka.osaka.jp", -"taishi.osaka.jp", -"tajiri.osaka.jp", -"takaishi.osaka.jp", -"takatsuki.osaka.jp", -"tondabayashi.osaka.jp", -"toyonaka.osaka.jp", -"toyono.osaka.jp", -"yao.osaka.jp", -"ariake.saga.jp", -"arita.saga.jp", -"fukudomi.saga.jp", -"genkai.saga.jp", -"hamatama.saga.jp", -"hizen.saga.jp", -"imari.saga.jp", -"kamimine.saga.jp", -"kanzaki.saga.jp", -"karatsu.saga.jp", -"kashima.saga.jp", -"kitagata.saga.jp", -"kitahata.saga.jp", -"kiyama.saga.jp", -"kouhoku.saga.jp", -"kyuragi.saga.jp", -"nishiarita.saga.jp", -"ogi.saga.jp", -"omachi.saga.jp", -"ouchi.saga.jp", -"saga.saga.jp", -"shiroishi.saga.jp", -"taku.saga.jp", -"tara.saga.jp", -"tosu.saga.jp", -"yoshinogari.saga.jp", -"arakawa.saitama.jp", -"asaka.saitama.jp", -"chichibu.saitama.jp", -"fujimi.saitama.jp", -"fujimino.saitama.jp", -"fukaya.saitama.jp", -"hanno.saitama.jp", -"hanyu.saitama.jp", -"hasuda.saitama.jp", -"hatogaya.saitama.jp", -"hatoyama.saitama.jp", -"hidaka.saitama.jp", -"higashichichibu.saitama.jp", -"higashimatsuyama.saitama.jp", -"honjo.saitama.jp", -"ina.saitama.jp", -"iruma.saitama.jp", -"iwatsuki.saitama.jp", -"kamiizumi.saitama.jp", -"kamikawa.saitama.jp", -"kamisato.saitama.jp", -"kasukabe.saitama.jp", -"kawagoe.saitama.jp", -"kawaguchi.saitama.jp", -"kawajima.saitama.jp", -"kazo.saitama.jp", -"kitamoto.saitama.jp", -"koshigaya.saitama.jp", -"kounosu.saitama.jp", -"kuki.saitama.jp", -"kumagaya.saitama.jp", -"matsubushi.saitama.jp", -"minano.saitama.jp", -"misato.saitama.jp", -"miyashiro.saitama.jp", -"miyoshi.saitama.jp", -"moroyama.saitama.jp", -"nagatoro.saitama.jp", -"namegawa.saitama.jp", -"niiza.saitama.jp", -"ogano.saitama.jp", -"ogawa.saitama.jp", -"ogose.saitama.jp", -"okegawa.saitama.jp", -"omiya.saitama.jp", -"otaki.saitama.jp", -"ranzan.saitama.jp", -"ryokami.saitama.jp", -"saitama.saitama.jp", -"sakado.saitama.jp", -"satte.saitama.jp", -"sayama.saitama.jp", -"shiki.saitama.jp", -"shiraoka.saitama.jp", -"soka.saitama.jp", -"sugito.saitama.jp", -"toda.saitama.jp", -"tokigawa.saitama.jp", -"tokorozawa.saitama.jp", -"tsurugashima.saitama.jp", -"urawa.saitama.jp", -"warabi.saitama.jp", -"yashio.saitama.jp", -"yokoze.saitama.jp", -"yono.saitama.jp", -"yorii.saitama.jp", -"yoshida.saitama.jp", -"yoshikawa.saitama.jp", -"yoshimi.saitama.jp", -"aisho.shiga.jp", -"gamo.shiga.jp", -"higashiomi.shiga.jp", -"hikone.shiga.jp", -"koka.shiga.jp", -"konan.shiga.jp", -"kosei.shiga.jp", -"koto.shiga.jp", -"kusatsu.shiga.jp", -"maibara.shiga.jp", -"moriyama.shiga.jp", -"nagahama.shiga.jp", -"nishiazai.shiga.jp", -"notogawa.shiga.jp", -"omihachiman.shiga.jp", -"otsu.shiga.jp", -"ritto.shiga.jp", -"ryuoh.shiga.jp", -"takashima.shiga.jp", -"takatsuki.shiga.jp", -"torahime.shiga.jp", -"toyosato.shiga.jp", -"yasu.shiga.jp", -"akagi.shimane.jp", -"ama.shimane.jp", -"gotsu.shimane.jp", -"hamada.shimane.jp", -"higashiizumo.shimane.jp", -"hikawa.shimane.jp", -"hikimi.shimane.jp", -"izumo.shimane.jp", -"kakinoki.shimane.jp", -"masuda.shimane.jp", -"matsue.shimane.jp", -"misato.shimane.jp", -"nishinoshima.shimane.jp", -"ohda.shimane.jp", -"okinoshima.shimane.jp", -"okuizumo.shimane.jp", -"shimane.shimane.jp", -"tamayu.shimane.jp", -"tsuwano.shimane.jp", -"unnan.shimane.jp", -"yakumo.shimane.jp", -"yasugi.shimane.jp", -"yatsuka.shimane.jp", -"arai.shizuoka.jp", -"atami.shizuoka.jp", -"fuji.shizuoka.jp", -"fujieda.shizuoka.jp", -"fujikawa.shizuoka.jp", -"fujinomiya.shizuoka.jp", -"fukuroi.shizuoka.jp", -"gotemba.shizuoka.jp", -"haibara.shizuoka.jp", -"hamamatsu.shizuoka.jp", -"higashiizu.shizuoka.jp", -"ito.shizuoka.jp", -"iwata.shizuoka.jp", -"izu.shizuoka.jp", -"izunokuni.shizuoka.jp", -"kakegawa.shizuoka.jp", -"kannami.shizuoka.jp", -"kawanehon.shizuoka.jp", -"kawazu.shizuoka.jp", -"kikugawa.shizuoka.jp", -"kosai.shizuoka.jp", -"makinohara.shizuoka.jp", -"matsuzaki.shizuoka.jp", -"minamiizu.shizuoka.jp", -"mishima.shizuoka.jp", -"morimachi.shizuoka.jp", -"nishiizu.shizuoka.jp", -"numazu.shizuoka.jp", -"omaezaki.shizuoka.jp", -"shimada.shizuoka.jp", -"shimizu.shizuoka.jp", -"shimoda.shizuoka.jp", -"shizuoka.shizuoka.jp", -"susono.shizuoka.jp", -"yaizu.shizuoka.jp", -"yoshida.shizuoka.jp", -"ashikaga.tochigi.jp", -"bato.tochigi.jp", -"haga.tochigi.jp", -"ichikai.tochigi.jp", -"iwafune.tochigi.jp", -"kaminokawa.tochigi.jp", -"kanuma.tochigi.jp", -"karasuyama.tochigi.jp", -"kuroiso.tochigi.jp", -"mashiko.tochigi.jp", -"mibu.tochigi.jp", -"moka.tochigi.jp", -"motegi.tochigi.jp", -"nasu.tochigi.jp", -"nasushiobara.tochigi.jp", -"nikko.tochigi.jp", -"nishikata.tochigi.jp", -"nogi.tochigi.jp", -"ohira.tochigi.jp", -"ohtawara.tochigi.jp", -"oyama.tochigi.jp", -"sakura.tochigi.jp", -"sano.tochigi.jp", -"shimotsuke.tochigi.jp", -"shioya.tochigi.jp", -"takanezawa.tochigi.jp", -"tochigi.tochigi.jp", -"tsuga.tochigi.jp", -"ujiie.tochigi.jp", -"utsunomiya.tochigi.jp", -"yaita.tochigi.jp", -"aizumi.tokushima.jp", -"anan.tokushima.jp", -"ichiba.tokushima.jp", -"itano.tokushima.jp", -"kainan.tokushima.jp", -"komatsushima.tokushima.jp", -"matsushige.tokushima.jp", -"mima.tokushima.jp", -"minami.tokushima.jp", -"miyoshi.tokushima.jp", -"mugi.tokushima.jp", -"nakagawa.tokushima.jp", -"naruto.tokushima.jp", -"sanagochi.tokushima.jp", -"shishikui.tokushima.jp", -"tokushima.tokushima.jp", -"wajiki.tokushima.jp", -"adachi.tokyo.jp", -"akiruno.tokyo.jp", -"akishima.tokyo.jp", -"aogashima.tokyo.jp", -"arakawa.tokyo.jp", -"bunkyo.tokyo.jp", -"chiyoda.tokyo.jp", -"chofu.tokyo.jp", -"chuo.tokyo.jp", -"edogawa.tokyo.jp", -"fuchu.tokyo.jp", -"fussa.tokyo.jp", -"hachijo.tokyo.jp", -"hachioji.tokyo.jp", -"hamura.tokyo.jp", -"higashikurume.tokyo.jp", -"higashimurayama.tokyo.jp", -"higashiyamato.tokyo.jp", -"hino.tokyo.jp", -"hinode.tokyo.jp", -"hinohara.tokyo.jp", -"inagi.tokyo.jp", -"itabashi.tokyo.jp", -"katsushika.tokyo.jp", -"kita.tokyo.jp", -"kiyose.tokyo.jp", -"kodaira.tokyo.jp", -"koganei.tokyo.jp", -"kokubunji.tokyo.jp", -"komae.tokyo.jp", -"koto.tokyo.jp", -"kouzushima.tokyo.jp", -"kunitachi.tokyo.jp", -"machida.tokyo.jp", -"meguro.tokyo.jp", -"minato.tokyo.jp", -"mitaka.tokyo.jp", -"mizuho.tokyo.jp", -"musashimurayama.tokyo.jp", -"musashino.tokyo.jp", -"nakano.tokyo.jp", -"nerima.tokyo.jp", -"ogasawara.tokyo.jp", -"okutama.tokyo.jp", -"ome.tokyo.jp", -"oshima.tokyo.jp", -"ota.tokyo.jp", -"setagaya.tokyo.jp", -"shibuya.tokyo.jp", -"shinagawa.tokyo.jp", -"shinjuku.tokyo.jp", -"suginami.tokyo.jp", -"sumida.tokyo.jp", -"tachikawa.tokyo.jp", -"taito.tokyo.jp", -"tama.tokyo.jp", -"toshima.tokyo.jp", -"chizu.tottori.jp", -"hino.tottori.jp", -"kawahara.tottori.jp", -"koge.tottori.jp", -"kotoura.tottori.jp", -"misasa.tottori.jp", -"nanbu.tottori.jp", -"nichinan.tottori.jp", -"sakaiminato.tottori.jp", -"tottori.tottori.jp", -"wakasa.tottori.jp", -"yazu.tottori.jp", -"yonago.tottori.jp", -"asahi.toyama.jp", -"fuchu.toyama.jp", -"fukumitsu.toyama.jp", -"funahashi.toyama.jp", -"himi.toyama.jp", -"imizu.toyama.jp", -"inami.toyama.jp", -"johana.toyama.jp", -"kamiichi.toyama.jp", -"kurobe.toyama.jp", -"nakaniikawa.toyama.jp", -"namerikawa.toyama.jp", -"nanto.toyama.jp", -"nyuzen.toyama.jp", -"oyabe.toyama.jp", -"taira.toyama.jp", -"takaoka.toyama.jp", -"tateyama.toyama.jp", -"toga.toyama.jp", -"tonami.toyama.jp", -"toyama.toyama.jp", -"unazuki.toyama.jp", -"uozu.toyama.jp", -"yamada.toyama.jp", -"arida.wakayama.jp", -"aridagawa.wakayama.jp", -"gobo.wakayama.jp", -"hashimoto.wakayama.jp", -"hidaka.wakayama.jp", -"hirogawa.wakayama.jp", -"inami.wakayama.jp", -"iwade.wakayama.jp", -"kainan.wakayama.jp", -"kamitonda.wakayama.jp", -"katsuragi.wakayama.jp", -"kimino.wakayama.jp", -"kinokawa.wakayama.jp", -"kitayama.wakayama.jp", -"koya.wakayama.jp", -"koza.wakayama.jp", -"kozagawa.wakayama.jp", -"kudoyama.wakayama.jp", -"kushimoto.wakayama.jp", -"mihama.wakayama.jp", -"misato.wakayama.jp", -"nachikatsuura.wakayama.jp", -"shingu.wakayama.jp", -"shirahama.wakayama.jp", -"taiji.wakayama.jp", -"tanabe.wakayama.jp", -"wakayama.wakayama.jp", -"yuasa.wakayama.jp", -"yura.wakayama.jp", -"asahi.yamagata.jp", -"funagata.yamagata.jp", -"higashine.yamagata.jp", -"iide.yamagata.jp", -"kahoku.yamagata.jp", -"kaminoyama.yamagata.jp", -"kaneyama.yamagata.jp", -"kawanishi.yamagata.jp", -"mamurogawa.yamagata.jp", -"mikawa.yamagata.jp", -"murayama.yamagata.jp", -"nagai.yamagata.jp", -"nakayama.yamagata.jp", -"nanyo.yamagata.jp", -"nishikawa.yamagata.jp", -"obanazawa.yamagata.jp", -"oe.yamagata.jp", -"oguni.yamagata.jp", -"ohkura.yamagata.jp", -"oishida.yamagata.jp", -"sagae.yamagata.jp", -"sakata.yamagata.jp", -"sakegawa.yamagata.jp", -"shinjo.yamagata.jp", -"shirataka.yamagata.jp", -"shonai.yamagata.jp", -"takahata.yamagata.jp", -"tendo.yamagata.jp", -"tozawa.yamagata.jp", -"tsuruoka.yamagata.jp", -"yamagata.yamagata.jp", -"yamanobe.yamagata.jp", -"yonezawa.yamagata.jp", -"yuza.yamagata.jp", -"abu.yamaguchi.jp", -"hagi.yamaguchi.jp", -"hikari.yamaguchi.jp", -"hofu.yamaguchi.jp", -"iwakuni.yamaguchi.jp", -"kudamatsu.yamaguchi.jp", -"mitou.yamaguchi.jp", -"nagato.yamaguchi.jp", -"oshima.yamaguchi.jp", -"shimonoseki.yamaguchi.jp", -"shunan.yamaguchi.jp", -"tabuse.yamaguchi.jp", -"tokuyama.yamaguchi.jp", -"toyota.yamaguchi.jp", -"ube.yamaguchi.jp", -"yuu.yamaguchi.jp", -"chuo.yamanashi.jp", -"doshi.yamanashi.jp", -"fuefuki.yamanashi.jp", -"fujikawa.yamanashi.jp", -"fujikawaguchiko.yamanashi.jp", -"fujiyoshida.yamanashi.jp", -"hayakawa.yamanashi.jp", -"hokuto.yamanashi.jp", -"ichikawamisato.yamanashi.jp", -"kai.yamanashi.jp", -"kofu.yamanashi.jp", -"koshu.yamanashi.jp", -"kosuge.yamanashi.jp", -"minami-alps.yamanashi.jp", -"minobu.yamanashi.jp", -"nakamichi.yamanashi.jp", -"nanbu.yamanashi.jp", -"narusawa.yamanashi.jp", -"nirasaki.yamanashi.jp", -"nishikatsura.yamanashi.jp", -"oshino.yamanashi.jp", -"otsuki.yamanashi.jp", -"showa.yamanashi.jp", -"tabayama.yamanashi.jp", -"tsuru.yamanashi.jp", -"uenohara.yamanashi.jp", -"yamanakako.yamanashi.jp", -"yamanashi.yamanashi.jp", -"ke", -"ac.ke", -"co.ke", -"go.ke", -"info.ke", -"me.ke", -"mobi.ke", -"ne.ke", -"or.ke", -"sc.ke", -"kg", -"org.kg", -"net.kg", -"com.kg", -"edu.kg", -"gov.kg", -"mil.kg", -"*.kh", -"ki", -"edu.ki", -"biz.ki", -"net.ki", -"org.ki", -"gov.ki", -"info.ki", -"com.ki", -"km", -"org.km", -"nom.km", -"gov.km", -"prd.km", -"tm.km", -"edu.km", -"mil.km", -"ass.km", -"com.km", -"coop.km", -"asso.km", -"presse.km", -"medecin.km", -"notaires.km", -"pharmaciens.km", -"veterinaire.km", -"gouv.km", -"kn", -"net.kn", -"org.kn", -"edu.kn", -"gov.kn", -"kp", -"com.kp", -"edu.kp", -"gov.kp", -"org.kp", -"rep.kp", -"tra.kp", -"kr", -"ac.kr", -"co.kr", -"es.kr", -"go.kr", -"hs.kr", -"kg.kr", -"mil.kr", -"ms.kr", -"ne.kr", -"or.kr", -"pe.kr", -"re.kr", -"sc.kr", -"busan.kr", -"chungbuk.kr", -"chungnam.kr", -"daegu.kr", -"daejeon.kr", -"gangwon.kr", -"gwangju.kr", -"gyeongbuk.kr", -"gyeonggi.kr", -"gyeongnam.kr", -"incheon.kr", -"jeju.kr", -"jeonbuk.kr", -"jeonnam.kr", -"seoul.kr", -"ulsan.kr", -"kw", -"com.kw", -"edu.kw", -"emb.kw", -"gov.kw", -"ind.kw", -"net.kw", -"org.kw", -"ky", -"edu.ky", -"gov.ky", -"com.ky", -"org.ky", -"net.ky", -"kz", -"org.kz", -"edu.kz", -"net.kz", -"gov.kz", -"mil.kz", -"com.kz", -"la", -"int.la", -"net.la", -"info.la", -"edu.la", -"gov.la", -"per.la", -"com.la", -"org.la", -"lb", -"com.lb", -"edu.lb", -"gov.lb", -"net.lb", -"org.lb", -"lc", -"com.lc", -"net.lc", -"co.lc", -"org.lc", -"edu.lc", -"gov.lc", -"li", -"lk", -"gov.lk", -"sch.lk", -"net.lk", -"int.lk", -"com.lk", -"org.lk", -"edu.lk", -"ngo.lk", -"soc.lk", -"web.lk", -"ltd.lk", -"assn.lk", -"grp.lk", -"hotel.lk", -"ac.lk", -"lr", -"com.lr", -"edu.lr", -"gov.lr", -"org.lr", -"net.lr", -"ls", -"ac.ls", -"biz.ls", -"co.ls", -"edu.ls", -"gov.ls", -"info.ls", -"net.ls", -"org.ls", -"sc.ls", -"lt", -"gov.lt", -"lu", -"lv", -"com.lv", -"edu.lv", -"gov.lv", -"org.lv", -"mil.lv", -"id.lv", -"net.lv", -"asn.lv", -"conf.lv", -"ly", -"com.ly", -"net.ly", -"gov.ly", -"plc.ly", -"edu.ly", -"sch.ly", -"med.ly", -"org.ly", -"id.ly", -"ma", -"co.ma", -"net.ma", -"gov.ma", -"org.ma", -"ac.ma", -"press.ma", -"mc", -"tm.mc", -"asso.mc", -"md", -"me", -"co.me", -"net.me", -"org.me", -"edu.me", -"ac.me", -"gov.me", -"its.me", -"priv.me", -"mg", -"org.mg", -"nom.mg", -"gov.mg", -"prd.mg", -"tm.mg", -"edu.mg", -"mil.mg", -"com.mg", -"co.mg", -"mh", -"mil", -"mk", -"com.mk", -"org.mk", -"net.mk", -"edu.mk", -"gov.mk", -"inf.mk", -"name.mk", -"ml", -"com.ml", -"edu.ml", -"gouv.ml", -"gov.ml", -"net.ml", -"org.ml", -"presse.ml", -"*.mm", -"mn", -"gov.mn", -"edu.mn", -"org.mn", -"mo", -"com.mo", -"net.mo", -"org.mo", -"edu.mo", -"gov.mo", -"mobi", -"mp", -"mq", -"mr", -"gov.mr", -"ms", -"com.ms", -"edu.ms", -"gov.ms", -"net.ms", -"org.ms", -"mt", -"com.mt", -"edu.mt", -"net.mt", -"org.mt", -"mu", -"com.mu", -"net.mu", -"org.mu", -"gov.mu", -"ac.mu", -"co.mu", -"or.mu", -"museum", -"academy.museum", -"agriculture.museum", -"air.museum", -"airguard.museum", -"alabama.museum", -"alaska.museum", -"amber.museum", -"ambulance.museum", -"american.museum", -"americana.museum", -"americanantiques.museum", -"americanart.museum", -"amsterdam.museum", -"and.museum", -"annefrank.museum", -"anthro.museum", -"anthropology.museum", -"antiques.museum", -"aquarium.museum", -"arboretum.museum", -"archaeological.museum", -"archaeology.museum", -"architecture.museum", -"art.museum", -"artanddesign.museum", -"artcenter.museum", -"artdeco.museum", -"arteducation.museum", -"artgallery.museum", -"arts.museum", -"artsandcrafts.museum", -"asmatart.museum", -"assassination.museum", -"assisi.museum", -"association.museum", -"astronomy.museum", -"atlanta.museum", -"austin.museum", -"australia.museum", -"automotive.museum", -"aviation.museum", -"axis.museum", -"badajoz.museum", -"baghdad.museum", -"bahn.museum", -"bale.museum", -"baltimore.museum", -"barcelona.museum", -"baseball.museum", -"basel.museum", -"baths.museum", -"bauern.museum", -"beauxarts.museum", -"beeldengeluid.museum", -"bellevue.museum", -"bergbau.museum", -"berkeley.museum", -"berlin.museum", -"bern.museum", -"bible.museum", -"bilbao.museum", -"bill.museum", -"birdart.museum", -"birthplace.museum", -"bonn.museum", -"boston.museum", -"botanical.museum", -"botanicalgarden.museum", -"botanicgarden.museum", -"botany.museum", -"brandywinevalley.museum", -"brasil.museum", -"bristol.museum", -"british.museum", -"britishcolumbia.museum", -"broadcast.museum", -"brunel.museum", -"brussel.museum", -"brussels.museum", -"bruxelles.museum", -"building.museum", -"burghof.museum", -"bus.museum", -"bushey.museum", -"cadaques.museum", -"california.museum", -"cambridge.museum", -"can.museum", -"canada.museum", -"capebreton.museum", -"carrier.museum", -"cartoonart.museum", -"casadelamoneda.museum", -"castle.museum", -"castres.museum", -"celtic.museum", -"center.museum", -"chattanooga.museum", -"cheltenham.museum", -"chesapeakebay.museum", -"chicago.museum", -"children.museum", -"childrens.museum", -"childrensgarden.museum", -"chiropractic.museum", -"chocolate.museum", -"christiansburg.museum", -"cincinnati.museum", -"cinema.museum", -"circus.museum", -"civilisation.museum", -"civilization.museum", -"civilwar.museum", -"clinton.museum", -"clock.museum", -"coal.museum", -"coastaldefence.museum", -"cody.museum", -"coldwar.museum", -"collection.museum", -"colonialwilliamsburg.museum", -"coloradoplateau.museum", -"columbia.museum", -"columbus.museum", -"communication.museum", -"communications.museum", -"community.museum", -"computer.museum", -"computerhistory.museum", -"comunicações.museum", -"contemporary.museum", -"contemporaryart.museum", -"convent.museum", -"copenhagen.museum", -"corporation.museum", -"correios-e-telecomunicações.museum", -"corvette.museum", -"costume.museum", -"countryestate.museum", -"county.museum", -"crafts.museum", -"cranbrook.museum", -"creation.museum", -"cultural.museum", -"culturalcenter.museum", -"culture.museum", -"cyber.museum", -"cymru.museum", -"dali.museum", -"dallas.museum", -"database.museum", -"ddr.museum", -"decorativearts.museum", -"delaware.museum", -"delmenhorst.museum", -"denmark.museum", -"depot.museum", -"design.museum", -"detroit.museum", -"dinosaur.museum", -"discovery.museum", -"dolls.museum", -"donostia.museum", -"durham.museum", -"eastafrica.museum", -"eastcoast.museum", -"education.museum", -"educational.museum", -"egyptian.museum", -"eisenbahn.museum", -"elburg.museum", -"elvendrell.museum", -"embroidery.museum", -"encyclopedic.museum", -"england.museum", -"entomology.museum", -"environment.museum", -"environmentalconservation.museum", -"epilepsy.museum", -"essex.museum", -"estate.museum", -"ethnology.museum", -"exeter.museum", -"exhibition.museum", -"family.museum", -"farm.museum", -"farmequipment.museum", -"farmers.museum", -"farmstead.museum", -"field.museum", -"figueres.museum", -"filatelia.museum", -"film.museum", -"fineart.museum", -"finearts.museum", -"finland.museum", -"flanders.museum", -"florida.museum", -"force.museum", -"fortmissoula.museum", -"fortworth.museum", -"foundation.museum", -"francaise.museum", -"frankfurt.museum", -"franziskaner.museum", -"freemasonry.museum", -"freiburg.museum", -"fribourg.museum", -"frog.museum", -"fundacio.museum", -"furniture.museum", -"gallery.museum", -"garden.museum", -"gateway.museum", -"geelvinck.museum", -"gemological.museum", -"geology.museum", -"georgia.museum", -"giessen.museum", -"glas.museum", -"glass.museum", -"gorge.museum", -"grandrapids.museum", -"graz.museum", -"guernsey.museum", -"halloffame.museum", -"hamburg.museum", -"handson.museum", -"harvestcelebration.museum", -"hawaii.museum", -"health.museum", -"heimatunduhren.museum", -"hellas.museum", -"helsinki.museum", -"hembygdsforbund.museum", -"heritage.museum", -"histoire.museum", -"historical.museum", -"historicalsociety.museum", -"historichouses.museum", -"historisch.museum", -"historisches.museum", -"history.museum", -"historyofscience.museum", -"horology.museum", -"house.museum", -"humanities.museum", -"illustration.museum", -"imageandsound.museum", -"indian.museum", -"indiana.museum", -"indianapolis.museum", -"indianmarket.museum", -"intelligence.museum", -"interactive.museum", -"iraq.museum", -"iron.museum", -"isleofman.museum", -"jamison.museum", -"jefferson.museum", -"jerusalem.museum", -"jewelry.museum", -"jewish.museum", -"jewishart.museum", -"jfk.museum", -"journalism.museum", -"judaica.museum", -"judygarland.museum", -"juedisches.museum", -"juif.museum", -"karate.museum", -"karikatur.museum", -"kids.museum", -"koebenhavn.museum", -"koeln.museum", -"kunst.museum", -"kunstsammlung.museum", -"kunstunddesign.museum", -"labor.museum", -"labour.museum", -"lajolla.museum", -"lancashire.museum", -"landes.museum", -"lans.museum", -"läns.museum", -"larsson.museum", -"lewismiller.museum", -"lincoln.museum", -"linz.museum", -"living.museum", -"livinghistory.museum", -"localhistory.museum", -"london.museum", -"losangeles.museum", -"louvre.museum", -"loyalist.museum", -"lucerne.museum", -"luxembourg.museum", -"luzern.museum", -"mad.museum", -"madrid.museum", -"mallorca.museum", -"manchester.museum", -"mansion.museum", -"mansions.museum", -"manx.museum", -"marburg.museum", -"maritime.museum", -"maritimo.museum", -"maryland.museum", -"marylhurst.museum", -"media.museum", -"medical.museum", -"medizinhistorisches.museum", -"meeres.museum", -"memorial.museum", -"mesaverde.museum", -"michigan.museum", -"midatlantic.museum", -"military.museum", -"mill.museum", -"miners.museum", -"mining.museum", -"minnesota.museum", -"missile.museum", -"missoula.museum", -"modern.museum", -"moma.museum", -"money.museum", -"monmouth.museum", -"monticello.museum", -"montreal.museum", -"moscow.museum", -"motorcycle.museum", -"muenchen.museum", -"muenster.museum", -"mulhouse.museum", -"muncie.museum", -"museet.museum", -"museumcenter.museum", -"museumvereniging.museum", -"music.museum", -"national.museum", -"nationalfirearms.museum", -"nationalheritage.museum", -"nativeamerican.museum", -"naturalhistory.museum", -"naturalhistorymuseum.museum", -"naturalsciences.museum", -"nature.museum", -"naturhistorisches.museum", -"natuurwetenschappen.museum", -"naumburg.museum", -"naval.museum", -"nebraska.museum", -"neues.museum", -"newhampshire.museum", -"newjersey.museum", -"newmexico.museum", -"newport.museum", -"newspaper.museum", -"newyork.museum", -"niepce.museum", -"norfolk.museum", -"north.museum", -"nrw.museum", -"nyc.museum", -"nyny.museum", -"oceanographic.museum", -"oceanographique.museum", -"omaha.museum", -"online.museum", -"ontario.museum", -"openair.museum", -"oregon.museum", -"oregontrail.museum", -"otago.museum", -"oxford.museum", -"pacific.museum", -"paderborn.museum", -"palace.museum", -"paleo.museum", -"palmsprings.museum", -"panama.museum", -"paris.museum", -"pasadena.museum", -"pharmacy.museum", -"philadelphia.museum", -"philadelphiaarea.museum", -"philately.museum", -"phoenix.museum", -"photography.museum", -"pilots.museum", -"pittsburgh.museum", -"planetarium.museum", -"plantation.museum", -"plants.museum", -"plaza.museum", -"portal.museum", -"portland.museum", -"portlligat.museum", -"posts-and-telecommunications.museum", -"preservation.museum", -"presidio.museum", -"press.museum", -"project.museum", -"public.museum", -"pubol.museum", -"quebec.museum", -"railroad.museum", -"railway.museum", -"research.museum", -"resistance.museum", -"riodejaneiro.museum", -"rochester.museum", -"rockart.museum", -"roma.museum", -"russia.museum", -"saintlouis.museum", -"salem.museum", -"salvadordali.museum", -"salzburg.museum", -"sandiego.museum", -"sanfrancisco.museum", -"santabarbara.museum", -"santacruz.museum", -"santafe.museum", -"saskatchewan.museum", -"satx.museum", -"savannahga.museum", -"schlesisches.museum", -"schoenbrunn.museum", -"schokoladen.museum", -"school.museum", -"schweiz.museum", -"science.museum", -"scienceandhistory.museum", -"scienceandindustry.museum", -"sciencecenter.museum", -"sciencecenters.museum", -"science-fiction.museum", -"sciencehistory.museum", -"sciences.museum", -"sciencesnaturelles.museum", -"scotland.museum", -"seaport.museum", -"settlement.museum", -"settlers.museum", -"shell.museum", -"sherbrooke.museum", -"sibenik.museum", -"silk.museum", -"ski.museum", -"skole.museum", -"society.museum", -"sologne.museum", -"soundandvision.museum", -"southcarolina.museum", -"southwest.museum", -"space.museum", -"spy.museum", -"square.museum", -"stadt.museum", -"stalbans.museum", -"starnberg.museum", -"state.museum", -"stateofdelaware.museum", -"station.museum", -"steam.museum", -"steiermark.museum", -"stjohn.museum", -"stockholm.museum", -"stpetersburg.museum", -"stuttgart.museum", -"suisse.museum", -"surgeonshall.museum", -"surrey.museum", -"svizzera.museum", -"sweden.museum", -"sydney.museum", -"tank.museum", -"tcm.museum", -"technology.museum", -"telekommunikation.museum", -"television.museum", -"texas.museum", -"textile.museum", -"theater.museum", -"time.museum", -"timekeeping.museum", -"topology.museum", -"torino.museum", -"touch.museum", -"town.museum", -"transport.museum", -"tree.museum", -"trolley.museum", -"trust.museum", -"trustee.museum", -"uhren.museum", -"ulm.museum", -"undersea.museum", -"university.museum", -"usa.museum", -"usantiques.museum", -"usarts.museum", -"uscountryestate.museum", -"usculture.museum", -"usdecorativearts.museum", -"usgarden.museum", -"ushistory.museum", -"ushuaia.museum", -"uslivinghistory.museum", -"utah.museum", -"uvic.museum", -"valley.museum", -"vantaa.museum", -"versailles.museum", -"viking.museum", -"village.museum", -"virginia.museum", -"virtual.museum", -"virtuel.museum", -"vlaanderen.museum", -"volkenkunde.museum", -"wales.museum", -"wallonie.museum", -"war.museum", -"washingtondc.museum", -"watchandclock.museum", -"watch-and-clock.museum", -"western.museum", -"westfalen.museum", -"whaling.museum", -"wildlife.museum", -"williamsburg.museum", -"windmill.museum", -"workshop.museum", -"york.museum", -"yorkshire.museum", -"yosemite.museum", -"youth.museum", -"zoological.museum", -"zoology.museum", -"ירושלים.museum", -"иком.museum", -"mv", -"aero.mv", -"biz.mv", -"com.mv", -"coop.mv", -"edu.mv", -"gov.mv", -"info.mv", -"int.mv", -"mil.mv", -"museum.mv", -"name.mv", -"net.mv", -"org.mv", -"pro.mv", -"mw", -"ac.mw", -"biz.mw", -"co.mw", -"com.mw", -"coop.mw", -"edu.mw", -"gov.mw", -"int.mw", -"museum.mw", -"net.mw", -"org.mw", -"mx", -"com.mx", -"org.mx", -"gob.mx", -"edu.mx", -"net.mx", -"my", -"com.my", -"net.my", -"org.my", -"gov.my", -"edu.my", -"mil.my", -"name.my", -"mz", -"ac.mz", -"adv.mz", -"co.mz", -"edu.mz", -"gov.mz", -"mil.mz", -"net.mz", -"org.mz", -"na", -"info.na", -"pro.na", -"name.na", -"school.na", -"or.na", -"dr.na", -"us.na", -"mx.na", -"ca.na", -"in.na", -"cc.na", -"tv.na", -"ws.na", -"mobi.na", -"co.na", -"com.na", -"org.na", -"name", -"nc", -"asso.nc", -"nom.nc", -"ne", -"net", -"nf", -"com.nf", -"net.nf", -"per.nf", -"rec.nf", -"web.nf", -"arts.nf", -"firm.nf", -"info.nf", -"other.nf", -"store.nf", -"ng", -"com.ng", -"edu.ng", -"gov.ng", -"i.ng", -"mil.ng", -"mobi.ng", -"name.ng", -"net.ng", -"org.ng", -"sch.ng", -"ni", -"ac.ni", -"biz.ni", -"co.ni", -"com.ni", -"edu.ni", -"gob.ni", -"in.ni", -"info.ni", -"int.ni", -"mil.ni", -"net.ni", -"nom.ni", -"org.ni", -"web.ni", -"nl", -"no", -"fhs.no", -"vgs.no", -"fylkesbibl.no", -"folkebibl.no", -"museum.no", -"idrett.no", -"priv.no", -"mil.no", -"stat.no", -"dep.no", -"kommune.no", -"herad.no", -"aa.no", -"ah.no", -"bu.no", -"fm.no", -"hl.no", -"hm.no", -"jan-mayen.no", -"mr.no", -"nl.no", -"nt.no", -"of.no", -"ol.no", -"oslo.no", -"rl.no", -"sf.no", -"st.no", -"svalbard.no", -"tm.no", -"tr.no", -"va.no", -"vf.no", -"gs.aa.no", -"gs.ah.no", -"gs.bu.no", -"gs.fm.no", -"gs.hl.no", -"gs.hm.no", -"gs.jan-mayen.no", -"gs.mr.no", -"gs.nl.no", -"gs.nt.no", -"gs.of.no", -"gs.ol.no", -"gs.oslo.no", -"gs.rl.no", -"gs.sf.no", -"gs.st.no", -"gs.svalbard.no", -"gs.tm.no", -"gs.tr.no", -"gs.va.no", -"gs.vf.no", -"akrehamn.no", -"åkrehamn.no", -"algard.no", -"ålgård.no", -"arna.no", -"brumunddal.no", -"bryne.no", -"bronnoysund.no", -"brønnøysund.no", -"drobak.no", -"drøbak.no", -"egersund.no", -"fetsund.no", -"floro.no", -"florø.no", -"fredrikstad.no", -"hokksund.no", -"honefoss.no", -"hønefoss.no", -"jessheim.no", -"jorpeland.no", -"jørpeland.no", -"kirkenes.no", -"kopervik.no", -"krokstadelva.no", -"langevag.no", -"langevåg.no", -"leirvik.no", -"mjondalen.no", -"mjøndalen.no", -"mo-i-rana.no", -"mosjoen.no", -"mosjøen.no", -"nesoddtangen.no", -"orkanger.no", -"osoyro.no", -"osøyro.no", -"raholt.no", -"råholt.no", -"sandnessjoen.no", -"sandnessjøen.no", -"skedsmokorset.no", -"slattum.no", -"spjelkavik.no", -"stathelle.no", -"stavern.no", -"stjordalshalsen.no", -"stjørdalshalsen.no", -"tananger.no", -"tranby.no", -"vossevangen.no", -"afjord.no", -"åfjord.no", -"agdenes.no", -"al.no", -"ål.no", -"alesund.no", -"ålesund.no", -"alstahaug.no", -"alta.no", -"áltá.no", -"alaheadju.no", -"álaheadju.no", -"alvdal.no", -"amli.no", -"åmli.no", -"amot.no", -"åmot.no", -"andebu.no", -"andoy.no", -"andøy.no", -"andasuolo.no", -"ardal.no", -"årdal.no", -"aremark.no", -"arendal.no", -"ås.no", -"aseral.no", -"åseral.no", -"asker.no", -"askim.no", -"askvoll.no", -"askoy.no", -"askøy.no", -"asnes.no", -"åsnes.no", -"audnedaln.no", -"aukra.no", -"aure.no", -"aurland.no", -"aurskog-holand.no", -"aurskog-høland.no", -"austevoll.no", -"austrheim.no", -"averoy.no", -"averøy.no", -"balestrand.no", -"ballangen.no", -"balat.no", -"bálát.no", -"balsfjord.no", -"bahccavuotna.no", -"báhccavuotna.no", -"bamble.no", -"bardu.no", -"beardu.no", -"beiarn.no", -"bajddar.no", -"bájddar.no", -"baidar.no", -"báidár.no", -"berg.no", -"bergen.no", -"berlevag.no", -"berlevåg.no", -"bearalvahki.no", -"bearalváhki.no", -"bindal.no", -"birkenes.no", -"bjarkoy.no", -"bjarkøy.no", -"bjerkreim.no", -"bjugn.no", -"bodo.no", -"bodø.no", -"badaddja.no", -"bådåddjå.no", -"budejju.no", -"bokn.no", -"bremanger.no", -"bronnoy.no", -"brønnøy.no", -"bygland.no", -"bykle.no", -"barum.no", -"bærum.no", -"bo.telemark.no", -"bø.telemark.no", -"bo.nordland.no", -"bø.nordland.no", -"bievat.no", -"bievát.no", -"bomlo.no", -"bømlo.no", -"batsfjord.no", -"båtsfjord.no", -"bahcavuotna.no", -"báhcavuotna.no", -"dovre.no", -"drammen.no", -"drangedal.no", -"dyroy.no", -"dyrøy.no", -"donna.no", -"dønna.no", -"eid.no", -"eidfjord.no", -"eidsberg.no", -"eidskog.no", -"eidsvoll.no", -"eigersund.no", -"elverum.no", -"enebakk.no", -"engerdal.no", -"etne.no", -"etnedal.no", -"evenes.no", -"evenassi.no", -"evenášši.no", -"evje-og-hornnes.no", -"farsund.no", -"fauske.no", -"fuossko.no", -"fuoisku.no", -"fedje.no", -"fet.no", -"finnoy.no", -"finnøy.no", -"fitjar.no", -"fjaler.no", -"fjell.no", -"flakstad.no", -"flatanger.no", -"flekkefjord.no", -"flesberg.no", -"flora.no", -"fla.no", -"flå.no", -"folldal.no", -"forsand.no", -"fosnes.no", -"frei.no", -"frogn.no", -"froland.no", -"frosta.no", -"frana.no", -"fræna.no", -"froya.no", -"frøya.no", -"fusa.no", -"fyresdal.no", -"forde.no", -"førde.no", -"gamvik.no", -"gangaviika.no", -"gáŋgaviika.no", -"gaular.no", -"gausdal.no", -"gildeskal.no", -"gildeskål.no", -"giske.no", -"gjemnes.no", -"gjerdrum.no", -"gjerstad.no", -"gjesdal.no", -"gjovik.no", -"gjøvik.no", -"gloppen.no", -"gol.no", -"gran.no", -"grane.no", -"granvin.no", -"gratangen.no", -"grimstad.no", -"grong.no", -"kraanghke.no", -"kråanghke.no", -"grue.no", -"gulen.no", -"hadsel.no", -"halden.no", -"halsa.no", -"hamar.no", -"hamaroy.no", -"habmer.no", -"hábmer.no", -"hapmir.no", -"hápmir.no", -"hammerfest.no", -"hammarfeasta.no", -"hámmárfeasta.no", -"haram.no", -"hareid.no", -"harstad.no", -"hasvik.no", -"aknoluokta.no", -"ákŋoluokta.no", -"hattfjelldal.no", -"aarborte.no", -"haugesund.no", -"hemne.no", -"hemnes.no", -"hemsedal.no", -"heroy.more-og-romsdal.no", -"herøy.møre-og-romsdal.no", -"heroy.nordland.no", -"herøy.nordland.no", -"hitra.no", -"hjartdal.no", -"hjelmeland.no", -"hobol.no", -"hobøl.no", -"hof.no", -"hol.no", -"hole.no", -"holmestrand.no", -"holtalen.no", -"holtålen.no", -"hornindal.no", -"horten.no", -"hurdal.no", -"hurum.no", -"hvaler.no", -"hyllestad.no", -"hagebostad.no", -"hægebostad.no", -"hoyanger.no", -"høyanger.no", -"hoylandet.no", -"høylandet.no", -"ha.no", -"hå.no", -"ibestad.no", -"inderoy.no", -"inderøy.no", -"iveland.no", -"jevnaker.no", -"jondal.no", -"jolster.no", -"jølster.no", -"karasjok.no", -"karasjohka.no", -"kárášjohka.no", -"karlsoy.no", -"galsa.no", -"gálsá.no", -"karmoy.no", -"karmøy.no", -"kautokeino.no", -"guovdageaidnu.no", -"klepp.no", -"klabu.no", -"klæbu.no", -"kongsberg.no", -"kongsvinger.no", -"kragero.no", -"kragerø.no", -"kristiansand.no", -"kristiansund.no", -"krodsherad.no", -"krødsherad.no", -"kvalsund.no", -"rahkkeravju.no", -"ráhkkerávju.no", -"kvam.no", -"kvinesdal.no", -"kvinnherad.no", -"kviteseid.no", -"kvitsoy.no", -"kvitsøy.no", -"kvafjord.no", -"kvæfjord.no", -"giehtavuoatna.no", -"kvanangen.no", -"kvænangen.no", -"navuotna.no", -"návuotna.no", -"kafjord.no", -"kåfjord.no", -"gaivuotna.no", -"gáivuotna.no", -"larvik.no", -"lavangen.no", -"lavagis.no", -"loabat.no", -"loabát.no", -"lebesby.no", -"davvesiida.no", -"leikanger.no", -"leirfjord.no", -"leka.no", -"leksvik.no", -"lenvik.no", -"leangaviika.no", -"leaŋgaviika.no", -"lesja.no", -"levanger.no", -"lier.no", -"lierne.no", -"lillehammer.no", -"lillesand.no", -"lindesnes.no", -"lindas.no", -"lindås.no", -"lom.no", -"loppa.no", -"lahppi.no", -"láhppi.no", -"lund.no", -"lunner.no", -"luroy.no", -"lurøy.no", -"luster.no", -"lyngdal.no", -"lyngen.no", -"ivgu.no", -"lardal.no", -"lerdal.no", -"lærdal.no", -"lodingen.no", -"lødingen.no", -"lorenskog.no", -"lørenskog.no", -"loten.no", -"løten.no", -"malvik.no", -"masoy.no", -"måsøy.no", -"muosat.no", -"muosát.no", -"mandal.no", -"marker.no", -"marnardal.no", -"masfjorden.no", -"meland.no", -"meldal.no", -"melhus.no", -"meloy.no", -"meløy.no", -"meraker.no", -"meråker.no", -"moareke.no", -"moåreke.no", -"midsund.no", -"midtre-gauldal.no", -"modalen.no", -"modum.no", -"molde.no", -"moskenes.no", -"moss.no", -"mosvik.no", -"malselv.no", -"målselv.no", -"malatvuopmi.no", -"málatvuopmi.no", -"namdalseid.no", -"aejrie.no", -"namsos.no", -"namsskogan.no", -"naamesjevuemie.no", -"nååmesjevuemie.no", -"laakesvuemie.no", -"nannestad.no", -"narvik.no", -"narviika.no", -"naustdal.no", -"nedre-eiker.no", -"nes.akershus.no", -"nes.buskerud.no", -"nesna.no", -"nesodden.no", -"nesseby.no", -"unjarga.no", -"unjárga.no", -"nesset.no", -"nissedal.no", -"nittedal.no", -"nord-aurdal.no", -"nord-fron.no", -"nord-odal.no", -"norddal.no", -"nordkapp.no", -"davvenjarga.no", -"davvenjárga.no", -"nordre-land.no", -"nordreisa.no", -"raisa.no", -"ráisa.no", -"nore-og-uvdal.no", -"notodden.no", -"naroy.no", -"nærøy.no", -"notteroy.no", -"nøtterøy.no", -"odda.no", -"oksnes.no", -"øksnes.no", -"oppdal.no", -"oppegard.no", -"oppegård.no", -"orkdal.no", -"orland.no", -"ørland.no", -"orskog.no", -"ørskog.no", -"orsta.no", -"ørsta.no", -"os.hedmark.no", -"os.hordaland.no", -"osen.no", -"osteroy.no", -"osterøy.no", -"ostre-toten.no", -"østre-toten.no", -"overhalla.no", -"ovre-eiker.no", -"øvre-eiker.no", -"oyer.no", -"øyer.no", -"oygarden.no", -"øygarden.no", -"oystre-slidre.no", -"øystre-slidre.no", -"porsanger.no", -"porsangu.no", -"porsáŋgu.no", -"porsgrunn.no", -"radoy.no", -"radøy.no", -"rakkestad.no", -"rana.no", -"ruovat.no", -"randaberg.no", -"rauma.no", -"rendalen.no", -"rennebu.no", -"rennesoy.no", -"rennesøy.no", -"rindal.no", -"ringebu.no", -"ringerike.no", -"ringsaker.no", -"rissa.no", -"risor.no", -"risør.no", -"roan.no", -"rollag.no", -"rygge.no", -"ralingen.no", -"rælingen.no", -"rodoy.no", -"rødøy.no", -"romskog.no", -"rømskog.no", -"roros.no", -"røros.no", -"rost.no", -"røst.no", -"royken.no", -"røyken.no", -"royrvik.no", -"røyrvik.no", -"rade.no", -"råde.no", -"salangen.no", -"siellak.no", -"saltdal.no", -"salat.no", -"sálát.no", -"sálat.no", -"samnanger.no", -"sande.more-og-romsdal.no", -"sande.møre-og-romsdal.no", -"sande.vestfold.no", -"sandefjord.no", -"sandnes.no", -"sandoy.no", -"sandøy.no", -"sarpsborg.no", -"sauda.no", -"sauherad.no", -"sel.no", -"selbu.no", -"selje.no", -"seljord.no", -"sigdal.no", -"siljan.no", -"sirdal.no", -"skaun.no", -"skedsmo.no", -"ski.no", -"skien.no", -"skiptvet.no", -"skjervoy.no", -"skjervøy.no", -"skierva.no", -"skiervá.no", -"skjak.no", -"skjåk.no", -"skodje.no", -"skanland.no", -"skånland.no", -"skanit.no", -"skánit.no", -"smola.no", -"smøla.no", -"snillfjord.no", -"snasa.no", -"snåsa.no", -"snoasa.no", -"snaase.no", -"snåase.no", -"sogndal.no", -"sokndal.no", -"sola.no", -"solund.no", -"songdalen.no", -"sortland.no", -"spydeberg.no", -"stange.no", -"stavanger.no", -"steigen.no", -"steinkjer.no", -"stjordal.no", -"stjørdal.no", -"stokke.no", -"stor-elvdal.no", -"stord.no", -"stordal.no", -"storfjord.no", -"omasvuotna.no", -"strand.no", -"stranda.no", -"stryn.no", -"sula.no", -"suldal.no", -"sund.no", -"sunndal.no", -"surnadal.no", -"sveio.no", -"svelvik.no", -"sykkylven.no", -"sogne.no", -"søgne.no", -"somna.no", -"sømna.no", -"sondre-land.no", -"søndre-land.no", -"sor-aurdal.no", -"sør-aurdal.no", -"sor-fron.no", -"sør-fron.no", -"sor-odal.no", -"sør-odal.no", -"sor-varanger.no", -"sør-varanger.no", -"matta-varjjat.no", -"mátta-várjjat.no", -"sorfold.no", -"sørfold.no", -"sorreisa.no", -"sørreisa.no", -"sorum.no", -"sørum.no", -"tana.no", -"deatnu.no", -"time.no", -"tingvoll.no", -"tinn.no", -"tjeldsund.no", -"dielddanuorri.no", -"tjome.no", -"tjøme.no", -"tokke.no", -"tolga.no", -"torsken.no", -"tranoy.no", -"tranøy.no", -"tromso.no", -"tromsø.no", -"tromsa.no", -"romsa.no", -"trondheim.no", -"troandin.no", -"trysil.no", -"trana.no", -"træna.no", -"trogstad.no", -"trøgstad.no", -"tvedestrand.no", -"tydal.no", -"tynset.no", -"tysfjord.no", -"divtasvuodna.no", -"divttasvuotna.no", -"tysnes.no", -"tysvar.no", -"tysvær.no", -"tonsberg.no", -"tønsberg.no", -"ullensaker.no", -"ullensvang.no", -"ulvik.no", -"utsira.no", -"vadso.no", -"vadsø.no", -"cahcesuolo.no", -"čáhcesuolo.no", -"vaksdal.no", -"valle.no", -"vang.no", -"vanylven.no", -"vardo.no", -"vardø.no", -"varggat.no", -"várggát.no", -"vefsn.no", -"vaapste.no", -"vega.no", -"vegarshei.no", -"vegårshei.no", -"vennesla.no", -"verdal.no", -"verran.no", -"vestby.no", -"vestnes.no", -"vestre-slidre.no", -"vestre-toten.no", -"vestvagoy.no", -"vestvågøy.no", -"vevelstad.no", -"vik.no", -"vikna.no", -"vindafjord.no", -"volda.no", -"voss.no", -"varoy.no", -"værøy.no", -"vagan.no", -"vågan.no", -"voagat.no", -"vagsoy.no", -"vågsøy.no", -"vaga.no", -"vågå.no", -"valer.ostfold.no", -"våler.østfold.no", -"valer.hedmark.no", -"våler.hedmark.no", -"*.np", -"nr", -"biz.nr", -"info.nr", -"gov.nr", -"edu.nr", -"org.nr", -"net.nr", -"com.nr", -"nu", -"nz", -"ac.nz", -"co.nz", -"cri.nz", -"geek.nz", -"gen.nz", -"govt.nz", -"health.nz", -"iwi.nz", -"kiwi.nz", -"maori.nz", -"mil.nz", -"māori.nz", -"net.nz", -"org.nz", -"parliament.nz", -"school.nz", -"om", -"co.om", -"com.om", -"edu.om", -"gov.om", -"med.om", -"museum.om", -"net.om", -"org.om", -"pro.om", -"onion", -"org", -"pa", -"ac.pa", -"gob.pa", -"com.pa", -"org.pa", -"sld.pa", -"edu.pa", -"net.pa", -"ing.pa", -"abo.pa", -"med.pa", -"nom.pa", -"pe", -"edu.pe", -"gob.pe", -"nom.pe", -"mil.pe", -"org.pe", -"com.pe", -"net.pe", -"pf", -"com.pf", -"org.pf", -"edu.pf", -"*.pg", -"ph", -"com.ph", -"net.ph", -"org.ph", -"gov.ph", -"edu.ph", -"ngo.ph", -"mil.ph", -"i.ph", -"pk", -"com.pk", -"net.pk", -"edu.pk", -"org.pk", -"fam.pk", -"biz.pk", -"web.pk", -"gov.pk", -"gob.pk", -"gok.pk", -"gon.pk", -"gop.pk", -"gos.pk", -"info.pk", -"pl", -"com.pl", -"net.pl", -"org.pl", -"aid.pl", -"agro.pl", -"atm.pl", -"auto.pl", -"biz.pl", -"edu.pl", -"gmina.pl", -"gsm.pl", -"info.pl", -"mail.pl", -"miasta.pl", -"media.pl", -"mil.pl", -"nieruchomosci.pl", -"nom.pl", -"pc.pl", -"powiat.pl", -"priv.pl", -"realestate.pl", -"rel.pl", -"sex.pl", -"shop.pl", -"sklep.pl", -"sos.pl", -"szkola.pl", -"targi.pl", -"tm.pl", -"tourism.pl", -"travel.pl", -"turystyka.pl", -"gov.pl", -"ap.gov.pl", -"ic.gov.pl", -"is.gov.pl", -"us.gov.pl", -"kmpsp.gov.pl", -"kppsp.gov.pl", -"kwpsp.gov.pl", -"psp.gov.pl", -"wskr.gov.pl", -"kwp.gov.pl", -"mw.gov.pl", -"ug.gov.pl", -"um.gov.pl", -"umig.gov.pl", -"ugim.gov.pl", -"upow.gov.pl", -"uw.gov.pl", -"starostwo.gov.pl", -"pa.gov.pl", -"po.gov.pl", -"psse.gov.pl", -"pup.gov.pl", -"rzgw.gov.pl", -"sa.gov.pl", -"so.gov.pl", -"sr.gov.pl", -"wsa.gov.pl", -"sko.gov.pl", -"uzs.gov.pl", -"wiih.gov.pl", -"winb.gov.pl", -"pinb.gov.pl", -"wios.gov.pl", -"witd.gov.pl", -"wzmiuw.gov.pl", -"piw.gov.pl", -"wiw.gov.pl", -"griw.gov.pl", -"wif.gov.pl", -"oum.gov.pl", -"sdn.gov.pl", -"zp.gov.pl", -"uppo.gov.pl", -"mup.gov.pl", -"wuoz.gov.pl", -"konsulat.gov.pl", -"oirm.gov.pl", -"augustow.pl", -"babia-gora.pl", -"bedzin.pl", -"beskidy.pl", -"bialowieza.pl", -"bialystok.pl", -"bielawa.pl", -"bieszczady.pl", -"boleslawiec.pl", -"bydgoszcz.pl", -"bytom.pl", -"cieszyn.pl", -"czeladz.pl", -"czest.pl", -"dlugoleka.pl", -"elblag.pl", -"elk.pl", -"glogow.pl", -"gniezno.pl", -"gorlice.pl", -"grajewo.pl", -"ilawa.pl", -"jaworzno.pl", -"jelenia-gora.pl", -"jgora.pl", -"kalisz.pl", -"kazimierz-dolny.pl", -"karpacz.pl", -"kartuzy.pl", -"kaszuby.pl", -"katowice.pl", -"kepno.pl", -"ketrzyn.pl", -"klodzko.pl", -"kobierzyce.pl", -"kolobrzeg.pl", -"konin.pl", -"konskowola.pl", -"kutno.pl", -"lapy.pl", -"lebork.pl", -"legnica.pl", -"lezajsk.pl", -"limanowa.pl", -"lomza.pl", -"lowicz.pl", -"lubin.pl", -"lukow.pl", -"malbork.pl", -"malopolska.pl", -"mazowsze.pl", -"mazury.pl", -"mielec.pl", -"mielno.pl", -"mragowo.pl", -"naklo.pl", -"nowaruda.pl", -"nysa.pl", -"olawa.pl", -"olecko.pl", -"olkusz.pl", -"olsztyn.pl", -"opoczno.pl", -"opole.pl", -"ostroda.pl", -"ostroleka.pl", -"ostrowiec.pl", -"ostrowwlkp.pl", -"pila.pl", -"pisz.pl", -"podhale.pl", -"podlasie.pl", -"polkowice.pl", -"pomorze.pl", -"pomorskie.pl", -"prochowice.pl", -"pruszkow.pl", -"przeworsk.pl", -"pulawy.pl", -"radom.pl", -"rawa-maz.pl", -"rybnik.pl", -"rzeszow.pl", -"sanok.pl", -"sejny.pl", -"slask.pl", -"slupsk.pl", -"sosnowiec.pl", -"stalowa-wola.pl", -"skoczow.pl", -"starachowice.pl", -"stargard.pl", -"suwalki.pl", -"swidnica.pl", -"swiebodzin.pl", -"swinoujscie.pl", -"szczecin.pl", -"szczytno.pl", -"tarnobrzeg.pl", -"tgory.pl", -"turek.pl", -"tychy.pl", -"ustka.pl", -"walbrzych.pl", -"warmia.pl", -"warszawa.pl", -"waw.pl", -"wegrow.pl", -"wielun.pl", -"wlocl.pl", -"wloclawek.pl", -"wodzislaw.pl", -"wolomin.pl", -"wroclaw.pl", -"zachpomor.pl", -"zagan.pl", -"zarow.pl", -"zgora.pl", -"zgorzelec.pl", -"pm", -"pn", -"gov.pn", -"co.pn", -"org.pn", -"edu.pn", -"net.pn", -"post", -"pr", -"com.pr", -"net.pr", -"org.pr", -"gov.pr", -"edu.pr", -"isla.pr", -"pro.pr", -"biz.pr", -"info.pr", -"name.pr", -"est.pr", -"prof.pr", -"ac.pr", -"pro", -"aaa.pro", -"aca.pro", -"acct.pro", -"avocat.pro", -"bar.pro", -"cpa.pro", -"eng.pro", -"jur.pro", -"law.pro", -"med.pro", -"recht.pro", -"ps", -"edu.ps", -"gov.ps", -"sec.ps", -"plo.ps", -"com.ps", -"org.ps", -"net.ps", -"pt", -"net.pt", -"gov.pt", -"org.pt", -"edu.pt", -"int.pt", -"publ.pt", -"com.pt", -"nome.pt", -"pw", -"co.pw", -"ne.pw", -"or.pw", -"ed.pw", -"go.pw", -"belau.pw", -"py", -"com.py", -"coop.py", -"edu.py", -"gov.py", -"mil.py", -"net.py", -"org.py", -"qa", -"com.qa", -"edu.qa", -"gov.qa", -"mil.qa", -"name.qa", -"net.qa", -"org.qa", -"sch.qa", -"re", -"asso.re", -"com.re", -"nom.re", -"ro", -"arts.ro", -"com.ro", -"firm.ro", -"info.ro", -"nom.ro", -"nt.ro", -"org.ro", -"rec.ro", -"store.ro", -"tm.ro", -"www.ro", -"rs", -"ac.rs", -"co.rs", -"edu.rs", -"gov.rs", -"in.rs", -"org.rs", -"ru", -"rw", -"ac.rw", -"co.rw", -"coop.rw", -"gov.rw", -"mil.rw", -"net.rw", -"org.rw", -"sa", -"com.sa", -"net.sa", -"org.sa", -"gov.sa", -"med.sa", -"pub.sa", -"edu.sa", -"sch.sa", -"sb", -"com.sb", -"edu.sb", -"gov.sb", -"net.sb", -"org.sb", -"sc", -"com.sc", -"gov.sc", -"net.sc", -"org.sc", -"edu.sc", -"sd", -"com.sd", -"net.sd", -"org.sd", -"edu.sd", -"med.sd", -"tv.sd", -"gov.sd", -"info.sd", -"se", -"a.se", -"ac.se", -"b.se", -"bd.se", -"brand.se", -"c.se", -"d.se", -"e.se", -"f.se", -"fh.se", -"fhsk.se", -"fhv.se", -"g.se", -"h.se", -"i.se", -"k.se", -"komforb.se", -"kommunalforbund.se", -"komvux.se", -"l.se", -"lanbib.se", -"m.se", -"n.se", -"naturbruksgymn.se", -"o.se", -"org.se", -"p.se", -"parti.se", -"pp.se", -"press.se", -"r.se", -"s.se", -"t.se", -"tm.se", -"u.se", -"w.se", -"x.se", -"y.se", -"z.se", -"sg", -"com.sg", -"net.sg", -"org.sg", -"gov.sg", -"edu.sg", -"per.sg", -"sh", -"com.sh", -"net.sh", -"gov.sh", -"org.sh", -"mil.sh", -"si", -"sj", -"sk", -"sl", -"com.sl", -"net.sl", -"edu.sl", -"gov.sl", -"org.sl", -"sm", -"sn", -"art.sn", -"com.sn", -"edu.sn", -"gouv.sn", -"org.sn", -"perso.sn", -"univ.sn", -"so", -"com.so", -"edu.so", -"gov.so", -"me.so", -"net.so", -"org.so", -"sr", -"ss", -"biz.ss", -"com.ss", -"edu.ss", -"gov.ss", -"net.ss", -"org.ss", -"st", -"co.st", -"com.st", -"consulado.st", -"edu.st", -"embaixada.st", -"gov.st", -"mil.st", -"net.st", -"org.st", -"principe.st", -"saotome.st", -"store.st", -"su", -"sv", -"com.sv", -"edu.sv", -"gob.sv", -"org.sv", -"red.sv", -"sx", -"gov.sx", -"sy", -"edu.sy", -"gov.sy", -"net.sy", -"mil.sy", -"com.sy", -"org.sy", -"sz", -"co.sz", -"ac.sz", -"org.sz", -"tc", -"td", -"tel", -"tf", -"tg", -"th", -"ac.th", -"co.th", -"go.th", -"in.th", -"mi.th", -"net.th", -"or.th", -"tj", -"ac.tj", -"biz.tj", -"co.tj", -"com.tj", -"edu.tj", -"go.tj", -"gov.tj", -"int.tj", -"mil.tj", -"name.tj", -"net.tj", -"nic.tj", -"org.tj", -"test.tj", -"web.tj", -"tk", -"tl", -"gov.tl", -"tm", -"com.tm", -"co.tm", -"org.tm", -"net.tm", -"nom.tm", -"gov.tm", -"mil.tm", -"edu.tm", -"tn", -"com.tn", -"ens.tn", -"fin.tn", -"gov.tn", -"ind.tn", -"intl.tn", -"nat.tn", -"net.tn", -"org.tn", -"info.tn", -"perso.tn", -"tourism.tn", -"edunet.tn", -"rnrt.tn", -"rns.tn", -"rnu.tn", -"mincom.tn", -"agrinet.tn", -"defense.tn", -"turen.tn", -"to", -"com.to", -"gov.to", -"net.to", -"org.to", -"edu.to", -"mil.to", -"tr", -"av.tr", -"bbs.tr", -"bel.tr", -"biz.tr", -"com.tr", -"dr.tr", -"edu.tr", -"gen.tr", -"gov.tr", -"info.tr", -"mil.tr", -"k12.tr", -"kep.tr", -"name.tr", -"net.tr", -"org.tr", -"pol.tr", -"tel.tr", -"tsk.tr", -"tv.tr", -"web.tr", -"nc.tr", -"gov.nc.tr", -"tt", -"co.tt", -"com.tt", -"org.tt", -"net.tt", -"biz.tt", -"info.tt", -"pro.tt", -"int.tt", -"coop.tt", -"jobs.tt", -"mobi.tt", -"travel.tt", -"museum.tt", -"aero.tt", -"name.tt", -"gov.tt", -"edu.tt", -"tv", -"tw", -"edu.tw", -"gov.tw", -"mil.tw", -"com.tw", -"net.tw", -"org.tw", -"idv.tw", -"game.tw", -"ebiz.tw", -"club.tw", -"網路.tw", -"組織.tw", -"商業.tw", -"tz", -"ac.tz", -"co.tz", -"go.tz", -"hotel.tz", -"info.tz", -"me.tz", -"mil.tz", -"mobi.tz", -"ne.tz", -"or.tz", -"sc.tz", -"tv.tz", -"ua", -"com.ua", -"edu.ua", -"gov.ua", -"in.ua", -"net.ua", -"org.ua", -"cherkassy.ua", -"cherkasy.ua", -"chernigov.ua", -"chernihiv.ua", -"chernivtsi.ua", -"chernovtsy.ua", -"ck.ua", -"cn.ua", -"cr.ua", -"crimea.ua", -"cv.ua", -"dn.ua", -"dnepropetrovsk.ua", -"dnipropetrovsk.ua", -"dominic.ua", -"donetsk.ua", -"dp.ua", -"if.ua", -"ivano-frankivsk.ua", -"kh.ua", -"kharkiv.ua", -"kharkov.ua", -"kherson.ua", -"khmelnitskiy.ua", -"khmelnytskyi.ua", -"kiev.ua", -"kirovograd.ua", -"km.ua", -"kr.ua", -"krym.ua", -"ks.ua", -"kv.ua", -"kyiv.ua", -"lg.ua", -"lt.ua", -"lugansk.ua", -"lutsk.ua", -"lv.ua", -"lviv.ua", -"mk.ua", -"mykolaiv.ua", -"nikolaev.ua", -"od.ua", -"odesa.ua", -"odessa.ua", -"pl.ua", -"poltava.ua", -"rivne.ua", -"rovno.ua", -"rv.ua", -"sb.ua", -"sebastopol.ua", -"sevastopol.ua", -"sm.ua", -"sumy.ua", -"te.ua", -"ternopil.ua", -"uz.ua", -"uzhgorod.ua", -"vinnica.ua", -"vinnytsia.ua", -"vn.ua", -"volyn.ua", -"yalta.ua", -"zaporizhzhe.ua", -"zaporizhzhia.ua", -"zhitomir.ua", -"zhytomyr.ua", -"zp.ua", -"zt.ua", -"ug", -"co.ug", -"or.ug", -"ac.ug", -"sc.ug", -"go.ug", -"ne.ug", -"com.ug", -"org.ug", -"uk", -"ac.uk", -"co.uk", -"gov.uk", -"ltd.uk", -"me.uk", -"net.uk", -"nhs.uk", -"org.uk", -"plc.uk", -"police.uk", -"*.sch.uk", -"us", -"dni.us", -"fed.us", -"isa.us", -"kids.us", -"nsn.us", -"ak.us", -"al.us", -"ar.us", -"as.us", -"az.us", -"ca.us", -"co.us", -"ct.us", -"dc.us", -"de.us", -"fl.us", -"ga.us", -"gu.us", -"hi.us", -"ia.us", -"id.us", -"il.us", -"in.us", -"ks.us", -"ky.us", -"la.us", -"ma.us", -"md.us", -"me.us", -"mi.us", -"mn.us", -"mo.us", -"ms.us", -"mt.us", -"nc.us", -"nd.us", -"ne.us", -"nh.us", -"nj.us", -"nm.us", -"nv.us", -"ny.us", -"oh.us", -"ok.us", -"or.us", -"pa.us", -"pr.us", -"ri.us", -"sc.us", -"sd.us", -"tn.us", -"tx.us", -"ut.us", -"vi.us", -"vt.us", -"va.us", -"wa.us", -"wi.us", -"wv.us", -"wy.us", -"k12.ak.us", -"k12.al.us", -"k12.ar.us", -"k12.as.us", -"k12.az.us", -"k12.ca.us", -"k12.co.us", -"k12.ct.us", -"k12.dc.us", -"k12.de.us", -"k12.fl.us", -"k12.ga.us", -"k12.gu.us", -"k12.ia.us", -"k12.id.us", -"k12.il.us", -"k12.in.us", -"k12.ks.us", -"k12.ky.us", -"k12.la.us", -"k12.ma.us", -"k12.md.us", -"k12.me.us", -"k12.mi.us", -"k12.mn.us", -"k12.mo.us", -"k12.ms.us", -"k12.mt.us", -"k12.nc.us", -"k12.ne.us", -"k12.nh.us", -"k12.nj.us", -"k12.nm.us", -"k12.nv.us", -"k12.ny.us", -"k12.oh.us", -"k12.ok.us", -"k12.or.us", -"k12.pa.us", -"k12.pr.us", -"k12.ri.us", -"k12.sc.us", -"k12.tn.us", -"k12.tx.us", -"k12.ut.us", -"k12.vi.us", -"k12.vt.us", -"k12.va.us", -"k12.wa.us", -"k12.wi.us", -"k12.wy.us", -"cc.ak.us", -"cc.al.us", -"cc.ar.us", -"cc.as.us", -"cc.az.us", -"cc.ca.us", -"cc.co.us", -"cc.ct.us", -"cc.dc.us", -"cc.de.us", -"cc.fl.us", -"cc.ga.us", -"cc.gu.us", -"cc.hi.us", -"cc.ia.us", -"cc.id.us", -"cc.il.us", -"cc.in.us", -"cc.ks.us", -"cc.ky.us", -"cc.la.us", -"cc.ma.us", -"cc.md.us", -"cc.me.us", -"cc.mi.us", -"cc.mn.us", -"cc.mo.us", -"cc.ms.us", -"cc.mt.us", -"cc.nc.us", -"cc.nd.us", -"cc.ne.us", -"cc.nh.us", -"cc.nj.us", -"cc.nm.us", -"cc.nv.us", -"cc.ny.us", -"cc.oh.us", -"cc.ok.us", -"cc.or.us", -"cc.pa.us", -"cc.pr.us", -"cc.ri.us", -"cc.sc.us", -"cc.sd.us", -"cc.tn.us", -"cc.tx.us", -"cc.ut.us", -"cc.vi.us", -"cc.vt.us", -"cc.va.us", -"cc.wa.us", -"cc.wi.us", -"cc.wv.us", -"cc.wy.us", -"lib.ak.us", -"lib.al.us", -"lib.ar.us", -"lib.as.us", -"lib.az.us", -"lib.ca.us", -"lib.co.us", -"lib.ct.us", -"lib.dc.us", -"lib.fl.us", -"lib.ga.us", -"lib.gu.us", -"lib.hi.us", -"lib.ia.us", -"lib.id.us", -"lib.il.us", -"lib.in.us", -"lib.ks.us", -"lib.ky.us", -"lib.la.us", -"lib.ma.us", -"lib.md.us", -"lib.me.us", -"lib.mi.us", -"lib.mn.us", -"lib.mo.us", -"lib.ms.us", -"lib.mt.us", -"lib.nc.us", -"lib.nd.us", -"lib.ne.us", -"lib.nh.us", -"lib.nj.us", -"lib.nm.us", -"lib.nv.us", -"lib.ny.us", -"lib.oh.us", -"lib.ok.us", -"lib.or.us", -"lib.pa.us", -"lib.pr.us", -"lib.ri.us", -"lib.sc.us", -"lib.sd.us", -"lib.tn.us", -"lib.tx.us", -"lib.ut.us", -"lib.vi.us", -"lib.vt.us", -"lib.va.us", -"lib.wa.us", -"lib.wi.us", -"lib.wy.us", -"pvt.k12.ma.us", -"chtr.k12.ma.us", -"paroch.k12.ma.us", -"ann-arbor.mi.us", -"cog.mi.us", -"dst.mi.us", -"eaton.mi.us", -"gen.mi.us", -"mus.mi.us", -"tec.mi.us", -"washtenaw.mi.us", -"uy", -"com.uy", -"edu.uy", -"gub.uy", -"mil.uy", -"net.uy", -"org.uy", -"uz", -"co.uz", -"com.uz", -"net.uz", -"org.uz", -"va", -"vc", -"com.vc", -"net.vc", -"org.vc", -"gov.vc", -"mil.vc", -"edu.vc", -"ve", -"arts.ve", -"co.ve", -"com.ve", -"e12.ve", -"edu.ve", -"firm.ve", -"gob.ve", -"gov.ve", -"info.ve", -"int.ve", -"mil.ve", -"net.ve", -"org.ve", -"rec.ve", -"store.ve", -"tec.ve", -"web.ve", -"vg", -"vi", -"co.vi", -"com.vi", -"k12.vi", -"net.vi", -"org.vi", -"vn", -"com.vn", -"net.vn", -"org.vn", -"edu.vn", -"gov.vn", -"int.vn", -"ac.vn", -"biz.vn", -"info.vn", -"name.vn", -"pro.vn", -"health.vn", -"vu", -"com.vu", -"edu.vu", -"net.vu", -"org.vu", -"wf", -"ws", -"com.ws", -"net.ws", -"org.ws", -"gov.ws", -"edu.ws", -"yt", -"امارات", -"հայ", -"বাংলা", -"бг", -"бел", -"中国", -"中國", -"الجزائر", -"مصر", -"ею", -"ευ", -"موريتانيا", -"გე", -"ελ", -"香港", -"公司.香港", -"教育.香港", -"政府.香港", -"個人.香港", -"網絡.香港", -"組織.香港", -"ಭಾರತ", -"ଭାରତ", -"ভাৰত", -"भारतम्", -"भारोत", -"ڀارت", -"ഭാരതം", -"भारत", -"بارت", -"بھارت", -"భారత్", -"ભારત", -"ਭਾਰਤ", -"ভারত", -"இந்தியா", -"ایران", -"ايران", -"عراق", -"الاردن", -"한국", -"қаз", -"ලංකා", -"இலங்கை", -"المغرب", -"мкд", -"мон", -"澳門", -"澳门", -"مليسيا", -"عمان", -"پاکستان", -"پاكستان", -"فلسطين", -"срб", -"пр.срб", -"орг.срб", -"обр.срб", -"од.срб", -"упр.срб", -"ак.срб", -"рф", -"قطر", -"السعودية", -"السعودیة", -"السعودیۃ", -"السعوديه", -"سودان", -"新加坡", -"சிங்கப்பூர்", -"سورية", -"سوريا", -"ไทย", -"ศึกษา.ไทย", -"ธุรกิจ.ไทย", -"รัฐบาล.ไทย", -"ทหาร.ไทย", -"เน็ต.ไทย", -"องค์กร.ไทย", -"تونس", -"台灣", -"台湾", -"臺灣", -"укр", -"اليمن", -"xxx", -"*.ye", -"ac.za", -"agric.za", -"alt.za", -"co.za", -"edu.za", -"gov.za", -"grondar.za", -"law.za", -"mil.za", -"net.za", -"ngo.za", -"nic.za", -"nis.za", -"nom.za", -"org.za", -"school.za", -"tm.za", -"web.za", -"zm", -"ac.zm", -"biz.zm", -"co.zm", -"com.zm", -"edu.zm", -"gov.zm", -"info.zm", -"mil.zm", -"net.zm", -"org.zm", -"sch.zm", -"zw", -"ac.zw", -"co.zw", -"gov.zw", -"mil.zw", -"org.zw", -"aaa", -"aarp", -"abarth", -"abb", -"abbott", -"abbvie", -"abc", -"able", -"abogado", -"abudhabi", -"academy", -"accenture", -"accountant", -"accountants", -"aco", -"actor", -"adac", -"ads", -"adult", -"aeg", -"aetna", -"afamilycompany", -"afl", -"africa", -"agakhan", -"agency", -"aig", -"aigo", -"airbus", -"airforce", -"airtel", -"akdn", -"alfaromeo", -"alibaba", -"alipay", -"allfinanz", -"allstate", -"ally", -"alsace", -"alstom", -"amazon", -"americanexpress", -"americanfamily", -"amex", -"amfam", -"amica", -"amsterdam", -"analytics", -"android", -"anquan", -"anz", -"aol", -"apartments", -"app", -"apple", -"aquarelle", -"arab", -"aramco", -"archi", -"army", -"art", -"arte", -"asda", -"associates", -"athleta", -"attorney", -"auction", -"audi", -"audible", -"audio", -"auspost", -"author", -"auto", -"autos", -"avianca", -"aws", -"axa", -"azure", -"baby", -"baidu", -"banamex", -"bananarepublic", -"band", -"bank", -"bar", -"barcelona", -"barclaycard", -"barclays", -"barefoot", -"bargains", -"baseball", -"basketball", -"bauhaus", -"bayern", -"bbc", -"bbt", -"bbva", -"bcg", -"bcn", -"beats", -"beauty", -"beer", -"bentley", -"berlin", -"best", -"bestbuy", -"bet", -"bharti", -"bible", -"bid", -"bike", -"bing", -"bingo", -"bio", -"black", -"blackfriday", -"blockbuster", -"blog", -"bloomberg", -"blue", -"bms", -"bmw", -"bnpparibas", -"boats", -"boehringer", -"bofa", -"bom", -"bond", -"boo", -"book", -"booking", -"bosch", -"bostik", -"boston", -"bot", -"boutique", -"box", -"bradesco", -"bridgestone", -"broadway", -"broker", -"brother", -"brussels", -"budapest", -"bugatti", -"build", -"builders", -"business", -"buy", -"buzz", -"bzh", -"cab", -"cafe", -"cal", -"call", -"calvinklein", -"cam", -"camera", -"camp", -"cancerresearch", -"canon", -"capetown", -"capital", -"capitalone", -"car", -"caravan", -"cards", -"care", -"career", -"careers", -"cars", -"casa", -"case", -"caseih", -"cash", -"casino", -"catering", -"catholic", -"cba", -"cbn", -"cbre", -"cbs", -"ceb", -"center", -"ceo", -"cern", -"cfa", -"cfd", -"chanel", -"channel", -"charity", -"chase", -"chat", -"cheap", -"chintai", -"christmas", -"chrome", -"church", -"cipriani", -"circle", -"cisco", -"citadel", -"citi", -"citic", -"city", -"cityeats", -"claims", -"cleaning", -"click", -"clinic", -"clinique", -"clothing", -"cloud", -"club", -"clubmed", -"coach", -"codes", -"coffee", -"college", -"cologne", -"comcast", -"commbank", -"community", -"company", -"compare", -"computer", -"comsec", -"condos", -"construction", -"consulting", -"contact", -"contractors", -"cooking", -"cookingchannel", -"cool", -"corsica", -"country", -"coupon", -"coupons", -"courses", -"cpa", -"credit", -"creditcard", -"creditunion", -"cricket", -"crown", -"crs", -"cruise", -"cruises", -"csc", -"cuisinella", -"cymru", -"cyou", -"dabur", -"dad", -"dance", -"data", -"date", -"dating", -"datsun", -"day", -"dclk", -"dds", -"deal", -"dealer", -"deals", -"degree", -"delivery", -"dell", -"deloitte", -"delta", -"democrat", -"dental", -"dentist", -"desi", -"design", -"dev", -"dhl", -"diamonds", -"diet", -"digital", -"direct", -"directory", -"discount", -"discover", -"dish", -"diy", -"dnp", -"docs", -"doctor", -"dog", -"domains", -"dot", -"download", -"drive", -"dtv", -"dubai", -"duck", -"dunlop", -"dupont", -"durban", -"dvag", -"dvr", -"earth", -"eat", -"eco", -"edeka", -"education", -"email", -"emerck", -"energy", -"engineer", -"engineering", -"enterprises", -"epson", -"equipment", -"ericsson", -"erni", -"esq", -"estate", -"esurance", -"etisalat", -"eurovision", -"eus", -"events", -"exchange", -"expert", -"exposed", -"express", -"extraspace", -"fage", -"fail", -"fairwinds", -"faith", -"family", -"fan", -"fans", -"farm", -"farmers", -"fashion", -"fast", -"fedex", -"feedback", -"ferrari", -"ferrero", -"fiat", -"fidelity", -"fido", -"film", -"final", -"finance", -"financial", -"fire", -"firestone", -"firmdale", -"fish", -"fishing", -"fit", -"fitness", -"flickr", -"flights", -"flir", -"florist", -"flowers", -"fly", -"foo", -"food", -"foodnetwork", -"football", -"ford", -"forex", -"forsale", -"forum", -"foundation", -"fox", -"free", -"fresenius", -"frl", -"frogans", -"frontdoor", -"frontier", -"ftr", -"fujitsu", -"fujixerox", -"fun", -"fund", -"furniture", -"futbol", -"fyi", -"gal", -"gallery", -"gallo", -"gallup", -"game", -"games", -"gap", -"garden", -"gay", -"gbiz", -"gdn", -"gea", -"gent", -"genting", -"george", -"ggee", -"gift", -"gifts", -"gives", -"giving", -"glade", -"glass", -"gle", -"global", -"globo", -"gmail", -"gmbh", -"gmo", -"gmx", -"godaddy", -"gold", -"goldpoint", -"golf", -"goo", -"goodyear", -"goog", -"google", -"gop", -"got", -"grainger", -"graphics", -"gratis", -"green", -"gripe", -"grocery", -"group", -"guardian", -"gucci", -"guge", -"guide", -"guitars", -"guru", -"hair", -"hamburg", -"hangout", -"haus", -"hbo", -"hdfc", -"hdfcbank", -"health", -"healthcare", -"help", -"helsinki", -"here", -"hermes", -"hgtv", -"hiphop", -"hisamitsu", -"hitachi", -"hiv", -"hkt", -"hockey", -"holdings", -"holiday", -"homedepot", -"homegoods", -"homes", -"homesense", -"honda", -"horse", -"hospital", -"host", -"hosting", -"hot", -"hoteles", -"hotels", -"hotmail", -"house", -"how", -"hsbc", -"hughes", -"hyatt", -"hyundai", -"ibm", -"icbc", -"ice", -"icu", -"ieee", -"ifm", -"ikano", -"imamat", -"imdb", -"immo", -"immobilien", -"inc", -"industries", -"infiniti", -"ing", -"ink", -"institute", -"insurance", -"insure", -"intel", -"international", -"intuit", -"investments", -"ipiranga", -"irish", -"ismaili", -"ist", -"istanbul", -"itau", -"itv", -"iveco", -"jaguar", -"java", -"jcb", -"jcp", -"jeep", -"jetzt", -"jewelry", -"jio", -"jll", -"jmp", -"jnj", -"joburg", -"jot", -"joy", -"jpmorgan", -"jprs", -"juegos", -"juniper", -"kaufen", -"kddi", -"kerryhotels", -"kerrylogistics", -"kerryproperties", -"kfh", -"kia", -"kim", -"kinder", -"kindle", -"kitchen", -"kiwi", -"koeln", -"komatsu", -"kosher", -"kpmg", -"kpn", -"krd", -"kred", -"kuokgroup", -"kyoto", -"lacaixa", -"lamborghini", -"lamer", -"lancaster", -"lancia", -"land", -"landrover", -"lanxess", -"lasalle", -"lat", -"latino", -"latrobe", -"law", -"lawyer", -"lds", -"lease", -"leclerc", -"lefrak", -"legal", -"lego", -"lexus", -"lgbt", -"lidl", -"life", -"lifeinsurance", -"lifestyle", -"lighting", -"like", -"lilly", -"limited", -"limo", -"lincoln", -"linde", -"link", -"lipsy", -"live", -"living", -"lixil", -"llc", -"llp", -"loan", -"loans", -"locker", -"locus", -"loft", -"lol", -"london", -"lotte", -"lotto", -"love", -"lpl", -"lplfinancial", -"ltd", -"ltda", -"lundbeck", -"lupin", -"luxe", -"luxury", -"macys", -"madrid", -"maif", -"maison", -"makeup", -"man", -"management", -"mango", -"map", -"market", -"marketing", -"markets", -"marriott", -"marshalls", -"maserati", -"mattel", -"mba", -"mckinsey", -"med", -"media", -"meet", -"melbourne", -"meme", -"memorial", -"men", -"menu", -"merckmsd", -"metlife", -"miami", -"microsoft", -"mini", -"mint", -"mit", -"mitsubishi", -"mlb", -"mls", -"mma", -"mobile", -"moda", -"moe", -"moi", -"mom", -"monash", -"money", -"monster", -"mormon", -"mortgage", -"moscow", -"moto", -"motorcycles", -"mov", -"movie", -"msd", -"mtn", -"mtr", -"mutual", -"nab", -"nadex", -"nagoya", -"nationwide", -"natura", -"navy", -"nba", -"nec", -"netbank", -"netflix", -"network", -"neustar", -"new", -"newholland", -"news", -"next", -"nextdirect", -"nexus", -"nfl", -"ngo", -"nhk", -"nico", -"nike", -"nikon", -"ninja", -"nissan", -"nissay", -"nokia", -"northwesternmutual", -"norton", -"now", -"nowruz", -"nowtv", -"nra", -"nrw", -"ntt", -"nyc", -"obi", -"observer", -"off", -"office", -"okinawa", -"olayan", -"olayangroup", -"oldnavy", -"ollo", -"omega", -"one", -"ong", -"onl", -"online", -"onyourside", -"ooo", -"open", -"oracle", -"orange", -"organic", -"origins", -"osaka", -"otsuka", -"ott", -"ovh", -"page", -"panasonic", -"paris", -"pars", -"partners", -"parts", -"party", -"passagens", -"pay", -"pccw", -"pet", -"pfizer", -"pharmacy", -"phd", -"philips", -"phone", -"photo", -"photography", -"photos", -"physio", -"pics", -"pictet", -"pictures", -"pid", -"pin", -"ping", -"pink", -"pioneer", -"pizza", -"place", -"play", -"playstation", -"plumbing", -"plus", -"pnc", -"pohl", -"poker", -"politie", -"porn", -"pramerica", -"praxi", -"press", -"prime", -"prod", -"productions", -"prof", -"progressive", -"promo", -"properties", -"property", -"protection", -"pru", -"prudential", -"pub", -"pwc", -"qpon", -"quebec", -"quest", -"qvc", -"racing", -"radio", -"raid", -"read", -"realestate", -"realtor", -"realty", -"recipes", -"red", -"redstone", -"redumbrella", -"rehab", -"reise", -"reisen", -"reit", -"reliance", -"ren", -"rent", -"rentals", -"repair", -"report", -"republican", -"rest", -"restaurant", -"review", -"reviews", -"rexroth", -"rich", -"richardli", -"ricoh", -"rightathome", -"ril", -"rio", -"rip", -"rmit", -"rocher", -"rocks", -"rodeo", -"rogers", -"room", -"rsvp", -"rugby", -"ruhr", -"run", -"rwe", -"ryukyu", -"saarland", -"safe", -"safety", -"sakura", -"sale", -"salon", -"samsclub", -"samsung", -"sandvik", -"sandvikcoromant", -"sanofi", -"sap", -"sarl", -"sas", -"save", -"saxo", -"sbi", -"sbs", -"sca", -"scb", -"schaeffler", -"schmidt", -"scholarships", -"school", -"schule", -"schwarz", -"science", -"scjohnson", -"scor", -"scot", -"search", -"seat", -"secure", -"security", -"seek", -"select", -"sener", -"services", -"ses", -"seven", -"sew", -"sex", -"sexy", -"sfr", -"shangrila", -"sharp", -"shaw", -"shell", -"shia", -"shiksha", -"shoes", -"shop", -"shopping", -"shouji", -"show", -"showtime", -"shriram", -"silk", -"sina", -"singles", -"site", -"ski", -"skin", -"sky", -"skype", -"sling", -"smart", -"smile", -"sncf", -"soccer", -"social", -"softbank", -"software", -"sohu", -"solar", -"solutions", -"song", -"sony", -"soy", -"spa", -"space", -"sport", -"spot", -"spreadbetting", -"srl", -"stada", -"staples", -"star", -"statebank", -"statefarm", -"stc", -"stcgroup", -"stockholm", -"storage", -"store", -"stream", -"studio", -"study", -"style", -"sucks", -"supplies", -"supply", -"support", -"surf", -"surgery", -"suzuki", -"swatch", -"swiftcover", -"swiss", -"sydney", -"symantec", -"systems", -"tab", -"taipei", -"talk", -"taobao", -"target", -"tatamotors", -"tatar", -"tattoo", -"tax", -"taxi", -"tci", -"tdk", -"team", -"tech", -"technology", -"temasek", -"tennis", -"teva", -"thd", -"theater", -"theatre", -"tiaa", -"tickets", -"tienda", -"tiffany", -"tips", -"tires", -"tirol", -"tjmaxx", -"tjx", -"tkmaxx", -"tmall", -"today", -"tokyo", -"tools", -"top", -"toray", -"toshiba", -"total", -"tours", -"town", -"toyota", -"toys", -"trade", -"trading", -"training", -"travel", -"travelchannel", -"travelers", -"travelersinsurance", -"trust", -"trv", -"tube", -"tui", -"tunes", -"tushu", -"tvs", -"ubank", -"ubs", -"unicom", -"university", -"uno", -"uol", -"ups", -"vacations", -"vana", -"vanguard", -"vegas", -"ventures", -"verisign", -"versicherung", -"vet", -"viajes", -"video", -"vig", -"viking", -"villas", -"vin", -"vip", -"virgin", -"visa", -"vision", -"viva", -"vivo", -"vlaanderen", -"vodka", -"volkswagen", -"volvo", -"vote", -"voting", -"voto", -"voyage", -"vuelos", -"wales", -"walmart", -"walter", -"wang", -"wanggou", -"watch", -"watches", -"weather", -"weatherchannel", -"webcam", -"weber", -"website", -"wed", -"wedding", -"weibo", -"weir", -"whoswho", -"wien", -"wiki", -"williamhill", -"win", -"windows", -"wine", -"winners", -"wme", -"wolterskluwer", -"woodside", -"work", -"works", -"world", -"wow", -"wtc", -"wtf", -"xbox", -"xerox", -"xfinity", -"xihuan", -"xin", -"कॉम", -"セール", -"佛山", -"慈善", -"集团", -"在线", -"大众汽车", -"点看", -"คอม", -"八卦", -"موقع", -"公益", -"公司", -"香格里拉", -"网站", -"移动", -"我爱你", -"москва", -"католик", -"онлайн", -"сайт", -"联通", -"קום", -"时尚", -"微博", -"淡马锡", -"ファッション", -"орг", -"नेट", -"ストア", -"アマゾン", -"삼성", -"商标", -"商店", -"商城", -"дети", -"ポイント", -"新闻", -"工行", -"家電", -"كوم", -"中文网", -"中信", -"娱乐", -"谷歌", -"電訊盈科", -"购物", -"クラウド", -"通販", -"网店", -"संगठन", -"餐厅", -"网络", -"ком", -"亚马逊", -"诺基亚", -"食品", -"飞利浦", -"手表", -"手机", -"ارامكو", -"العليان", -"اتصالات", -"بازار", -"ابوظبي", -"كاثوليك", -"همراه", -"닷컴", -"政府", -"شبكة", -"بيتك", -"عرب", -"机构", -"组织机构", -"健康", -"招聘", -"рус", -"珠宝", -"大拿", -"みんな", -"グーグル", -"世界", -"書籍", -"网址", -"닷넷", -"コム", -"天主教", -"游戏", -"vermögensberater", -"vermögensberatung", -"企业", -"信息", -"嘉里大酒店", -"嘉里", -"广东", -"政务", -"xyz", -"yachts", -"yahoo", -"yamaxun", -"yandex", -"yodobashi", -"yoga", -"yokohama", -"you", -"youtube", -"yun", -"zappos", -"zara", -"zero", -"zip", -"zone", -"zuerich", -"cc.ua", -"inf.ua", -"ltd.ua", -"adobeaemcloud.com", -"adobeaemcloud.net", -"*.dev.adobeaemcloud.com", -"beep.pl", -"barsy.ca", -"*.compute.estate", -"*.alces.network", -"altervista.org", -"alwaysdata.net", -"cloudfront.net", -"*.compute.amazonaws.com", -"*.compute-1.amazonaws.com", -"*.compute.amazonaws.com.cn", -"us-east-1.amazonaws.com", -"cn-north-1.eb.amazonaws.com.cn", -"cn-northwest-1.eb.amazonaws.com.cn", -"elasticbeanstalk.com", -"ap-northeast-1.elasticbeanstalk.com", -"ap-northeast-2.elasticbeanstalk.com", -"ap-northeast-3.elasticbeanstalk.com", -"ap-south-1.elasticbeanstalk.com", -"ap-southeast-1.elasticbeanstalk.com", -"ap-southeast-2.elasticbeanstalk.com", -"ca-central-1.elasticbeanstalk.com", -"eu-central-1.elasticbeanstalk.com", -"eu-west-1.elasticbeanstalk.com", -"eu-west-2.elasticbeanstalk.com", -"eu-west-3.elasticbeanstalk.com", -"sa-east-1.elasticbeanstalk.com", -"us-east-1.elasticbeanstalk.com", -"us-east-2.elasticbeanstalk.com", -"us-gov-west-1.elasticbeanstalk.com", -"us-west-1.elasticbeanstalk.com", -"us-west-2.elasticbeanstalk.com", -"*.elb.amazonaws.com", -"*.elb.amazonaws.com.cn", -"s3.amazonaws.com", -"s3-ap-northeast-1.amazonaws.com", -"s3-ap-northeast-2.amazonaws.com", -"s3-ap-south-1.amazonaws.com", -"s3-ap-southeast-1.amazonaws.com", -"s3-ap-southeast-2.amazonaws.com", -"s3-ca-central-1.amazonaws.com", -"s3-eu-central-1.amazonaws.com", -"s3-eu-west-1.amazonaws.com", -"s3-eu-west-2.amazonaws.com", -"s3-eu-west-3.amazonaws.com", -"s3-external-1.amazonaws.com", -"s3-fips-us-gov-west-1.amazonaws.com", -"s3-sa-east-1.amazonaws.com", -"s3-us-gov-west-1.amazonaws.com", -"s3-us-east-2.amazonaws.com", -"s3-us-west-1.amazonaws.com", -"s3-us-west-2.amazonaws.com", -"s3.ap-northeast-2.amazonaws.com", -"s3.ap-south-1.amazonaws.com", -"s3.cn-north-1.amazonaws.com.cn", -"s3.ca-central-1.amazonaws.com", -"s3.eu-central-1.amazonaws.com", -"s3.eu-west-2.amazonaws.com", -"s3.eu-west-3.amazonaws.com", -"s3.us-east-2.amazonaws.com", -"s3.dualstack.ap-northeast-1.amazonaws.com", -"s3.dualstack.ap-northeast-2.amazonaws.com", -"s3.dualstack.ap-south-1.amazonaws.com", -"s3.dualstack.ap-southeast-1.amazonaws.com", -"s3.dualstack.ap-southeast-2.amazonaws.com", -"s3.dualstack.ca-central-1.amazonaws.com", -"s3.dualstack.eu-central-1.amazonaws.com", -"s3.dualstack.eu-west-1.amazonaws.com", -"s3.dualstack.eu-west-2.amazonaws.com", -"s3.dualstack.eu-west-3.amazonaws.com", -"s3.dualstack.sa-east-1.amazonaws.com", -"s3.dualstack.us-east-1.amazonaws.com", -"s3.dualstack.us-east-2.amazonaws.com", -"s3-website-us-east-1.amazonaws.com", -"s3-website-us-west-1.amazonaws.com", -"s3-website-us-west-2.amazonaws.com", -"s3-website-ap-northeast-1.amazonaws.com", -"s3-website-ap-southeast-1.amazonaws.com", -"s3-website-ap-southeast-2.amazonaws.com", -"s3-website-eu-west-1.amazonaws.com", -"s3-website-sa-east-1.amazonaws.com", -"s3-website.ap-northeast-2.amazonaws.com", -"s3-website.ap-south-1.amazonaws.com", -"s3-website.ca-central-1.amazonaws.com", -"s3-website.eu-central-1.amazonaws.com", -"s3-website.eu-west-2.amazonaws.com", -"s3-website.eu-west-3.amazonaws.com", -"s3-website.us-east-2.amazonaws.com", -"amsw.nl", -"t3l3p0rt.net", -"tele.amune.org", -"apigee.io", -"on-aptible.com", -"user.aseinet.ne.jp", -"gv.vc", -"d.gv.vc", -"user.party.eus", -"pimienta.org", -"poivron.org", -"potager.org", -"sweetpepper.org", -"myasustor.com", -"myfritz.net", -"*.awdev.ca", -"*.advisor.ws", -"b-data.io", -"backplaneapp.io", -"balena-devices.com", -"app.banzaicloud.io", -"betainabox.com", -"bnr.la", -"blackbaudcdn.net", -"boomla.net", -"boxfuse.io", -"square7.ch", -"bplaced.com", -"bplaced.de", -"square7.de", -"bplaced.net", -"square7.net", -"browsersafetymark.io", -"uk0.bigv.io", -"dh.bytemark.co.uk", -"vm.bytemark.co.uk", -"mycd.eu", -"carrd.co", -"crd.co", -"uwu.ai", -"ae.org", -"ar.com", -"br.com", -"cn.com", -"com.de", -"com.se", -"de.com", -"eu.com", -"gb.com", -"gb.net", -"hu.com", -"hu.net", -"jp.net", -"jpn.com", -"kr.com", -"mex.com", -"no.com", -"qc.com", -"ru.com", -"sa.com", -"se.net", -"uk.com", -"uk.net", -"us.com", -"uy.com", -"za.bz", -"za.com", -"africa.com", -"gr.com", -"in.net", -"us.org", -"co.com", -"c.la", -"certmgr.org", -"xenapponazure.com", -"discourse.group", -"discourse.team", -"virtueeldomein.nl", -"cleverapps.io", -"*.lcl.dev", -"*.stg.dev", -"c66.me", -"cloud66.ws", -"cloud66.zone", -"jdevcloud.com", -"wpdevcloud.com", -"cloudaccess.host", -"freesite.host", -"cloudaccess.net", -"cloudcontrolled.com", -"cloudcontrolapp.com", -"cloudera.site", -"trycloudflare.com", -"workers.dev", -"wnext.app", -"co.ca", -"*.otap.co", -"co.cz", -"c.cdn77.org", -"cdn77-ssl.net", -"r.cdn77.net", -"rsc.cdn77.org", -"ssl.origin.cdn77-secure.org", -"cloudns.asia", -"cloudns.biz", -"cloudns.club", -"cloudns.cc", -"cloudns.eu", -"cloudns.in", -"cloudns.info", -"cloudns.org", -"cloudns.pro", -"cloudns.pw", -"cloudns.us", -"cloudeity.net", -"cnpy.gdn", -"co.nl", -"co.no", -"webhosting.be", -"hosting-cluster.nl", -"ac.ru", -"edu.ru", -"gov.ru", -"int.ru", -"mil.ru", -"test.ru", -"dyn.cosidns.de", -"dynamisches-dns.de", -"dnsupdater.de", -"internet-dns.de", -"l-o-g-i-n.de", -"dynamic-dns.info", -"feste-ip.net", -"knx-server.net", -"static-access.net", -"realm.cz", -"*.cryptonomic.net", -"cupcake.is", -"*.customer-oci.com", -"*.oci.customer-oci.com", -"*.ocp.customer-oci.com", -"*.ocs.customer-oci.com", -"cyon.link", -"cyon.site", -"daplie.me", -"localhost.daplie.me", -"dattolocal.com", -"dattorelay.com", -"dattoweb.com", -"mydatto.com", -"dattolocal.net", -"mydatto.net", -"biz.dk", -"co.dk", -"firm.dk", -"reg.dk", -"store.dk", -"*.dapps.earth", -"*.bzz.dapps.earth", -"builtwithdark.com", -"edgestack.me", -"debian.net", -"dedyn.io", -"dnshome.de", -"online.th", -"shop.th", -"drayddns.com", -"dreamhosters.com", -"mydrobo.com", -"drud.io", -"drud.us", -"duckdns.org", -"dy.fi", -"tunk.org", -"dyndns-at-home.com", -"dyndns-at-work.com", -"dyndns-blog.com", -"dyndns-free.com", -"dyndns-home.com", -"dyndns-ip.com", -"dyndns-mail.com", -"dyndns-office.com", -"dyndns-pics.com", -"dyndns-remote.com", -"dyndns-server.com", -"dyndns-web.com", -"dyndns-wiki.com", -"dyndns-work.com", -"dyndns.biz", -"dyndns.info", -"dyndns.org", -"dyndns.tv", -"at-band-camp.net", -"ath.cx", -"barrel-of-knowledge.info", -"barrell-of-knowledge.info", -"better-than.tv", -"blogdns.com", -"blogdns.net", -"blogdns.org", -"blogsite.org", -"boldlygoingnowhere.org", -"broke-it.net", -"buyshouses.net", -"cechire.com", -"dnsalias.com", -"dnsalias.net", -"dnsalias.org", -"dnsdojo.com", -"dnsdojo.net", -"dnsdojo.org", -"does-it.net", -"doesntexist.com", -"doesntexist.org", -"dontexist.com", -"dontexist.net", -"dontexist.org", -"doomdns.com", -"doomdns.org", -"dvrdns.org", -"dyn-o-saur.com", -"dynalias.com", -"dynalias.net", -"dynalias.org", -"dynathome.net", -"dyndns.ws", -"endofinternet.net", -"endofinternet.org", -"endoftheinternet.org", -"est-a-la-maison.com", -"est-a-la-masion.com", -"est-le-patron.com", -"est-mon-blogueur.com", -"for-better.biz", -"for-more.biz", -"for-our.info", -"for-some.biz", -"for-the.biz", -"forgot.her.name", -"forgot.his.name", -"from-ak.com", -"from-al.com", -"from-ar.com", -"from-az.net", -"from-ca.com", -"from-co.net", -"from-ct.com", -"from-dc.com", -"from-de.com", -"from-fl.com", -"from-ga.com", -"from-hi.com", -"from-ia.com", -"from-id.com", -"from-il.com", -"from-in.com", -"from-ks.com", -"from-ky.com", -"from-la.net", -"from-ma.com", -"from-md.com", -"from-me.org", -"from-mi.com", -"from-mn.com", -"from-mo.com", -"from-ms.com", -"from-mt.com", -"from-nc.com", -"from-nd.com", -"from-ne.com", -"from-nh.com", -"from-nj.com", -"from-nm.com", -"from-nv.com", -"from-ny.net", -"from-oh.com", -"from-ok.com", -"from-or.com", -"from-pa.com", -"from-pr.com", -"from-ri.com", -"from-sc.com", -"from-sd.com", -"from-tn.com", -"from-tx.com", -"from-ut.com", -"from-va.com", -"from-vt.com", -"from-wa.com", -"from-wi.com", -"from-wv.com", -"from-wy.com", -"ftpaccess.cc", -"fuettertdasnetz.de", -"game-host.org", -"game-server.cc", -"getmyip.com", -"gets-it.net", -"go.dyndns.org", -"gotdns.com", -"gotdns.org", -"groks-the.info", -"groks-this.info", -"ham-radio-op.net", -"here-for-more.info", -"hobby-site.com", -"hobby-site.org", -"home.dyndns.org", -"homedns.org", -"homeftp.net", -"homeftp.org", -"homeip.net", -"homelinux.com", -"homelinux.net", -"homelinux.org", -"homeunix.com", -"homeunix.net", -"homeunix.org", -"iamallama.com", -"in-the-band.net", -"is-a-anarchist.com", -"is-a-blogger.com", -"is-a-bookkeeper.com", -"is-a-bruinsfan.org", -"is-a-bulls-fan.com", -"is-a-candidate.org", -"is-a-caterer.com", -"is-a-celticsfan.org", -"is-a-chef.com", -"is-a-chef.net", -"is-a-chef.org", -"is-a-conservative.com", -"is-a-cpa.com", -"is-a-cubicle-slave.com", -"is-a-democrat.com", -"is-a-designer.com", -"is-a-doctor.com", -"is-a-financialadvisor.com", -"is-a-geek.com", -"is-a-geek.net", -"is-a-geek.org", -"is-a-green.com", -"is-a-guru.com", -"is-a-hard-worker.com", -"is-a-hunter.com", -"is-a-knight.org", -"is-a-landscaper.com", -"is-a-lawyer.com", -"is-a-liberal.com", -"is-a-libertarian.com", -"is-a-linux-user.org", -"is-a-llama.com", -"is-a-musician.com", -"is-a-nascarfan.com", -"is-a-nurse.com", -"is-a-painter.com", -"is-a-patsfan.org", -"is-a-personaltrainer.com", -"is-a-photographer.com", -"is-a-player.com", -"is-a-republican.com", -"is-a-rockstar.com", -"is-a-socialist.com", -"is-a-soxfan.org", -"is-a-student.com", -"is-a-teacher.com", -"is-a-techie.com", -"is-a-therapist.com", -"is-an-accountant.com", -"is-an-actor.com", -"is-an-actress.com", -"is-an-anarchist.com", -"is-an-artist.com", -"is-an-engineer.com", -"is-an-entertainer.com", -"is-by.us", -"is-certified.com", -"is-found.org", -"is-gone.com", -"is-into-anime.com", -"is-into-cars.com", -"is-into-cartoons.com", -"is-into-games.com", -"is-leet.com", -"is-lost.org", -"is-not-certified.com", -"is-saved.org", -"is-slick.com", -"is-uberleet.com", -"is-very-bad.org", -"is-very-evil.org", -"is-very-good.org", -"is-very-nice.org", -"is-very-sweet.org", -"is-with-theband.com", -"isa-geek.com", -"isa-geek.net", -"isa-geek.org", -"isa-hockeynut.com", -"issmarterthanyou.com", -"isteingeek.de", -"istmein.de", -"kicks-ass.net", -"kicks-ass.org", -"knowsitall.info", -"land-4-sale.us", -"lebtimnetz.de", -"leitungsen.de", -"likes-pie.com", -"likescandy.com", -"merseine.nu", -"mine.nu", -"misconfused.org", -"mypets.ws", -"myphotos.cc", -"neat-url.com", -"office-on-the.net", -"on-the-web.tv", -"podzone.net", -"podzone.org", -"readmyblog.org", -"saves-the-whales.com", -"scrapper-site.net", -"scrapping.cc", -"selfip.biz", -"selfip.com", -"selfip.info", -"selfip.net", -"selfip.org", -"sells-for-less.com", -"sells-for-u.com", -"sells-it.net", -"sellsyourhome.org", -"servebbs.com", -"servebbs.net", -"servebbs.org", -"serveftp.net", -"serveftp.org", -"servegame.org", -"shacknet.nu", -"simple-url.com", -"space-to-rent.com", -"stuff-4-sale.org", -"stuff-4-sale.us", -"teaches-yoga.com", -"thruhere.net", -"traeumtgerade.de", -"webhop.biz", -"webhop.info", -"webhop.net", -"webhop.org", -"worse-than.tv", -"writesthisblog.com", -"ddnss.de", -"dyn.ddnss.de", -"dyndns.ddnss.de", -"dyndns1.de", -"dyn-ip24.de", -"home-webserver.de", -"dyn.home-webserver.de", -"myhome-server.de", -"ddnss.org", -"definima.net", -"definima.io", -"bci.dnstrace.pro", -"ddnsfree.com", -"ddnsgeek.com", -"giize.com", -"gleeze.com", -"kozow.com", -"loseyourip.com", -"ooguy.com", -"theworkpc.com", -"casacam.net", -"dynu.net", -"accesscam.org", -"camdvr.org", -"freeddns.org", -"mywire.org", -"webredirect.org", -"myddns.rocks", -"blogsite.xyz", -"dynv6.net", -"e4.cz", -"en-root.fr", -"mytuleap.com", -"onred.one", -"staging.onred.one", -"enonic.io", -"customer.enonic.io", -"eu.org", -"al.eu.org", -"asso.eu.org", -"at.eu.org", -"au.eu.org", -"be.eu.org", -"bg.eu.org", -"ca.eu.org", -"cd.eu.org", -"ch.eu.org", -"cn.eu.org", -"cy.eu.org", -"cz.eu.org", -"de.eu.org", -"dk.eu.org", -"edu.eu.org", -"ee.eu.org", -"es.eu.org", -"fi.eu.org", -"fr.eu.org", -"gr.eu.org", -"hr.eu.org", -"hu.eu.org", -"ie.eu.org", -"il.eu.org", -"in.eu.org", -"int.eu.org", -"is.eu.org", -"it.eu.org", -"jp.eu.org", -"kr.eu.org", -"lt.eu.org", -"lu.eu.org", -"lv.eu.org", -"mc.eu.org", -"me.eu.org", -"mk.eu.org", -"mt.eu.org", -"my.eu.org", -"net.eu.org", -"ng.eu.org", -"nl.eu.org", -"no.eu.org", -"nz.eu.org", -"paris.eu.org", -"pl.eu.org", -"pt.eu.org", -"q-a.eu.org", -"ro.eu.org", -"ru.eu.org", -"se.eu.org", -"si.eu.org", -"sk.eu.org", -"tr.eu.org", -"uk.eu.org", -"us.eu.org", -"eu-1.evennode.com", -"eu-2.evennode.com", -"eu-3.evennode.com", -"eu-4.evennode.com", -"us-1.evennode.com", -"us-2.evennode.com", -"us-3.evennode.com", -"us-4.evennode.com", -"twmail.cc", -"twmail.net", -"twmail.org", -"mymailer.com.tw", -"url.tw", -"apps.fbsbx.com", -"ru.net", -"adygeya.ru", -"bashkiria.ru", -"bir.ru", -"cbg.ru", -"com.ru", -"dagestan.ru", -"grozny.ru", -"kalmykia.ru", -"kustanai.ru", -"marine.ru", -"mordovia.ru", -"msk.ru", -"mytis.ru", -"nalchik.ru", -"nov.ru", -"pyatigorsk.ru", -"spb.ru", -"vladikavkaz.ru", -"vladimir.ru", -"abkhazia.su", -"adygeya.su", -"aktyubinsk.su", -"arkhangelsk.su", -"armenia.su", -"ashgabad.su", -"azerbaijan.su", -"balashov.su", -"bashkiria.su", -"bryansk.su", -"bukhara.su", -"chimkent.su", -"dagestan.su", -"east-kazakhstan.su", -"exnet.su", -"georgia.su", -"grozny.su", -"ivanovo.su", -"jambyl.su", -"kalmykia.su", -"kaluga.su", -"karacol.su", -"karaganda.su", -"karelia.su", -"khakassia.su", -"krasnodar.su", -"kurgan.su", -"kustanai.su", -"lenug.su", -"mangyshlak.su", -"mordovia.su", -"msk.su", -"murmansk.su", -"nalchik.su", -"navoi.su", -"north-kazakhstan.su", -"nov.su", -"obninsk.su", -"penza.su", -"pokrovsk.su", -"sochi.su", -"spb.su", -"tashkent.su", -"termez.su", -"togliatti.su", -"troitsk.su", -"tselinograd.su", -"tula.su", -"tuva.su", -"vladikavkaz.su", -"vladimir.su", -"vologda.su", -"channelsdvr.net", -"u.channelsdvr.net", -"fastly-terrarium.com", -"fastlylb.net", -"map.fastlylb.net", -"freetls.fastly.net", -"map.fastly.net", -"a.prod.fastly.net", -"global.prod.fastly.net", -"a.ssl.fastly.net", -"b.ssl.fastly.net", -"global.ssl.fastly.net", -"fastpanel.direct", -"fastvps-server.com", -"fhapp.xyz", -"fedorainfracloud.org", -"fedorapeople.org", -"cloud.fedoraproject.org", -"app.os.fedoraproject.org", -"app.os.stg.fedoraproject.org", -"mydobiss.com", -"filegear.me", -"filegear-au.me", -"filegear-de.me", -"filegear-gb.me", -"filegear-ie.me", -"filegear-jp.me", -"filegear-sg.me", -"firebaseapp.com", -"flynnhub.com", -"flynnhosting.net", -"0e.vc", -"freebox-os.com", -"freeboxos.com", -"fbx-os.fr", -"fbxos.fr", -"freebox-os.fr", -"freeboxos.fr", -"freedesktop.org", -"*.futurecms.at", -"*.ex.futurecms.at", -"*.in.futurecms.at", -"futurehosting.at", -"futuremailing.at", -"*.ex.ortsinfo.at", -"*.kunden.ortsinfo.at", -"*.statics.cloud", -"service.gov.uk", -"gehirn.ne.jp", -"usercontent.jp", -"gentapps.com", -"lab.ms", -"github.io", -"githubusercontent.com", -"gitlab.io", -"glitch.me", -"lolipop.io", -"cloudapps.digital", -"london.cloudapps.digital", -"homeoffice.gov.uk", -"ro.im", -"shop.ro", -"goip.de", -"run.app", -"a.run.app", -"web.app", -"*.0emm.com", -"appspot.com", -"*.r.appspot.com", -"blogspot.ae", -"blogspot.al", -"blogspot.am", -"blogspot.ba", -"blogspot.be", -"blogspot.bg", -"blogspot.bj", -"blogspot.ca", -"blogspot.cf", -"blogspot.ch", -"blogspot.cl", -"blogspot.co.at", -"blogspot.co.id", -"blogspot.co.il", -"blogspot.co.ke", -"blogspot.co.nz", -"blogspot.co.uk", -"blogspot.co.za", -"blogspot.com", -"blogspot.com.ar", -"blogspot.com.au", -"blogspot.com.br", -"blogspot.com.by", -"blogspot.com.co", -"blogspot.com.cy", -"blogspot.com.ee", -"blogspot.com.eg", -"blogspot.com.es", -"blogspot.com.mt", -"blogspot.com.ng", -"blogspot.com.tr", -"blogspot.com.uy", -"blogspot.cv", -"blogspot.cz", -"blogspot.de", -"blogspot.dk", -"blogspot.fi", -"blogspot.fr", -"blogspot.gr", -"blogspot.hk", -"blogspot.hr", -"blogspot.hu", -"blogspot.ie", -"blogspot.in", -"blogspot.is", -"blogspot.it", -"blogspot.jp", -"blogspot.kr", -"blogspot.li", -"blogspot.lt", -"blogspot.lu", -"blogspot.md", -"blogspot.mk", -"blogspot.mr", -"blogspot.mx", -"blogspot.my", -"blogspot.nl", -"blogspot.no", -"blogspot.pe", -"blogspot.pt", -"blogspot.qa", -"blogspot.re", -"blogspot.ro", -"blogspot.rs", -"blogspot.ru", -"blogspot.se", -"blogspot.sg", -"blogspot.si", -"blogspot.sk", -"blogspot.sn", -"blogspot.td", -"blogspot.tw", -"blogspot.ug", -"blogspot.vn", -"cloudfunctions.net", -"cloud.goog", -"codespot.com", -"googleapis.com", -"googlecode.com", -"pagespeedmobilizer.com", -"publishproxy.com", -"withgoogle.com", -"withyoutube.com", -"awsmppl.com", -"fin.ci", -"free.hr", -"caa.li", -"ua.rs", -"conf.se", -"hs.zone", -"hs.run", -"hashbang.sh", -"hasura.app", -"hasura-app.io", -"hepforge.org", -"herokuapp.com", -"herokussl.com", -"myravendb.com", -"ravendb.community", -"ravendb.me", -"development.run", -"ravendb.run", -"bpl.biz", -"orx.biz", -"ng.city", -"biz.gl", -"ng.ink", -"col.ng", -"firm.ng", -"gen.ng", -"ltd.ng", -"ngo.ng", -"ng.school", -"sch.so", -"häkkinen.fi", -"*.moonscale.io", -"moonscale.net", -"iki.fi", -"dyn-berlin.de", -"in-berlin.de", -"in-brb.de", -"in-butter.de", -"in-dsl.de", -"in-dsl.net", -"in-dsl.org", -"in-vpn.de", -"in-vpn.net", -"in-vpn.org", -"biz.at", -"info.at", -"info.cx", -"ac.leg.br", -"al.leg.br", -"am.leg.br", -"ap.leg.br", -"ba.leg.br", -"ce.leg.br", -"df.leg.br", -"es.leg.br", -"go.leg.br", -"ma.leg.br", -"mg.leg.br", -"ms.leg.br", -"mt.leg.br", -"pa.leg.br", -"pb.leg.br", -"pe.leg.br", -"pi.leg.br", -"pr.leg.br", -"rj.leg.br", -"rn.leg.br", -"ro.leg.br", -"rr.leg.br", -"rs.leg.br", -"sc.leg.br", -"se.leg.br", -"sp.leg.br", -"to.leg.br", -"pixolino.com", -"ipifony.net", -"mein-iserv.de", -"test-iserv.de", -"iserv.dev", -"iobb.net", -"myjino.ru", -"*.hosting.myjino.ru", -"*.landing.myjino.ru", -"*.spectrum.myjino.ru", -"*.vps.myjino.ru", -"*.triton.zone", -"*.cns.joyent.com", -"js.org", -"kaas.gg", -"khplay.nl", -"keymachine.de", -"kinghost.net", -"uni5.net", -"knightpoint.systems", -"oya.to", -"co.krd", -"edu.krd", -"git-repos.de", -"lcube-server.de", -"svn-repos.de", -"leadpages.co", -"lpages.co", -"lpusercontent.com", -"lelux.site", -"co.business", -"co.education", -"co.events", -"co.financial", -"co.network", -"co.place", -"co.technology", -"app.lmpm.com", -"linkitools.space", -"linkyard.cloud", -"linkyard-cloud.ch", -"members.linode.com", -"nodebalancer.linode.com", -"we.bs", -"loginline.app", -"loginline.dev", -"loginline.io", -"loginline.services", -"loginline.site", -"krasnik.pl", -"leczna.pl", -"lubartow.pl", -"lublin.pl", -"poniatowa.pl", -"swidnik.pl", -"uklugs.org", -"glug.org.uk", -"lug.org.uk", -"lugs.org.uk", -"barsy.bg", -"barsy.co.uk", -"barsyonline.co.uk", -"barsycenter.com", -"barsyonline.com", -"barsy.club", -"barsy.de", -"barsy.eu", -"barsy.in", -"barsy.info", -"barsy.io", -"barsy.me", -"barsy.menu", -"barsy.mobi", -"barsy.net", -"barsy.online", -"barsy.org", -"barsy.pro", -"barsy.pub", -"barsy.shop", -"barsy.site", -"barsy.support", -"barsy.uk", -"*.magentosite.cloud", -"mayfirst.info", -"mayfirst.org", -"hb.cldmail.ru", -"miniserver.com", -"memset.net", -"cloud.metacentrum.cz", -"custom.metacentrum.cz", -"flt.cloud.muni.cz", -"usr.cloud.muni.cz", -"meteorapp.com", -"eu.meteorapp.com", -"co.pl", -"azurecontainer.io", -"azurewebsites.net", -"azure-mobile.net", -"cloudapp.net", -"mozilla-iot.org", -"bmoattachments.org", -"net.ru", -"org.ru", -"pp.ru", -"ui.nabu.casa", -"pony.club", -"of.fashion", -"on.fashion", -"of.football", -"in.london", -"of.london", -"for.men", -"and.mom", -"for.mom", -"for.one", -"for.sale", -"of.work", -"to.work", -"nctu.me", -"bitballoon.com", -"netlify.com", -"4u.com", -"ngrok.io", -"nh-serv.co.uk", -"nfshost.com", -"dnsking.ch", -"mypi.co", -"n4t.co", -"001www.com", -"ddnslive.com", -"myiphost.com", -"forumz.info", -"16-b.it", -"32-b.it", -"64-b.it", -"soundcast.me", -"tcp4.me", -"dnsup.net", -"hicam.net", -"now-dns.net", -"ownip.net", -"vpndns.net", -"dynserv.org", -"now-dns.org", -"x443.pw", -"now-dns.top", -"ntdll.top", -"freeddns.us", -"crafting.xyz", -"zapto.xyz", -"nsupdate.info", -"nerdpol.ovh", -"blogsyte.com", -"brasilia.me", -"cable-modem.org", -"ciscofreak.com", -"collegefan.org", -"couchpotatofries.org", -"damnserver.com", -"ddns.me", -"ditchyourip.com", -"dnsfor.me", -"dnsiskinky.com", -"dvrcam.info", -"dynns.com", -"eating-organic.net", -"fantasyleague.cc", -"geekgalaxy.com", -"golffan.us", -"health-carereform.com", -"homesecuritymac.com", -"homesecuritypc.com", -"hopto.me", -"ilovecollege.info", -"loginto.me", -"mlbfan.org", -"mmafan.biz", -"myactivedirectory.com", -"mydissent.net", -"myeffect.net", -"mymediapc.net", -"mypsx.net", -"mysecuritycamera.com", -"mysecuritycamera.net", -"mysecuritycamera.org", -"net-freaks.com", -"nflfan.org", -"nhlfan.net", -"no-ip.ca", -"no-ip.co.uk", -"no-ip.net", -"noip.us", -"onthewifi.com", -"pgafan.net", -"point2this.com", -"pointto.us", -"privatizehealthinsurance.net", -"quicksytes.com", -"read-books.org", -"securitytactics.com", -"serveexchange.com", -"servehumour.com", -"servep2p.com", -"servesarcasm.com", -"stufftoread.com", -"ufcfan.org", -"unusualperson.com", -"workisboring.com", -"3utilities.com", -"bounceme.net", -"ddns.net", -"ddnsking.com", -"gotdns.ch", -"hopto.org", -"myftp.biz", -"myftp.org", -"myvnc.com", -"no-ip.biz", -"no-ip.info", -"no-ip.org", -"noip.me", -"redirectme.net", -"servebeer.com", -"serveblog.net", -"servecounterstrike.com", -"serveftp.com", -"servegame.com", -"servehalflife.com", -"servehttp.com", -"serveirc.com", -"serveminecraft.net", -"servemp3.com", -"servepics.com", -"servequake.com", -"sytes.net", -"webhop.me", -"zapto.org", -"stage.nodeart.io", -"nodum.co", -"nodum.io", -"pcloud.host", -"nyc.mn", -"nom.ae", -"nom.af", -"nom.ai", -"nom.al", -"nym.by", -"nom.bz", -"nym.bz", -"nom.cl", -"nym.ec", -"nom.gd", -"nom.ge", -"nom.gl", -"nym.gr", -"nom.gt", -"nym.gy", -"nym.hk", -"nom.hn", -"nym.ie", -"nom.im", -"nom.ke", -"nym.kz", -"nym.la", -"nym.lc", -"nom.li", -"nym.li", -"nym.lt", -"nym.lu", -"nom.lv", -"nym.me", -"nom.mk", -"nym.mn", -"nym.mx", -"nom.nu", -"nym.nz", -"nym.pe", -"nym.pt", -"nom.pw", -"nom.qa", -"nym.ro", -"nom.rs", -"nom.si", -"nym.sk", -"nom.st", -"nym.su", -"nym.sx", -"nom.tj", -"nym.tw", -"nom.ug", -"nom.uy", -"nom.vc", -"nom.vg", -"static.observableusercontent.com", -"cya.gg", -"cloudycluster.net", -"nid.io", -"opencraft.hosting", -"operaunite.com", -"skygearapp.com", -"outsystemscloud.com", -"ownprovider.com", -"own.pm", -"ox.rs", -"oy.lc", -"pgfog.com", -"pagefrontapp.com", -"art.pl", -"gliwice.pl", -"krakow.pl", -"poznan.pl", -"wroc.pl", -"zakopane.pl", -"pantheonsite.io", -"gotpantheon.com", -"mypep.link", -"perspecta.cloud", -"on-web.fr", -"*.platform.sh", -"*.platformsh.site", -"dyn53.io", -"co.bn", -"xen.prgmr.com", -"priv.at", -"prvcy.page", -"*.dweb.link", -"protonet.io", -"chirurgiens-dentistes-en-france.fr", -"byen.site", -"pubtls.org", -"qualifioapp.com", -"qbuser.com", -"instantcloud.cn", -"ras.ru", -"qa2.com", -"qcx.io", -"*.sys.qcx.io", -"dev-myqnapcloud.com", -"alpha-myqnapcloud.com", -"myqnapcloud.com", -"*.quipelements.com", -"vapor.cloud", -"vaporcloud.io", -"rackmaze.com", -"rackmaze.net", -"*.on-k3s.io", -"*.on-rancher.cloud", -"*.on-rio.io", -"readthedocs.io", -"rhcloud.com", -"app.render.com", -"onrender.com", -"repl.co", -"repl.run", -"resindevice.io", -"devices.resinstaging.io", -"hzc.io", -"wellbeingzone.eu", -"ptplus.fit", -"wellbeingzone.co.uk", -"git-pages.rit.edu", -"sandcats.io", -"logoip.de", -"logoip.com", -"schokokeks.net", -"gov.scot", -"scrysec.com", -"firewall-gateway.com", -"firewall-gateway.de", -"my-gateway.de", -"my-router.de", -"spdns.de", -"spdns.eu", -"firewall-gateway.net", -"my-firewall.org", -"myfirewall.org", -"spdns.org", -"senseering.net", -"biz.ua", -"co.ua", -"pp.ua", -"shiftedit.io", -"myshopblocks.com", -"shopitsite.com", -"mo-siemens.io", -"1kapp.com", -"appchizi.com", -"applinzi.com", -"sinaapp.com", -"vipsinaapp.com", -"siteleaf.net", -"bounty-full.com", -"alpha.bounty-full.com", -"beta.bounty-full.com", -"stackhero-network.com", -"static.land", -"dev.static.land", -"sites.static.land", -"apps.lair.io", -"*.stolos.io", -"spacekit.io", -"customer.speedpartner.de", -"api.stdlib.com", -"storj.farm", -"utwente.io", -"soc.srcf.net", -"user.srcf.net", -"temp-dns.com", -"applicationcloud.io", -"scapp.io", -"*.s5y.io", -"*.sensiosite.cloud", -"syncloud.it", -"diskstation.me", -"dscloud.biz", -"dscloud.me", -"dscloud.mobi", -"dsmynas.com", -"dsmynas.net", -"dsmynas.org", -"familyds.com", -"familyds.net", -"familyds.org", -"i234.me", -"myds.me", -"synology.me", -"vpnplus.to", -"direct.quickconnect.to", -"taifun-dns.de", -"gda.pl", -"gdansk.pl", -"gdynia.pl", -"med.pl", -"sopot.pl", -"edugit.org", -"telebit.app", -"telebit.io", -"*.telebit.xyz", -"gwiddle.co.uk", -"thingdustdata.com", -"cust.dev.thingdust.io", -"cust.disrec.thingdust.io", -"cust.prod.thingdust.io", -"cust.testing.thingdust.io", -"arvo.network", -"azimuth.network", -"bloxcms.com", -"townnews-staging.com", -"12hp.at", -"2ix.at", -"4lima.at", -"lima-city.at", -"12hp.ch", -"2ix.ch", -"4lima.ch", -"lima-city.ch", -"trafficplex.cloud", -"de.cool", -"12hp.de", -"2ix.de", -"4lima.de", -"lima-city.de", -"1337.pictures", -"clan.rip", -"lima-city.rocks", -"webspace.rocks", -"lima.zone", -"*.transurl.be", -"*.transurl.eu", -"*.transurl.nl", -"tuxfamily.org", -"dd-dns.de", -"diskstation.eu", -"diskstation.org", -"dray-dns.de", -"draydns.de", -"dyn-vpn.de", -"dynvpn.de", -"mein-vigor.de", -"my-vigor.de", -"my-wan.de", -"syno-ds.de", -"synology-diskstation.de", -"synology-ds.de", -"uber.space", -"*.uberspace.de", -"hk.com", -"hk.org", -"ltd.hk", -"inc.hk", -"virtualuser.de", -"virtual-user.de", -"urown.cloud", -"dnsupdate.info", -"lib.de.us", -"2038.io", -"router.management", -"v-info.info", -"voorloper.cloud", -"v.ua", -"wafflecell.com", -"*.webhare.dev", -"wedeploy.io", -"wedeploy.me", -"wedeploy.sh", -"remotewd.com", -"wmflabs.org", -"myforum.community", -"community-pro.de", -"diskussionsbereich.de", -"community-pro.net", -"meinforum.net", -"half.host", -"xnbay.com", -"u2.xnbay.com", -"u2-local.xnbay.com", -"cistron.nl", -"demon.nl", -"xs4all.space", -"yandexcloud.net", -"storage.yandexcloud.net", -"website.yandexcloud.net", -"official.academy", -"yolasite.com", -"ybo.faith", -"yombo.me", -"homelink.one", -"ybo.party", -"ybo.review", -"ybo.science", -"ybo.trade", -"nohost.me", -"noho.st", -"za.net", -"za.org", -"now.sh", -"bss.design", -"basicserver.io", -"virtualserver.io", -"enterprisecloud.nu" -] \ No newline at end of file diff --git a/node_modules/psl/dist/psl.js b/node_modules/psl/dist/psl.js deleted file mode 100644 index f4b9b89..0000000 --- a/node_modules/psl/dist/psl.js +++ /dev/null @@ -1,9645 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.psl = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i= punySuffix.length) { - // return memo; - // } - //} - return rule; - }, null); -}; - - -// -// Error codes and messages. -// -exports.errorCodes = { - DOMAIN_TOO_SHORT: 'Domain name too short.', - DOMAIN_TOO_LONG: 'Domain name too long. It should be no more than 255 chars.', - LABEL_STARTS_WITH_DASH: 'Domain name label can not start with a dash.', - LABEL_ENDS_WITH_DASH: 'Domain name label can not end with a dash.', - LABEL_TOO_LONG: 'Domain name label should be at most 63 chars long.', - LABEL_TOO_SHORT: 'Domain name label should be at least 1 character long.', - LABEL_INVALID_CHARS: 'Domain name label can only contain alphanumeric characters or dashes.' -}; - - -// -// Validate domain name and throw if not valid. -// -// From wikipedia: -// -// Hostnames are composed of series of labels concatenated with dots, as are all -// domain names. Each label must be between 1 and 63 characters long, and the -// entire hostname (including the delimiting dots) has a maximum of 255 chars. -// -// Allowed chars: -// -// * `a-z` -// * `0-9` -// * `-` but not as a starting or ending character -// * `.` as a separator for the textual portions of a domain name -// -// * http://en.wikipedia.org/wiki/Domain_name -// * http://en.wikipedia.org/wiki/Hostname -// -internals.validate = function (input) { - - // Before we can validate we need to take care of IDNs with unicode chars. - var ascii = Punycode.toASCII(input); - - if (ascii.length < 1) { - return 'DOMAIN_TOO_SHORT'; - } - if (ascii.length > 255) { - return 'DOMAIN_TOO_LONG'; - } - - // Check each part's length and allowed chars. - var labels = ascii.split('.'); - var label; - - for (var i = 0; i < labels.length; ++i) { - label = labels[i]; - if (!label.length) { - return 'LABEL_TOO_SHORT'; - } - if (label.length > 63) { - return 'LABEL_TOO_LONG'; - } - if (label.charAt(0) === '-') { - return 'LABEL_STARTS_WITH_DASH'; - } - if (label.charAt(label.length - 1) === '-') { - return 'LABEL_ENDS_WITH_DASH'; - } - if (!/^[a-z0-9\-]+$/.test(label)) { - return 'LABEL_INVALID_CHARS'; - } - } -}; - - -// -// Public API -// - - -// -// Parse domain. -// -exports.parse = function (input) { - - if (typeof input !== 'string') { - throw new TypeError('Domain name must be a string.'); - } - - // Force domain to lowercase. - var domain = input.slice(0).toLowerCase(); - - // Handle FQDN. - // TODO: Simply remove trailing dot? - if (domain.charAt(domain.length - 1) === '.') { - domain = domain.slice(0, domain.length - 1); - } - - // Validate and sanitise input. - var error = internals.validate(domain); - if (error) { - return { - input: input, - error: { - message: exports.errorCodes[error], - code: error - } - }; - } - - var parsed = { - input: input, - tld: null, - sld: null, - domain: null, - subdomain: null, - listed: false - }; - - var domainParts = domain.split('.'); - - // Non-Internet TLD - if (domainParts[domainParts.length - 1] === 'local') { - return parsed; - } - - var handlePunycode = function () { - - if (!/xn--/.test(domain)) { - return parsed; - } - if (parsed.domain) { - parsed.domain = Punycode.toASCII(parsed.domain); - } - if (parsed.subdomain) { - parsed.subdomain = Punycode.toASCII(parsed.subdomain); - } - return parsed; - }; - - var rule = internals.findRule(domain); - - // Unlisted tld. - if (!rule) { - if (domainParts.length < 2) { - return parsed; - } - parsed.tld = domainParts.pop(); - parsed.sld = domainParts.pop(); - parsed.domain = [parsed.sld, parsed.tld].join('.'); - if (domainParts.length) { - parsed.subdomain = domainParts.pop(); - } - return handlePunycode(); - } - - // At this point we know the public suffix is listed. - parsed.listed = true; - - var tldParts = rule.suffix.split('.'); - var privateParts = domainParts.slice(0, domainParts.length - tldParts.length); - - if (rule.exception) { - privateParts.push(tldParts.shift()); - } - - parsed.tld = tldParts.join('.'); - - if (!privateParts.length) { - return handlePunycode(); - } - - if (rule.wildcard) { - tldParts.unshift(privateParts.pop()); - parsed.tld = tldParts.join('.'); - } - - if (!privateParts.length) { - return handlePunycode(); - } - - parsed.sld = privateParts.pop(); - parsed.domain = [parsed.sld, parsed.tld].join('.'); - - if (privateParts.length) { - parsed.subdomain = privateParts.join('.'); - } - - return handlePunycode(); -}; - - -// -// Get domain. -// -exports.get = function (domain) { - - if (!domain) { - return null; - } - return exports.parse(domain).domain || null; -}; - - -// -// Check whether domain belongs to a known public suffix. -// -exports.isValid = function (domain) { - - var parsed = exports.parse(domain); - return Boolean(parsed.domain && parsed.listed); -}; - -},{"./data/rules.json":1,"punycode":3}],3:[function(require,module,exports){ -(function (global){ -/*! https://mths.be/punycode v1.4.1 by @mathias */ -;(function(root) { - - /** Detect free variables */ - var freeExports = typeof exports == 'object' && exports && - !exports.nodeType && exports; - var freeModule = typeof module == 'object' && module && - !module.nodeType && module; - var freeGlobal = typeof global == 'object' && global; - if ( - freeGlobal.global === freeGlobal || - freeGlobal.window === freeGlobal || - freeGlobal.self === freeGlobal - ) { - root = freeGlobal; - } - - /** - * The `punycode` object. - * @name punycode - * @type Object - */ - var punycode, - - /** Highest positive signed 32-bit float value */ - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - - /** Bootstring parameters */ - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' - - /** Regular expressions */ - regexPunycode = /^xn--/, - regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators - - /** Error messages */ - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - /** Temporary variable */ - key; - - /*--------------------------------------------------------------------------*/ - - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw new RangeError(errors[type]); - } - - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - var result = []; - while (length--) { - result[length] = fn(array[length]); - } - return result; - } - - /** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; - } - - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * https://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - /** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); - - // Cache the length - inputLength = input.length; - - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; - - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - /** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - /** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ - function toASCII(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - /*--------------------------------------------------------------------------*/ - - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.4.1', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - typeof define == 'function' && - typeof define.amd == 'object' && - define.amd - ) { - define('punycode', function() { - return punycode; - }); - } else if (freeExports && freeModule) { - if (module.exports == freeExports) { - // in Node.js, io.js, or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { - // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { - // in Rhino or a web browser - root.punycode = punycode; - } - -}(this)); - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}]},{},[2])(2) -}); diff --git a/node_modules/psl/dist/psl.min.js b/node_modules/psl/dist/psl.min.js deleted file mode 100644 index d5c787e..0000000 --- a/node_modules/psl/dist/psl.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).psl=a()}}(function(){return function s(m,t,u){function r(o,a){if(!t[o]){if(!m[o]){var i="function"==typeof require&&require;if(!a&&i)return i(o,!0);if(p)return p(o,!0);var e=new Error("Cannot find module '"+o+"'");throw e.code="MODULE_NOT_FOUND",e}var n=t[o]={exports:{}};m[o][0].call(n.exports,function(a){return r(m[o][1][a]||a)},n,n.exports,s,m,t,u)}return t[o].exports}for(var p="function"==typeof require&&require,a=0;a= 0x80 (not a basic code point)","invalid-input":"Invalid input"},c=b-y,x=Math.floor,q=String.fromCharCode;function A(a){throw new RangeError(k[a])}function l(a,o){for(var i=a.length,e=[];i--;)e[i]=o(a[i]);return e}function g(a,o){var i=a.split("@"),e="";return 1>>10&1023|55296),a=56320|1023&a),o+=q(a)}).join("")}function L(a,o){return a+22+75*(a<26)-((0!=o)<<5)}function I(a,o,i){var e=0;for(a=i?x(a/t):a>>1,a+=x(a/o);c*f>>1x((d-g)/m))&&A("overflow"),g+=u*m,!(u<(r=t<=j?y:j+f<=t?f:t-j));t+=b)m>x(d/(p=b-r))&&A("overflow"),m*=p;j=I(g-s,o=c.length+1,0==s),x(g/o)>d-h&&A("overflow"),h+=x(g/o),g%=o,c.splice(g++,0,h)}return _(c)}function j(a){var o,i,e,n,s,m,t,u,r,p,k,c,l,g,h,j=[];for(c=(a=O(a)).length,o=w,s=v,m=i=0;mx((d-i)/(l=e+1))&&A("overflow"),i+=(t-o)*l,o=t,m=0;md&&A("overflow"),k==o){for(u=i,r=b;!(u<(p=r<=s?y:s+f<=r?f:r-s));r+=b)h=u-p,g=b-p,j.push(q(L(p+h%g,0))),u=x(h/g);j.push(q(L(u,0))),s=I(i,l,e==n),i=0,++e}++i,++o}return j.join("")}if(n={version:"1.4.1",ucs2:{decode:O,encode:_},decode:h,encode:j,toASCII:function(a){return g(a,function(a){return r.test(a)?"xn--"+j(a):a})},toUnicode:function(a){return g(a,function(a){return u.test(a)?h(a.slice(4).toLowerCase()):a})}},0,o&&i)if(T.exports==o)i.exports=n;else for(s in n)n.hasOwnProperty(s)&&(o[s]=n[s]);else a.punycode=n}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[2])(2)}); diff --git a/node_modules/psl/index.js b/node_modules/psl/index.js deleted file mode 100644 index da7bc12..0000000 --- a/node_modules/psl/index.js +++ /dev/null @@ -1,269 +0,0 @@ -/*eslint no-var:0, prefer-arrow-callback: 0, object-shorthand: 0 */ -'use strict'; - - -var Punycode = require('punycode'); - - -var internals = {}; - - -// -// Read rules from file. -// -internals.rules = require('./data/rules.json').map(function (rule) { - - return { - rule: rule, - suffix: rule.replace(/^(\*\.|\!)/, ''), - punySuffix: -1, - wildcard: rule.charAt(0) === '*', - exception: rule.charAt(0) === '!' - }; -}); - - -// -// Check is given string ends with `suffix`. -// -internals.endsWith = function (str, suffix) { - - return str.indexOf(suffix, str.length - suffix.length) !== -1; -}; - - -// -// Find rule for a given domain. -// -internals.findRule = function (domain) { - - var punyDomain = Punycode.toASCII(domain); - return internals.rules.reduce(function (memo, rule) { - - if (rule.punySuffix === -1){ - rule.punySuffix = Punycode.toASCII(rule.suffix); - } - if (!internals.endsWith(punyDomain, '.' + rule.punySuffix) && punyDomain !== rule.punySuffix) { - return memo; - } - // This has been commented out as it never seems to run. This is because - // sub tlds always appear after their parents and we never find a shorter - // match. - //if (memo) { - // var memoSuffix = Punycode.toASCII(memo.suffix); - // if (memoSuffix.length >= punySuffix.length) { - // return memo; - // } - //} - return rule; - }, null); -}; - - -// -// Error codes and messages. -// -exports.errorCodes = { - DOMAIN_TOO_SHORT: 'Domain name too short.', - DOMAIN_TOO_LONG: 'Domain name too long. It should be no more than 255 chars.', - LABEL_STARTS_WITH_DASH: 'Domain name label can not start with a dash.', - LABEL_ENDS_WITH_DASH: 'Domain name label can not end with a dash.', - LABEL_TOO_LONG: 'Domain name label should be at most 63 chars long.', - LABEL_TOO_SHORT: 'Domain name label should be at least 1 character long.', - LABEL_INVALID_CHARS: 'Domain name label can only contain alphanumeric characters or dashes.' -}; - - -// -// Validate domain name and throw if not valid. -// -// From wikipedia: -// -// Hostnames are composed of series of labels concatenated with dots, as are all -// domain names. Each label must be between 1 and 63 characters long, and the -// entire hostname (including the delimiting dots) has a maximum of 255 chars. -// -// Allowed chars: -// -// * `a-z` -// * `0-9` -// * `-` but not as a starting or ending character -// * `.` as a separator for the textual portions of a domain name -// -// * http://en.wikipedia.org/wiki/Domain_name -// * http://en.wikipedia.org/wiki/Hostname -// -internals.validate = function (input) { - - // Before we can validate we need to take care of IDNs with unicode chars. - var ascii = Punycode.toASCII(input); - - if (ascii.length < 1) { - return 'DOMAIN_TOO_SHORT'; - } - if (ascii.length > 255) { - return 'DOMAIN_TOO_LONG'; - } - - // Check each part's length and allowed chars. - var labels = ascii.split('.'); - var label; - - for (var i = 0; i < labels.length; ++i) { - label = labels[i]; - if (!label.length) { - return 'LABEL_TOO_SHORT'; - } - if (label.length > 63) { - return 'LABEL_TOO_LONG'; - } - if (label.charAt(0) === '-') { - return 'LABEL_STARTS_WITH_DASH'; - } - if (label.charAt(label.length - 1) === '-') { - return 'LABEL_ENDS_WITH_DASH'; - } - if (!/^[a-z0-9\-]+$/.test(label)) { - return 'LABEL_INVALID_CHARS'; - } - } -}; - - -// -// Public API -// - - -// -// Parse domain. -// -exports.parse = function (input) { - - if (typeof input !== 'string') { - throw new TypeError('Domain name must be a string.'); - } - - // Force domain to lowercase. - var domain = input.slice(0).toLowerCase(); - - // Handle FQDN. - // TODO: Simply remove trailing dot? - if (domain.charAt(domain.length - 1) === '.') { - domain = domain.slice(0, domain.length - 1); - } - - // Validate and sanitise input. - var error = internals.validate(domain); - if (error) { - return { - input: input, - error: { - message: exports.errorCodes[error], - code: error - } - }; - } - - var parsed = { - input: input, - tld: null, - sld: null, - domain: null, - subdomain: null, - listed: false - }; - - var domainParts = domain.split('.'); - - // Non-Internet TLD - if (domainParts[domainParts.length - 1] === 'local') { - return parsed; - } - - var handlePunycode = function () { - - if (!/xn--/.test(domain)) { - return parsed; - } - if (parsed.domain) { - parsed.domain = Punycode.toASCII(parsed.domain); - } - if (parsed.subdomain) { - parsed.subdomain = Punycode.toASCII(parsed.subdomain); - } - return parsed; - }; - - var rule = internals.findRule(domain); - - // Unlisted tld. - if (!rule) { - if (domainParts.length < 2) { - return parsed; - } - parsed.tld = domainParts.pop(); - parsed.sld = domainParts.pop(); - parsed.domain = [parsed.sld, parsed.tld].join('.'); - if (domainParts.length) { - parsed.subdomain = domainParts.pop(); - } - return handlePunycode(); - } - - // At this point we know the public suffix is listed. - parsed.listed = true; - - var tldParts = rule.suffix.split('.'); - var privateParts = domainParts.slice(0, domainParts.length - tldParts.length); - - if (rule.exception) { - privateParts.push(tldParts.shift()); - } - - parsed.tld = tldParts.join('.'); - - if (!privateParts.length) { - return handlePunycode(); - } - - if (rule.wildcard) { - tldParts.unshift(privateParts.pop()); - parsed.tld = tldParts.join('.'); - } - - if (!privateParts.length) { - return handlePunycode(); - } - - parsed.sld = privateParts.pop(); - parsed.domain = [parsed.sld, parsed.tld].join('.'); - - if (privateParts.length) { - parsed.subdomain = privateParts.join('.'); - } - - return handlePunycode(); -}; - - -// -// Get domain. -// -exports.get = function (domain) { - - if (!domain) { - return null; - } - return exports.parse(domain).domain || null; -}; - - -// -// Check whether domain belongs to a known public suffix. -// -exports.isValid = function (domain) { - - var parsed = exports.parse(domain); - return Boolean(parsed.domain && parsed.listed); -}; diff --git a/node_modules/psl/package.json b/node_modules/psl/package.json deleted file mode 100644 index 9397e5e..0000000 --- a/node_modules/psl/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_from": "psl@^1.1.28", - "_id": "psl@1.8.0", - "_inBundle": false, - "_integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "_location": "/psl", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "psl@^1.1.28", - "name": "psl", - "escapedName": "psl", - "rawSpec": "^1.1.28", - "saveSpec": null, - "fetchSpec": "^1.1.28" - }, - "_requiredBy": [ - "/tough-cookie" - ], - "_resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "_shasum": "9326f8bcfb013adcc005fdff056acce020e51c24", - "_spec": "psl@^1.1.28", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/tough-cookie", - "author": { - "name": "Lupo Montero", - "email": "lupomontero@gmail.com", - "url": "https://lupomontero.com/" - }, - "bugs": { - "url": "https://github.com/lupomontero/psl/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Domain name parser based on the Public Suffix List", - "devDependencies": { - "JSONStream": "^1.3.5", - "browserify": "^16.5.0", - "commit-and-pr": "^1.0.4", - "eslint": "^6.8.0", - "eslint-config-hapi": "^12.0.0", - "eslint-plugin-hapi": "^4.1.0", - "karma": "^4.4.1", - "karma-browserify": "^7.0.0", - "karma-mocha": "^1.3.0", - "karma-mocha-reporter": "^2.2.5", - "karma-phantomjs-launcher": "^1.0.4", - "mocha": "^7.1.1", - "phantomjs-prebuilt": "^2.1.16", - "request": "^2.88.2", - "uglify-js": "^3.8.0", - "watchify": "^3.11.1" - }, - "homepage": "https://github.com/lupomontero/psl#readme", - "keywords": [ - "publicsuffix", - "publicsuffixlist" - ], - "license": "MIT", - "main": "index.js", - "name": "psl", - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/lupomontero/psl.git" - }, - "scripts": { - "build": "browserify ./index.js --standalone=psl > ./dist/psl.js", - "changelog": "git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"%h %s (%an <%ae>)\"", - "commit-and-pr": "commit-and-pr", - "postbuild": "cat ./dist/psl.js | uglifyjs -c -m > ./dist/psl.min.js", - "prebuild": "./scripts/update-rules.js", - "pretest": "eslint .", - "test": "mocha test && karma start ./karma.conf.js --single-run", - "watch": "mocha test --watch" - }, - "version": "1.8.0" -} diff --git a/node_modules/punycode/LICENSE-MIT.txt b/node_modules/punycode/LICENSE-MIT.txt deleted file mode 100644 index a41e0a7..0000000 --- a/node_modules/punycode/LICENSE-MIT.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright Mathias Bynens - -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. diff --git a/node_modules/punycode/README.md b/node_modules/punycode/README.md deleted file mode 100644 index ee2f9d6..0000000 --- a/node_modules/punycode/README.md +++ /dev/null @@ -1,122 +0,0 @@ -# Punycode.js [![Build status](https://travis-ci.org/bestiejs/punycode.js.svg?branch=master)](https://travis-ci.org/bestiejs/punycode.js) [![Code coverage status](http://img.shields.io/codecov/c/github/bestiejs/punycode.js.svg)](https://codecov.io/gh/bestiejs/punycode.js) [![Dependency status](https://gemnasium.com/bestiejs/punycode.js.svg)](https://gemnasium.com/bestiejs/punycode.js) - -Punycode.js is a robust Punycode converter that fully complies to [RFC 3492](https://tools.ietf.org/html/rfc3492) and [RFC 5891](https://tools.ietf.org/html/rfc5891). - -This JavaScript library is the result of comparing, optimizing and documenting different open-source implementations of the Punycode algorithm: - -* [The C example code from RFC 3492](https://tools.ietf.org/html/rfc3492#appendix-C) -* [`punycode.c` by _Markus W. Scherer_ (IBM)](http://opensource.apple.com/source/ICU/ICU-400.42/icuSources/common/punycode.c) -* [`punycode.c` by _Ben Noordhuis_](https://github.com/bnoordhuis/punycode/blob/master/punycode.c) -* [JavaScript implementation by _some_](http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion/301287#301287) -* [`punycode.js` by _Ben Noordhuis_](https://github.com/joyent/node/blob/426298c8c1c0d5b5224ac3658c41e7c2a3fe9377/lib/punycode.js) (note: [not fully compliant](https://github.com/joyent/node/issues/2072)) - -This project was [bundled](https://github.com/joyent/node/blob/master/lib/punycode.js) with Node.js from [v0.6.2+](https://github.com/joyent/node/compare/975f1930b1...61e796decc) until [v7](https://github.com/nodejs/node/pull/7941) (soft-deprecated). - -The current version supports recent versions of Node.js only. It provides a CommonJS module and an ES6 module. For the old version that offers the same functionality with broader support, including Rhino, Ringo, Narwhal, and web browsers, see [v1.4.1](https://github.com/bestiejs/punycode.js/releases/tag/v1.4.1). - -## Installation - -Via [npm](https://www.npmjs.com/): - -```bash -npm install punycode --save -``` - -In [Node.js](https://nodejs.org/): - -```js -const punycode = require('punycode'); -``` - -## API - -### `punycode.decode(string)` - -Converts a Punycode string of ASCII symbols to a string of Unicode symbols. - -```js -// decode domain name parts -punycode.decode('maana-pta'); // 'mañana' -punycode.decode('--dqo34k'); // '☃-⌘' -``` - -### `punycode.encode(string)` - -Converts a string of Unicode symbols to a Punycode string of ASCII symbols. - -```js -// encode domain name parts -punycode.encode('mañana'); // 'maana-pta' -punycode.encode('☃-⌘'); // '--dqo34k' -``` - -### `punycode.toUnicode(input)` - -Converts a Punycode string representing a domain name or an email address to Unicode. Only the Punycoded parts of the input will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode. - -```js -// decode domain names -punycode.toUnicode('xn--maana-pta.com'); -// → 'mañana.com' -punycode.toUnicode('xn----dqo34k.com'); -// → '☃-⌘.com' - -// decode email addresses -punycode.toUnicode('джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq'); -// → 'джумла@джpумлатест.bрфa' -``` - -### `punycode.toASCII(input)` - -Converts a lowercased Unicode string representing a domain name or an email address to Punycode. Only the non-ASCII parts of the input will be converted, i.e. it doesn’t matter if you call it with a domain that’s already in ASCII. - -```js -// encode domain names -punycode.toASCII('mañana.com'); -// → 'xn--maana-pta.com' -punycode.toASCII('☃-⌘.com'); -// → 'xn----dqo34k.com' - -// encode email addresses -punycode.toASCII('джумла@джpумлатест.bрфa'); -// → 'джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq' -``` - -### `punycode.ucs2` - -#### `punycode.ucs2.decode(string)` - -Creates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](https://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16. - -```js -punycode.ucs2.decode('abc'); -// → [0x61, 0x62, 0x63] -// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE: -punycode.ucs2.decode('\uD834\uDF06'); -// → [0x1D306] -``` - -#### `punycode.ucs2.encode(codePoints)` - -Creates a string based on an array of numeric code point values. - -```js -punycode.ucs2.encode([0x61, 0x62, 0x63]); -// → 'abc' -punycode.ucs2.encode([0x1D306]); -// → '\uD834\uDF06' -``` - -### `punycode.version` - -A string representing the current Punycode.js version number. - -## Author - -| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | -|---| -| [Mathias Bynens](https://mathiasbynens.be/) | - -## License - -Punycode.js is available under the [MIT](https://mths.be/mit) license. diff --git a/node_modules/punycode/package.json b/node_modules/punycode/package.json deleted file mode 100644 index 2fbd990..0000000 --- a/node_modules/punycode/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_from": "punycode@2.x.x", - "_id": "punycode@2.1.1", - "_inBundle": false, - "_integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "_location": "/punycode", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "punycode@2.x.x", - "name": "punycode", - "escapedName": "punycode", - "rawSpec": "2.x.x", - "saveSpec": null, - "fetchSpec": "2.x.x" - }, - "_requiredBy": [ - "/isemail", - "/tough-cookie", - "/uri-js" - ], - "_resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "_shasum": "b58b010ac40c22c5657616c8d2c2c02c7bf479ec", - "_spec": "punycode@2.x.x", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/isemail", - "author": { - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - }, - "bugs": { - "url": "https://github.com/bestiejs/punycode.js/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - } - ], - "deprecated": false, - "description": "A robust Punycode converter that fully complies to RFC 3492 and RFC 5891, and works on nearly all JavaScript platforms.", - "devDependencies": { - "codecov": "^1.0.1", - "istanbul": "^0.4.1", - "mocha": "^2.5.3" - }, - "engines": { - "node": ">=6" - }, - "files": [ - "LICENSE-MIT.txt", - "punycode.js", - "punycode.es6.js" - ], - "homepage": "https://mths.be/punycode", - "jsnext:main": "punycode.es6.js", - "jspm": { - "map": { - "./punycode.js": { - "node": "@node/punycode" - } - } - }, - "keywords": [ - "punycode", - "unicode", - "idn", - "idna", - "dns", - "url", - "domain" - ], - "license": "MIT", - "main": "punycode.js", - "module": "punycode.es6.js", - "name": "punycode", - "repository": { - "type": "git", - "url": "git+https://github.com/bestiejs/punycode.js.git" - }, - "scripts": { - "prepublish": "node scripts/prepublish.js", - "test": "mocha tests" - }, - "version": "2.1.1" -} diff --git a/node_modules/punycode/punycode.es6.js b/node_modules/punycode/punycode.es6.js deleted file mode 100644 index 4610bc9..0000000 --- a/node_modules/punycode/punycode.es6.js +++ /dev/null @@ -1,441 +0,0 @@ -'use strict'; - -/** Highest positive signed 32-bit float value */ -const maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 - -/** Bootstring parameters */ -const base = 36; -const tMin = 1; -const tMax = 26; -const skew = 38; -const damp = 700; -const initialBias = 72; -const initialN = 128; // 0x80 -const delimiter = '-'; // '\x2D' - -/** Regular expressions */ -const regexPunycode = /^xn--/; -const regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars -const regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators - -/** Error messages */ -const errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' -}; - -/** Convenience shortcuts */ -const baseMinusTMin = base - tMin; -const floor = Math.floor; -const stringFromCharCode = String.fromCharCode; - -/*--------------------------------------------------------------------------*/ - -/** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ -function error(type) { - throw new RangeError(errors[type]); -} - -/** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ -function map(array, fn) { - const result = []; - let length = array.length; - while (length--) { - result[length] = fn(array[length]); - } - return result; -} - -/** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ -function mapDomain(string, fn) { - const parts = string.split('@'); - let result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - const labels = string.split('.'); - const encoded = map(labels, fn).join('.'); - return result + encoded; -} - -/** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ -function ucs2decode(string) { - const output = []; - let counter = 0; - const length = string.length; - while (counter < length) { - const value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // It's a high surrogate, and there is a next character. - const extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // Low surrogate. - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // It's an unmatched surrogate; only append this code unit, in case the - // next code unit is the high surrogate of a surrogate pair. - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; -} - -/** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ -const ucs2encode = array => String.fromCodePoint(...array); - -/** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ -const basicToDigit = function(codePoint) { - if (codePoint - 0x30 < 0x0A) { - return codePoint - 0x16; - } - if (codePoint - 0x41 < 0x1A) { - return codePoint - 0x41; - } - if (codePoint - 0x61 < 0x1A) { - return codePoint - 0x61; - } - return base; -}; - -/** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ -const digitToBasic = function(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); -}; - -/** - * Bias adaptation function as per section 3.4 of RFC 3492. - * https://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ -const adapt = function(delta, numPoints, firstTime) { - let k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); -}; - -/** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ -const decode = function(input) { - // Don't use UCS-2. - const output = []; - const inputLength = input.length; - let i = 0; - let n = initialN; - let bias = initialBias; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - let basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (let j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - let oldi = i; - for (let w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - const digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - const baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - const out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output. - output.splice(i++, 0, n); - - } - - return String.fromCodePoint(...output); -}; - -/** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ -const encode = function(input) { - const output = []; - - // Convert the input in UCS-2 to an array of Unicode code points. - input = ucs2decode(input); - - // Cache the length. - let inputLength = input.length; - - // Initialize the state. - let n = initialN; - let delta = 0; - let bias = initialBias; - - // Handle the basic code points. - for (const currentValue of input) { - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - let basicLength = output.length; - let handledCPCount = basicLength; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string with a delimiter unless it's empty. - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - let m = maxInt; - for (const currentValue of input) { - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow. - const handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (const currentValue of input) { - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - if (currentValue == n) { - // Represent delta as a generalized variable-length integer. - let q = delta; - for (let k = base; /* no condition */; k += base) { - const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - const qMinusT = q - t; - const baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); -}; - -/** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ -const toUnicode = function(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); -}; - -/** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ -const toASCII = function(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); -}; - -/*--------------------------------------------------------------------------*/ - -/** Define the public API */ -const punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '2.1.0', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode -}; - -export { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode }; -export default punycode; diff --git a/node_modules/punycode/punycode.js b/node_modules/punycode/punycode.js deleted file mode 100644 index ea61fd0..0000000 --- a/node_modules/punycode/punycode.js +++ /dev/null @@ -1,440 +0,0 @@ -'use strict'; - -/** Highest positive signed 32-bit float value */ -const maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 - -/** Bootstring parameters */ -const base = 36; -const tMin = 1; -const tMax = 26; -const skew = 38; -const damp = 700; -const initialBias = 72; -const initialN = 128; // 0x80 -const delimiter = '-'; // '\x2D' - -/** Regular expressions */ -const regexPunycode = /^xn--/; -const regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars -const regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators - -/** Error messages */ -const errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' -}; - -/** Convenience shortcuts */ -const baseMinusTMin = base - tMin; -const floor = Math.floor; -const stringFromCharCode = String.fromCharCode; - -/*--------------------------------------------------------------------------*/ - -/** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ -function error(type) { - throw new RangeError(errors[type]); -} - -/** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ -function map(array, fn) { - const result = []; - let length = array.length; - while (length--) { - result[length] = fn(array[length]); - } - return result; -} - -/** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ -function mapDomain(string, fn) { - const parts = string.split('@'); - let result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - const labels = string.split('.'); - const encoded = map(labels, fn).join('.'); - return result + encoded; -} - -/** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ -function ucs2decode(string) { - const output = []; - let counter = 0; - const length = string.length; - while (counter < length) { - const value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // It's a high surrogate, and there is a next character. - const extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // Low surrogate. - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // It's an unmatched surrogate; only append this code unit, in case the - // next code unit is the high surrogate of a surrogate pair. - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; -} - -/** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ -const ucs2encode = array => String.fromCodePoint(...array); - -/** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ -const basicToDigit = function(codePoint) { - if (codePoint - 0x30 < 0x0A) { - return codePoint - 0x16; - } - if (codePoint - 0x41 < 0x1A) { - return codePoint - 0x41; - } - if (codePoint - 0x61 < 0x1A) { - return codePoint - 0x61; - } - return base; -}; - -/** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ -const digitToBasic = function(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); -}; - -/** - * Bias adaptation function as per section 3.4 of RFC 3492. - * https://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ -const adapt = function(delta, numPoints, firstTime) { - let k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); -}; - -/** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ -const decode = function(input) { - // Don't use UCS-2. - const output = []; - const inputLength = input.length; - let i = 0; - let n = initialN; - let bias = initialBias; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - let basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (let j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - let oldi = i; - for (let w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - const digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - const baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - const out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output. - output.splice(i++, 0, n); - - } - - return String.fromCodePoint(...output); -}; - -/** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ -const encode = function(input) { - const output = []; - - // Convert the input in UCS-2 to an array of Unicode code points. - input = ucs2decode(input); - - // Cache the length. - let inputLength = input.length; - - // Initialize the state. - let n = initialN; - let delta = 0; - let bias = initialBias; - - // Handle the basic code points. - for (const currentValue of input) { - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - let basicLength = output.length; - let handledCPCount = basicLength; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string with a delimiter unless it's empty. - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - let m = maxInt; - for (const currentValue of input) { - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow. - const handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (const currentValue of input) { - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - if (currentValue == n) { - // Represent delta as a generalized variable-length integer. - let q = delta; - for (let k = base; /* no condition */; k += base) { - const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - const qMinusT = q - t; - const baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); -}; - -/** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ -const toUnicode = function(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); -}; - -/** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ -const toASCII = function(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); -}; - -/*--------------------------------------------------------------------------*/ - -/** Define the public API */ -const punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '2.1.0', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode -}; - -module.exports = punycode; diff --git a/node_modules/qs/.editorconfig b/node_modules/qs/.editorconfig deleted file mode 100644 index b2654e7..0000000 --- a/node_modules/qs/.editorconfig +++ /dev/null @@ -1,30 +0,0 @@ -root = true - -[*] -indent_style = space -indent_size = 4 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true -max_line_length = 140 - -[test/*] -max_line_length = off - -[*.md] -max_line_length = off - -[*.json] -max_line_length = off - -[Makefile] -max_line_length = off - -[CHANGELOG.md] -indent_style = space -indent_size = 2 - -[LICENSE] -indent_size = 2 -max_line_length = off diff --git a/node_modules/qs/.eslintignore b/node_modules/qs/.eslintignore deleted file mode 100644 index 1521c8b..0000000 --- a/node_modules/qs/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -dist diff --git a/node_modules/qs/.eslintrc b/node_modules/qs/.eslintrc deleted file mode 100644 index b7a87b9..0000000 --- a/node_modules/qs/.eslintrc +++ /dev/null @@ -1,19 +0,0 @@ -{ - "root": true, - - "extends": "@ljharb", - - "rules": { - "complexity": 0, - "consistent-return": 1, - "func-name-matching": 0, - "id-length": [2, { "min": 1, "max": 25, "properties": "never" }], - "indent": [2, 4], - "max-params": [2, 12], - "max-statements": [2, 45], - "no-continue": 1, - "no-magic-numbers": 0, - "no-restricted-syntax": [2, "BreakStatement", "DebuggerStatement", "ForInStatement", "LabeledStatement", "WithStatement"], - "operator-linebreak": [2, "before"], - } -} diff --git a/node_modules/qs/CHANGELOG.md b/node_modules/qs/CHANGELOG.md deleted file mode 100644 index fe52320..0000000 --- a/node_modules/qs/CHANGELOG.md +++ /dev/null @@ -1,226 +0,0 @@ -## **6.5.2** -- [Fix] use `safer-buffer` instead of `Buffer` constructor -- [Refactor] utils: `module.exports` one thing, instead of mutating `exports` (#230) -- [Dev Deps] update `browserify`, `eslint`, `iconv-lite`, `safer-buffer`, `tape`, `browserify` - -## **6.5.1** -- [Fix] Fix parsing & compacting very deep objects (#224) -- [Refactor] name utils functions -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` -- [Tests] up to `node` `v8.4`; use `nvm install-latest-npm` so newer npm doesn’t break older node -- [Tests] Use precise dist for Node.js 0.6 runtime (#225) -- [Tests] make 0.6 required, now that it’s passing -- [Tests] on `node` `v8.2`; fix npm on node 0.6 - -## **6.5.0** -- [New] add `utils.assign` -- [New] pass default encoder/decoder to custom encoder/decoder functions (#206) -- [New] `parse`/`stringify`: add `ignoreQueryPrefix`/`addQueryPrefix` options, respectively (#213) -- [Fix] Handle stringifying empty objects with addQueryPrefix (#217) -- [Fix] do not mutate `options` argument (#207) -- [Refactor] `parse`: cache index to reuse in else statement (#182) -- [Docs] add various badges to readme (#208) -- [Dev Deps] update `eslint`, `browserify`, `iconv-lite`, `tape` -- [Tests] up to `node` `v8.1`, `v7.10`, `v6.11`; npm v4.6 breaks on node < v1; npm v5+ breaks on node < v4 -- [Tests] add `editorconfig-tools` - -## **6.4.0** -- [New] `qs.stringify`: add `encodeValuesOnly` option -- [Fix] follow `allowPrototypes` option during merge (#201, #201) -- [Fix] support keys starting with brackets (#202, #200) -- [Fix] chmod a-x -- [Dev Deps] update `eslint` -- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds -- [eslint] reduce warnings - -## **6.3.2** -- [Fix] follow `allowPrototypes` option during merge (#201, #200) -- [Dev Deps] update `eslint` -- [Fix] chmod a-x -- [Fix] support keys starting with brackets (#202, #200) -- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds - -## **6.3.1** -- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties (thanks, @snyk!) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `browserify`, `iconv-lite`, `qs-iconv`, `tape` -- [Tests] on all node minors; improve test matrix -- [Docs] document stringify option `allowDots` (#195) -- [Docs] add empty object and array values example (#195) -- [Docs] Fix minor inconsistency/typo (#192) -- [Docs] document stringify option `sort` (#191) -- [Refactor] `stringify`: throw faster with an invalid encoder -- [Refactor] remove unnecessary escapes (#184) -- Remove contributing.md, since `qs` is no longer part of `hapi` (#183) - -## **6.3.0** -- [New] Add support for RFC 1738 (#174, #173) -- [New] `stringify`: Add `serializeDate` option to customize Date serialization (#159) -- [Fix] ensure `utils.merge` handles merging two arrays -- [Refactor] only constructors should be capitalized -- [Refactor] capitalized var names are for constructors only -- [Refactor] avoid using a sparse array -- [Robustness] `formats`: cache `String#replace` -- [Dev Deps] update `browserify`, `eslint`, `@ljharb/eslint-config`; add `safe-publish-latest` -- [Tests] up to `node` `v6.8`, `v4.6`; improve test matrix -- [Tests] flesh out arrayLimit/arrayFormat tests (#107) -- [Tests] skip Object.create tests when null objects are not available -- [Tests] Turn on eslint for test files (#175) - -## **6.2.3** -- [Fix] follow `allowPrototypes` option during merge (#201, #200) -- [Fix] chmod a-x -- [Fix] support keys starting with brackets (#202, #200) -- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds - -## **6.2.2** -- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties - -## **6.2.1** -- [Fix] ensure `key[]=x&key[]&key[]=y` results in 3, not 2, values -- [Refactor] Be explicit and use `Object.prototype.hasOwnProperty.call` -- [Tests] remove `parallelshell` since it does not reliably report failures -- [Tests] up to `node` `v6.3`, `v5.12` -- [Dev Deps] update `tape`, `eslint`, `@ljharb/eslint-config`, `qs-iconv` - -## [**6.2.0**](https://github.com/ljharb/qs/issues?milestone=36&state=closed) -- [New] pass Buffers to the encoder/decoder directly (#161) -- [New] add "encoder" and "decoder" options, for custom param encoding/decoding (#160) -- [Fix] fix compacting of nested sparse arrays (#150) - -## **6.1.2 -- [Fix] follow `allowPrototypes` option during merge (#201, #200) -- [Fix] chmod a-x -- [Fix] support keys starting with brackets (#202, #200) -- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds - -## **6.1.1** -- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties - -## [**6.1.0**](https://github.com/ljharb/qs/issues?milestone=35&state=closed) -- [New] allowDots option for `stringify` (#151) -- [Fix] "sort" option should work at a depth of 3 or more (#151) -- [Fix] Restore `dist` directory; will be removed in v7 (#148) - -## **6.0.4** -- [Fix] follow `allowPrototypes` option during merge (#201, #200) -- [Fix] chmod a-x -- [Fix] support keys starting with brackets (#202, #200) -- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds - -## **6.0.3** -- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties -- [Fix] Restore `dist` directory; will be removed in v7 (#148) - -## [**6.0.2**](https://github.com/ljharb/qs/issues?milestone=33&state=closed) -- Revert ES6 requirement and restore support for node down to v0.8. - -## [**6.0.1**](https://github.com/ljharb/qs/issues?milestone=32&state=closed) -- [**#127**](https://github.com/ljharb/qs/pull/127) Fix engines definition in package.json - -## [**6.0.0**](https://github.com/ljharb/qs/issues?milestone=31&state=closed) -- [**#124**](https://github.com/ljharb/qs/issues/124) Use ES6 and drop support for node < v4 - -## **5.2.1** -- [Fix] ensure `key[]=x&key[]&key[]=y` results in 3, not 2, values - -## [**5.2.0**](https://github.com/ljharb/qs/issues?milestone=30&state=closed) -- [**#64**](https://github.com/ljharb/qs/issues/64) Add option to sort object keys in the query string - -## [**5.1.0**](https://github.com/ljharb/qs/issues?milestone=29&state=closed) -- [**#117**](https://github.com/ljharb/qs/issues/117) make URI encoding stringified results optional -- [**#106**](https://github.com/ljharb/qs/issues/106) Add flag `skipNulls` to optionally skip null values in stringify - -## [**5.0.0**](https://github.com/ljharb/qs/issues?milestone=28&state=closed) -- [**#114**](https://github.com/ljharb/qs/issues/114) default allowDots to false -- [**#100**](https://github.com/ljharb/qs/issues/100) include dist to npm - -## [**4.0.0**](https://github.com/ljharb/qs/issues?milestone=26&state=closed) -- [**#98**](https://github.com/ljharb/qs/issues/98) make returning plain objects and allowing prototype overwriting properties optional - -## [**3.1.0**](https://github.com/ljharb/qs/issues?milestone=24&state=closed) -- [**#89**](https://github.com/ljharb/qs/issues/89) Add option to disable "Transform dot notation to bracket notation" - -## [**3.0.0**](https://github.com/ljharb/qs/issues?milestone=23&state=closed) -- [**#80**](https://github.com/ljharb/qs/issues/80) qs.parse silently drops properties -- [**#77**](https://github.com/ljharb/qs/issues/77) Perf boost -- [**#60**](https://github.com/ljharb/qs/issues/60) Add explicit option to disable array parsing -- [**#74**](https://github.com/ljharb/qs/issues/74) Bad parse when turning array into object -- [**#81**](https://github.com/ljharb/qs/issues/81) Add a `filter` option -- [**#68**](https://github.com/ljharb/qs/issues/68) Fixed issue with recursion and passing strings into objects. -- [**#66**](https://github.com/ljharb/qs/issues/66) Add mixed array and object dot notation support Closes: #47 -- [**#76**](https://github.com/ljharb/qs/issues/76) RFC 3986 -- [**#85**](https://github.com/ljharb/qs/issues/85) No equal sign -- [**#84**](https://github.com/ljharb/qs/issues/84) update license attribute - -## [**2.4.1**](https://github.com/ljharb/qs/issues?milestone=20&state=closed) -- [**#73**](https://github.com/ljharb/qs/issues/73) Property 'hasOwnProperty' of object # is not a function - -## [**2.4.0**](https://github.com/ljharb/qs/issues?milestone=19&state=closed) -- [**#70**](https://github.com/ljharb/qs/issues/70) Add arrayFormat option - -## [**2.3.3**](https://github.com/ljharb/qs/issues?milestone=18&state=closed) -- [**#59**](https://github.com/ljharb/qs/issues/59) make sure array indexes are >= 0, closes #57 -- [**#58**](https://github.com/ljharb/qs/issues/58) make qs usable for browser loader - -## [**2.3.2**](https://github.com/ljharb/qs/issues?milestone=17&state=closed) -- [**#55**](https://github.com/ljharb/qs/issues/55) allow merging a string into an object - -## [**2.3.1**](https://github.com/ljharb/qs/issues?milestone=16&state=closed) -- [**#52**](https://github.com/ljharb/qs/issues/52) Return "undefined" and "false" instead of throwing "TypeError". - -## [**2.3.0**](https://github.com/ljharb/qs/issues?milestone=15&state=closed) -- [**#50**](https://github.com/ljharb/qs/issues/50) add option to omit array indices, closes #46 - -## [**2.2.5**](https://github.com/ljharb/qs/issues?milestone=14&state=closed) -- [**#39**](https://github.com/ljharb/qs/issues/39) Is there an alternative to Buffer.isBuffer? -- [**#49**](https://github.com/ljharb/qs/issues/49) refactor utils.merge, fixes #45 -- [**#41**](https://github.com/ljharb/qs/issues/41) avoid browserifying Buffer, for #39 - -## [**2.2.4**](https://github.com/ljharb/qs/issues?milestone=13&state=closed) -- [**#38**](https://github.com/ljharb/qs/issues/38) how to handle object keys beginning with a number - -## [**2.2.3**](https://github.com/ljharb/qs/issues?milestone=12&state=closed) -- [**#37**](https://github.com/ljharb/qs/issues/37) parser discards first empty value in array -- [**#36**](https://github.com/ljharb/qs/issues/36) Update to lab 4.x - -## [**2.2.2**](https://github.com/ljharb/qs/issues?milestone=11&state=closed) -- [**#33**](https://github.com/ljharb/qs/issues/33) Error when plain object in a value -- [**#34**](https://github.com/ljharb/qs/issues/34) use Object.prototype.hasOwnProperty.call instead of obj.hasOwnProperty -- [**#24**](https://github.com/ljharb/qs/issues/24) Changelog? Semver? - -## [**2.2.1**](https://github.com/ljharb/qs/issues?milestone=10&state=closed) -- [**#32**](https://github.com/ljharb/qs/issues/32) account for circular references properly, closes #31 -- [**#31**](https://github.com/ljharb/qs/issues/31) qs.parse stackoverflow on circular objects - -## [**2.2.0**](https://github.com/ljharb/qs/issues?milestone=9&state=closed) -- [**#26**](https://github.com/ljharb/qs/issues/26) Don't use Buffer global if it's not present -- [**#30**](https://github.com/ljharb/qs/issues/30) Bug when merging non-object values into arrays -- [**#29**](https://github.com/ljharb/qs/issues/29) Don't call Utils.clone at the top of Utils.merge -- [**#23**](https://github.com/ljharb/qs/issues/23) Ability to not limit parameters? - -## [**2.1.0**](https://github.com/ljharb/qs/issues?milestone=8&state=closed) -- [**#22**](https://github.com/ljharb/qs/issues/22) Enable using a RegExp as delimiter - -## [**2.0.0**](https://github.com/ljharb/qs/issues?milestone=7&state=closed) -- [**#18**](https://github.com/ljharb/qs/issues/18) Why is there arrayLimit? -- [**#20**](https://github.com/ljharb/qs/issues/20) Configurable parametersLimit -- [**#21**](https://github.com/ljharb/qs/issues/21) make all limits optional, for #18, for #20 - -## [**1.2.2**](https://github.com/ljharb/qs/issues?milestone=6&state=closed) -- [**#19**](https://github.com/ljharb/qs/issues/19) Don't overwrite null values - -## [**1.2.1**](https://github.com/ljharb/qs/issues?milestone=5&state=closed) -- [**#16**](https://github.com/ljharb/qs/issues/16) ignore non-string delimiters -- [**#15**](https://github.com/ljharb/qs/issues/15) Close code block - -## [**1.2.0**](https://github.com/ljharb/qs/issues?milestone=4&state=closed) -- [**#12**](https://github.com/ljharb/qs/issues/12) Add optional delim argument -- [**#13**](https://github.com/ljharb/qs/issues/13) fix #11: flattened keys in array are now correctly parsed - -## [**1.1.0**](https://github.com/ljharb/qs/issues?milestone=3&state=closed) -- [**#7**](https://github.com/ljharb/qs/issues/7) Empty values of a POST array disappear after being submitted -- [**#9**](https://github.com/ljharb/qs/issues/9) Should not omit equals signs (=) when value is null -- [**#6**](https://github.com/ljharb/qs/issues/6) Minor grammar fix in README - -## [**1.0.2**](https://github.com/ljharb/qs/issues?milestone=2&state=closed) -- [**#5**](https://github.com/ljharb/qs/issues/5) array holes incorrectly copied into object on large index diff --git a/node_modules/qs/LICENSE b/node_modules/qs/LICENSE deleted file mode 100644 index d456948..0000000 --- a/node_modules/qs/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2014 Nathan LaFreniere and other contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * The names of any contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - * * * - -The complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors diff --git a/node_modules/qs/README.md b/node_modules/qs/README.md deleted file mode 100644 index d811966..0000000 --- a/node_modules/qs/README.md +++ /dev/null @@ -1,475 +0,0 @@ -# qs [![Version Badge][2]][1] - -[![Build Status][3]][4] -[![dependency status][5]][6] -[![dev dependency status][7]][8] -[![License][license-image]][license-url] -[![Downloads][downloads-image]][downloads-url] - -[![npm badge][11]][1] - -A querystring parsing and stringifying library with some added security. - -Lead Maintainer: [Jordan Harband](https://github.com/ljharb) - -The **qs** module was originally created and maintained by [TJ Holowaychuk](https://github.com/visionmedia/node-querystring). - -## Usage - -```javascript -var qs = require('qs'); -var assert = require('assert'); - -var obj = qs.parse('a=c'); -assert.deepEqual(obj, { a: 'c' }); - -var str = qs.stringify(obj); -assert.equal(str, 'a=c'); -``` - -### Parsing Objects - -[](#preventEval) -```javascript -qs.parse(string, [options]); -``` - -**qs** allows you to create nested objects within your query strings, by surrounding the name of sub-keys with square brackets `[]`. -For example, the string `'foo[bar]=baz'` converts to: - -```javascript -assert.deepEqual(qs.parse('foo[bar]=baz'), { - foo: { - bar: 'baz' - } -}); -``` - -When using the `plainObjects` option the parsed value is returned as a null object, created via `Object.create(null)` and as such you should be aware that prototype methods will not exist on it and a user may set those names to whatever value they like: - -```javascript -var nullObject = qs.parse('a[hasOwnProperty]=b', { plainObjects: true }); -assert.deepEqual(nullObject, { a: { hasOwnProperty: 'b' } }); -``` - -By default parameters that would overwrite properties on the object prototype are ignored, if you wish to keep the data from those fields either use `plainObjects` as mentioned above, or set `allowPrototypes` to `true` which will allow user input to overwrite those properties. *WARNING* It is generally a bad idea to enable this option as it can cause problems when attempting to use the properties that have been overwritten. Always be careful with this option. - -```javascript -var protoObject = qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true }); -assert.deepEqual(protoObject, { a: { hasOwnProperty: 'b' } }); -``` - -URI encoded strings work too: - -```javascript -assert.deepEqual(qs.parse('a%5Bb%5D=c'), { - a: { b: 'c' } -}); -``` - -You can also nest your objects, like `'foo[bar][baz]=foobarbaz'`: - -```javascript -assert.deepEqual(qs.parse('foo[bar][baz]=foobarbaz'), { - foo: { - bar: { - baz: 'foobarbaz' - } - } -}); -``` - -By default, when nesting objects **qs** will only parse up to 5 children deep. This means if you attempt to parse a string like -`'a[b][c][d][e][f][g][h][i]=j'` your resulting object will be: - -```javascript -var expected = { - a: { - b: { - c: { - d: { - e: { - f: { - '[g][h][i]': 'j' - } - } - } - } - } - } -}; -var string = 'a[b][c][d][e][f][g][h][i]=j'; -assert.deepEqual(qs.parse(string), expected); -``` - -This depth can be overridden by passing a `depth` option to `qs.parse(string, [options])`: - -```javascript -var deep = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 }); -assert.deepEqual(deep, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }); -``` - -The depth limit helps mitigate abuse when **qs** is used to parse user input, and it is recommended to keep it a reasonably small number. - -For similar reasons, by default **qs** will only parse up to 1000 parameters. This can be overridden by passing a `parameterLimit` option: - -```javascript -var limited = qs.parse('a=b&c=d', { parameterLimit: 1 }); -assert.deepEqual(limited, { a: 'b' }); -``` - -To bypass the leading question mark, use `ignoreQueryPrefix`: - -```javascript -var prefixed = qs.parse('?a=b&c=d', { ignoreQueryPrefix: true }); -assert.deepEqual(prefixed, { a: 'b', c: 'd' }); -``` - -An optional delimiter can also be passed: - -```javascript -var delimited = qs.parse('a=b;c=d', { delimiter: ';' }); -assert.deepEqual(delimited, { a: 'b', c: 'd' }); -``` - -Delimiters can be a regular expression too: - -```javascript -var regexed = qs.parse('a=b;c=d,e=f', { delimiter: /[;,]/ }); -assert.deepEqual(regexed, { a: 'b', c: 'd', e: 'f' }); -``` - -Option `allowDots` can be used to enable dot notation: - -```javascript -var withDots = qs.parse('a.b=c', { allowDots: true }); -assert.deepEqual(withDots, { a: { b: 'c' } }); -``` - -### Parsing Arrays - -**qs** can also parse arrays using a similar `[]` notation: - -```javascript -var withArray = qs.parse('a[]=b&a[]=c'); -assert.deepEqual(withArray, { a: ['b', 'c'] }); -``` - -You may specify an index as well: - -```javascript -var withIndexes = qs.parse('a[1]=c&a[0]=b'); -assert.deepEqual(withIndexes, { a: ['b', 'c'] }); -``` - -Note that the only difference between an index in an array and a key in an object is that the value between the brackets must be a number -to create an array. When creating arrays with specific indices, **qs** will compact a sparse array to only the existing values preserving -their order: - -```javascript -var noSparse = qs.parse('a[1]=b&a[15]=c'); -assert.deepEqual(noSparse, { a: ['b', 'c'] }); -``` - -Note that an empty string is also a value, and will be preserved: - -```javascript -var withEmptyString = qs.parse('a[]=&a[]=b'); -assert.deepEqual(withEmptyString, { a: ['', 'b'] }); - -var withIndexedEmptyString = qs.parse('a[0]=b&a[1]=&a[2]=c'); -assert.deepEqual(withIndexedEmptyString, { a: ['b', '', 'c'] }); -``` - -**qs** will also limit specifying indices in an array to a maximum index of `20`. Any array members with an index of greater than `20` will -instead be converted to an object with the index as the key: - -```javascript -var withMaxIndex = qs.parse('a[100]=b'); -assert.deepEqual(withMaxIndex, { a: { '100': 'b' } }); -``` - -This limit can be overridden by passing an `arrayLimit` option: - -```javascript -var withArrayLimit = qs.parse('a[1]=b', { arrayLimit: 0 }); -assert.deepEqual(withArrayLimit, { a: { '1': 'b' } }); -``` - -To disable array parsing entirely, set `parseArrays` to `false`. - -```javascript -var noParsingArrays = qs.parse('a[]=b', { parseArrays: false }); -assert.deepEqual(noParsingArrays, { a: { '0': 'b' } }); -``` - -If you mix notations, **qs** will merge the two items into an object: - -```javascript -var mixedNotation = qs.parse('a[0]=b&a[b]=c'); -assert.deepEqual(mixedNotation, { a: { '0': 'b', b: 'c' } }); -``` - -You can also create arrays of objects: - -```javascript -var arraysOfObjects = qs.parse('a[][b]=c'); -assert.deepEqual(arraysOfObjects, { a: [{ b: 'c' }] }); -``` - -### Stringifying - -[](#preventEval) -```javascript -qs.stringify(object, [options]); -``` - -When stringifying, **qs** by default URI encodes output. Objects are stringified as you would expect: - -```javascript -assert.equal(qs.stringify({ a: 'b' }), 'a=b'); -assert.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c'); -``` - -This encoding can be disabled by setting the `encode` option to `false`: - -```javascript -var unencoded = qs.stringify({ a: { b: 'c' } }, { encode: false }); -assert.equal(unencoded, 'a[b]=c'); -``` - -Encoding can be disabled for keys by setting the `encodeValuesOnly` option to `true`: -```javascript -var encodedValues = qs.stringify( - { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, - { encodeValuesOnly: true } -); -assert.equal(encodedValues,'a=b&c[0]=d&c[1]=e%3Df&f[0][0]=g&f[1][0]=h'); -``` - -This encoding can also be replaced by a custom encoding method set as `encoder` option: - -```javascript -var encoded = qs.stringify({ a: { b: 'c' } }, { encoder: function (str) { - // Passed in values `a`, `b`, `c` - return // Return encoded string -}}) -``` - -_(Note: the `encoder` option does not apply if `encode` is `false`)_ - -Analogue to the `encoder` there is a `decoder` option for `parse` to override decoding of properties and values: - -```javascript -var decoded = qs.parse('x=z', { decoder: function (str) { - // Passed in values `x`, `z` - return // Return decoded string -}}) -``` - -Examples beyond this point will be shown as though the output is not URI encoded for clarity. Please note that the return values in these cases *will* be URI encoded during real usage. - -When arrays are stringified, by default they are given explicit indices: - -```javascript -qs.stringify({ a: ['b', 'c', 'd'] }); -// 'a[0]=b&a[1]=c&a[2]=d' -``` - -You may override this by setting the `indices` option to `false`: - -```javascript -qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }); -// 'a=b&a=c&a=d' -``` - -You may use the `arrayFormat` option to specify the format of the output array: - -```javascript -qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }) -// 'a[0]=b&a[1]=c' -qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }) -// 'a[]=b&a[]=c' -qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }) -// 'a=b&a=c' -``` - -When objects are stringified, by default they use bracket notation: - -```javascript -qs.stringify({ a: { b: { c: 'd', e: 'f' } } }); -// 'a[b][c]=d&a[b][e]=f' -``` - -You may override this to use dot notation by setting the `allowDots` option to `true`: - -```javascript -qs.stringify({ a: { b: { c: 'd', e: 'f' } } }, { allowDots: true }); -// 'a.b.c=d&a.b.e=f' -``` - -Empty strings and null values will omit the value, but the equals sign (=) remains in place: - -```javascript -assert.equal(qs.stringify({ a: '' }), 'a='); -``` - -Key with no values (such as an empty object or array) will return nothing: - -```javascript -assert.equal(qs.stringify({ a: [] }), ''); -assert.equal(qs.stringify({ a: {} }), ''); -assert.equal(qs.stringify({ a: [{}] }), ''); -assert.equal(qs.stringify({ a: { b: []} }), ''); -assert.equal(qs.stringify({ a: { b: {}} }), ''); -``` - -Properties that are set to `undefined` will be omitted entirely: - -```javascript -assert.equal(qs.stringify({ a: null, b: undefined }), 'a='); -``` - -The query string may optionally be prepended with a question mark: - -```javascript -assert.equal(qs.stringify({ a: 'b', c: 'd' }, { addQueryPrefix: true }), '?a=b&c=d'); -``` - -The delimiter may be overridden with stringify as well: - -```javascript -assert.equal(qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }), 'a=b;c=d'); -``` - -If you only want to override the serialization of `Date` objects, you can provide a `serializeDate` option: - -```javascript -var date = new Date(7); -assert.equal(qs.stringify({ a: date }), 'a=1970-01-01T00:00:00.007Z'.replace(/:/g, '%3A')); -assert.equal( - qs.stringify({ a: date }, { serializeDate: function (d) { return d.getTime(); } }), - 'a=7' -); -``` - -You may use the `sort` option to affect the order of parameter keys: - -```javascript -function alphabeticalSort(a, b) { - return a.localeCompare(b); -} -assert.equal(qs.stringify({ a: 'c', z: 'y', b : 'f' }, { sort: alphabeticalSort }), 'a=c&b=f&z=y'); -``` - -Finally, you can use the `filter` option to restrict which keys will be included in the stringified output. -If you pass a function, it will be called for each key to obtain the replacement value. Otherwise, if you -pass an array, it will be used to select properties and array indices for stringification: - -```javascript -function filterFunc(prefix, value) { - if (prefix == 'b') { - // Return an `undefined` value to omit a property. - return; - } - if (prefix == 'e[f]') { - return value.getTime(); - } - if (prefix == 'e[g][0]') { - return value * 2; - } - return value; -} -qs.stringify({ a: 'b', c: 'd', e: { f: new Date(123), g: [2] } }, { filter: filterFunc }); -// 'a=b&c=d&e[f]=123&e[g][0]=4' -qs.stringify({ a: 'b', c: 'd', e: 'f' }, { filter: ['a', 'e'] }); -// 'a=b&e=f' -qs.stringify({ a: ['b', 'c', 'd'], e: 'f' }, { filter: ['a', 0, 2] }); -// 'a[0]=b&a[2]=d' -``` - -### Handling of `null` values - -By default, `null` values are treated like empty strings: - -```javascript -var withNull = qs.stringify({ a: null, b: '' }); -assert.equal(withNull, 'a=&b='); -``` - -Parsing does not distinguish between parameters with and without equal signs. Both are converted to empty strings. - -```javascript -var equalsInsensitive = qs.parse('a&b='); -assert.deepEqual(equalsInsensitive, { a: '', b: '' }); -``` - -To distinguish between `null` values and empty strings use the `strictNullHandling` flag. In the result string the `null` -values have no `=` sign: - -```javascript -var strictNull = qs.stringify({ a: null, b: '' }, { strictNullHandling: true }); -assert.equal(strictNull, 'a&b='); -``` - -To parse values without `=` back to `null` use the `strictNullHandling` flag: - -```javascript -var parsedStrictNull = qs.parse('a&b=', { strictNullHandling: true }); -assert.deepEqual(parsedStrictNull, { a: null, b: '' }); -``` - -To completely skip rendering keys with `null` values, use the `skipNulls` flag: - -```javascript -var nullsSkipped = qs.stringify({ a: 'b', c: null}, { skipNulls: true }); -assert.equal(nullsSkipped, 'a=b'); -``` - -### Dealing with special character sets - -By default the encoding and decoding of characters is done in `utf-8`. If you -wish to encode querystrings to a different character set (i.e. -[Shift JIS](https://en.wikipedia.org/wiki/Shift_JIS)) you can use the -[`qs-iconv`](https://github.com/martinheidegger/qs-iconv) library: - -```javascript -var encoder = require('qs-iconv/encoder')('shift_jis'); -var shiftJISEncoded = qs.stringify({ a: 'こんにちは!' }, { encoder: encoder }); -assert.equal(shiftJISEncoded, 'a=%82%B1%82%F1%82%C9%82%BF%82%CD%81I'); -``` - -This also works for decoding of query strings: - -```javascript -var decoder = require('qs-iconv/decoder')('shift_jis'); -var obj = qs.parse('a=%82%B1%82%F1%82%C9%82%BF%82%CD%81I', { decoder: decoder }); -assert.deepEqual(obj, { a: 'こんにちは!' }); -``` - -### RFC 3986 and RFC 1738 space encoding - -RFC3986 used as default option and encodes ' ' to *%20* which is backward compatible. -In the same time, output can be stringified as per RFC1738 with ' ' equal to '+'. - -``` -assert.equal(qs.stringify({ a: 'b c' }), 'a=b%20c'); -assert.equal(qs.stringify({ a: 'b c' }, { format : 'RFC3986' }), 'a=b%20c'); -assert.equal(qs.stringify({ a: 'b c' }, { format : 'RFC1738' }), 'a=b+c'); -``` - -[1]: https://npmjs.org/package/qs -[2]: http://versionbadg.es/ljharb/qs.svg -[3]: https://api.travis-ci.org/ljharb/qs.svg -[4]: https://travis-ci.org/ljharb/qs -[5]: https://david-dm.org/ljharb/qs.svg -[6]: https://david-dm.org/ljharb/qs -[7]: https://david-dm.org/ljharb/qs/dev-status.svg -[8]: https://david-dm.org/ljharb/qs?type=dev -[9]: https://ci.testling.com/ljharb/qs.png -[10]: https://ci.testling.com/ljharb/qs -[11]: https://nodei.co/npm/qs.png?downloads=true&stars=true -[license-image]: http://img.shields.io/npm/l/qs.svg -[license-url]: LICENSE -[downloads-image]: http://img.shields.io/npm/dm/qs.svg -[downloads-url]: http://npm-stat.com/charts.html?package=qs diff --git a/node_modules/qs/dist/qs.js b/node_modules/qs/dist/qs.js deleted file mode 100644 index ecf7ba4..0000000 --- a/node_modules/qs/dist/qs.js +++ /dev/null @@ -1,638 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Qs = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i= 0; --i) { - var obj; - var root = chain[i]; - - if (root === '[]') { - obj = []; - obj = obj.concat(leaf); - } else { - obj = options.plainObjects ? Object.create(null) : {}; - var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; - var index = parseInt(cleanRoot, 10); - if ( - !isNaN(index) - && root !== cleanRoot - && String(index) === cleanRoot - && index >= 0 - && (options.parseArrays && index <= options.arrayLimit) - ) { - obj = []; - obj[index] = leaf; - } else { - obj[cleanRoot] = leaf; - } - } - - leaf = obj; - } - - return leaf; -}; - -var parseKeys = function parseQueryStringKeys(givenKey, val, options) { - if (!givenKey) { - return; - } - - // Transform dot notation to bracket notation - var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; - - // The regex chunks - - var brackets = /(\[[^[\]]*])/; - var child = /(\[[^[\]]*])/g; - - // Get the parent - - var segment = brackets.exec(key); - var parent = segment ? key.slice(0, segment.index) : key; - - // Stash the parent if it exists - - var keys = []; - if (parent) { - // If we aren't using plain objects, optionally prefix keys - // that would overwrite object prototype properties - if (!options.plainObjects && has.call(Object.prototype, parent)) { - if (!options.allowPrototypes) { - return; - } - } - - keys.push(parent); - } - - // Loop through children appending to the array until we hit depth - - var i = 0; - while ((segment = child.exec(key)) !== null && i < options.depth) { - i += 1; - if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { - if (!options.allowPrototypes) { - return; - } - } - keys.push(segment[1]); - } - - // If there's a remainder, just add whatever is left - - if (segment) { - keys.push('[' + key.slice(segment.index) + ']'); - } - - return parseObject(keys, val, options); -}; - -module.exports = function (str, opts) { - var options = opts ? utils.assign({}, opts) : {}; - - if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') { - throw new TypeError('Decoder has to be a function.'); - } - - options.ignoreQueryPrefix = options.ignoreQueryPrefix === true; - options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter; - options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth; - options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit; - options.parseArrays = options.parseArrays !== false; - options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder; - options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots; - options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects; - options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes; - options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit; - options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling; - - if (str === '' || str === null || typeof str === 'undefined') { - return options.plainObjects ? Object.create(null) : {}; - } - - var tempObj = typeof str === 'string' ? parseValues(str, options) : str; - var obj = options.plainObjects ? Object.create(null) : {}; - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var newObj = parseKeys(key, tempObj[key], options); - obj = utils.merge(obj, newObj, options); - } - - return utils.compact(obj); -}; - -},{"./utils":5}],4:[function(require,module,exports){ -'use strict'; - -var utils = require('./utils'); -var formats = require('./formats'); - -var arrayPrefixGenerators = { - brackets: function brackets(prefix) { // eslint-disable-line func-name-matching - return prefix + '[]'; - }, - indices: function indices(prefix, key) { // eslint-disable-line func-name-matching - return prefix + '[' + key + ']'; - }, - repeat: function repeat(prefix) { // eslint-disable-line func-name-matching - return prefix; - } -}; - -var toISO = Date.prototype.toISOString; - -var defaults = { - delimiter: '&', - encode: true, - encoder: utils.encode, - encodeValuesOnly: false, - serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching - return toISO.call(date); - }, - skipNulls: false, - strictNullHandling: false -}; - -var stringify = function stringify( // eslint-disable-line func-name-matching - object, - prefix, - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - formatter, - encodeValuesOnly -) { - var obj = object; - if (typeof filter === 'function') { - obj = filter(prefix, obj); - } else if (obj instanceof Date) { - obj = serializeDate(obj); - } else if (obj === null) { - if (strictNullHandling) { - return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix; - } - - obj = ''; - } - - if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) { - if (encoder) { - var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder); - return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))]; - } - return [formatter(prefix) + '=' + formatter(String(obj))]; - } - - var values = []; - - if (typeof obj === 'undefined') { - return values; - } - - var objKeys; - if (Array.isArray(filter)) { - objKeys = filter; - } else { - var keys = Object.keys(obj); - objKeys = sort ? keys.sort(sort) : keys; - } - - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; - - if (skipNulls && obj[key] === null) { - continue; - } - - if (Array.isArray(obj)) { - values = values.concat(stringify( - obj[key], - generateArrayPrefix(prefix, key), - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - formatter, - encodeValuesOnly - )); - } else { - values = values.concat(stringify( - obj[key], - prefix + (allowDots ? '.' + key : '[' + key + ']'), - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - formatter, - encodeValuesOnly - )); - } - } - - return values; -}; - -module.exports = function (object, opts) { - var obj = object; - var options = opts ? utils.assign({}, opts) : {}; - - if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') { - throw new TypeError('Encoder has to be a function.'); - } - - var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter; - var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling; - var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls; - var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode; - var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder; - var sort = typeof options.sort === 'function' ? options.sort : null; - var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots; - var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate; - var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly; - if (typeof options.format === 'undefined') { - options.format = formats['default']; - } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) { - throw new TypeError('Unknown format option provided.'); - } - var formatter = formats.formatters[options.format]; - var objKeys; - var filter; - - if (typeof options.filter === 'function') { - filter = options.filter; - obj = filter('', obj); - } else if (Array.isArray(options.filter)) { - filter = options.filter; - objKeys = filter; - } - - var keys = []; - - if (typeof obj !== 'object' || obj === null) { - return ''; - } - - var arrayFormat; - if (options.arrayFormat in arrayPrefixGenerators) { - arrayFormat = options.arrayFormat; - } else if ('indices' in options) { - arrayFormat = options.indices ? 'indices' : 'repeat'; - } else { - arrayFormat = 'indices'; - } - - var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; - - if (!objKeys) { - objKeys = Object.keys(obj); - } - - if (sort) { - objKeys.sort(sort); - } - - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; - - if (skipNulls && obj[key] === null) { - continue; - } - - keys = keys.concat(stringify( - obj[key], - key, - generateArrayPrefix, - strictNullHandling, - skipNulls, - encode ? encoder : null, - filter, - sort, - allowDots, - serializeDate, - formatter, - encodeValuesOnly - )); - } - - var joined = keys.join(delimiter); - var prefix = options.addQueryPrefix === true ? '?' : ''; - - return joined.length > 0 ? prefix + joined : ''; -}; - -},{"./formats":1,"./utils":5}],5:[function(require,module,exports){ -'use strict'; - -var has = Object.prototype.hasOwnProperty; - -var hexTable = (function () { - var array = []; - for (var i = 0; i < 256; ++i) { - array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); - } - - return array; -}()); - -var compactQueue = function compactQueue(queue) { - var obj; - - while (queue.length) { - var item = queue.pop(); - obj = item.obj[item.prop]; - - if (Array.isArray(obj)) { - var compacted = []; - - for (var j = 0; j < obj.length; ++j) { - if (typeof obj[j] !== 'undefined') { - compacted.push(obj[j]); - } - } - - item.obj[item.prop] = compacted; - } - } - - return obj; -}; - -var arrayToObject = function arrayToObject(source, options) { - var obj = options && options.plainObjects ? Object.create(null) : {}; - for (var i = 0; i < source.length; ++i) { - if (typeof source[i] !== 'undefined') { - obj[i] = source[i]; - } - } - - return obj; -}; - -var merge = function merge(target, source, options) { - if (!source) { - return target; - } - - if (typeof source !== 'object') { - if (Array.isArray(target)) { - target.push(source); - } else if (typeof target === 'object') { - if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) { - target[source] = true; - } - } else { - return [target, source]; - } - - return target; - } - - if (typeof target !== 'object') { - return [target].concat(source); - } - - var mergeTarget = target; - if (Array.isArray(target) && !Array.isArray(source)) { - mergeTarget = arrayToObject(target, options); - } - - if (Array.isArray(target) && Array.isArray(source)) { - source.forEach(function (item, i) { - if (has.call(target, i)) { - if (target[i] && typeof target[i] === 'object') { - target[i] = merge(target[i], item, options); - } else { - target.push(item); - } - } else { - target[i] = item; - } - }); - return target; - } - - return Object.keys(source).reduce(function (acc, key) { - var value = source[key]; - - if (has.call(acc, key)) { - acc[key] = merge(acc[key], value, options); - } else { - acc[key] = value; - } - return acc; - }, mergeTarget); -}; - -var assign = function assignSingleSource(target, source) { - return Object.keys(source).reduce(function (acc, key) { - acc[key] = source[key]; - return acc; - }, target); -}; - -var decode = function (str) { - try { - return decodeURIComponent(str.replace(/\+/g, ' ')); - } catch (e) { - return str; - } -}; - -var encode = function encode(str) { - // This code was originally written by Brian White (mscdex) for the io.js core querystring library. - // It has been adapted here for stricter adherence to RFC 3986 - if (str.length === 0) { - return str; - } - - var string = typeof str === 'string' ? str : String(str); - - var out = ''; - for (var i = 0; i < string.length; ++i) { - var c = string.charCodeAt(i); - - if ( - c === 0x2D // - - || c === 0x2E // . - || c === 0x5F // _ - || c === 0x7E // ~ - || (c >= 0x30 && c <= 0x39) // 0-9 - || (c >= 0x41 && c <= 0x5A) // a-z - || (c >= 0x61 && c <= 0x7A) // A-Z - ) { - out += string.charAt(i); - continue; - } - - if (c < 0x80) { - out = out + hexTable[c]; - continue; - } - - if (c < 0x800) { - out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } - - if (c < 0xD800 || c >= 0xE000) { - out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } - - i += 1; - c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); - out += hexTable[0xF0 | (c >> 18)] - + hexTable[0x80 | ((c >> 12) & 0x3F)] - + hexTable[0x80 | ((c >> 6) & 0x3F)] - + hexTable[0x80 | (c & 0x3F)]; - } - - return out; -}; - -var compact = function compact(value) { - var queue = [{ obj: { o: value }, prop: 'o' }]; - var refs = []; - - for (var i = 0; i < queue.length; ++i) { - var item = queue[i]; - var obj = item.obj[item.prop]; - - var keys = Object.keys(obj); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - var val = obj[key]; - if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { - queue.push({ obj: obj, prop: key }); - refs.push(val); - } - } - } - - return compactQueue(queue); -}; - -var isRegExp = function isRegExp(obj) { - return Object.prototype.toString.call(obj) === '[object RegExp]'; -}; - -var isBuffer = function isBuffer(obj) { - if (obj === null || typeof obj === 'undefined') { - return false; - } - - return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); -}; - -module.exports = { - arrayToObject: arrayToObject, - assign: assign, - compact: compact, - decode: decode, - encode: encode, - isBuffer: isBuffer, - isRegExp: isRegExp, - merge: merge -}; - -},{}]},{},[2])(2) -}); diff --git a/node_modules/qs/lib/formats.js b/node_modules/qs/lib/formats.js deleted file mode 100644 index df45997..0000000 --- a/node_modules/qs/lib/formats.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -var replace = String.prototype.replace; -var percentTwenties = /%20/g; - -module.exports = { - 'default': 'RFC3986', - formatters: { - RFC1738: function (value) { - return replace.call(value, percentTwenties, '+'); - }, - RFC3986: function (value) { - return value; - } - }, - RFC1738: 'RFC1738', - RFC3986: 'RFC3986' -}; diff --git a/node_modules/qs/lib/index.js b/node_modules/qs/lib/index.js deleted file mode 100644 index 0d6a97d..0000000 --- a/node_modules/qs/lib/index.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -var stringify = require('./stringify'); -var parse = require('./parse'); -var formats = require('./formats'); - -module.exports = { - formats: formats, - parse: parse, - stringify: stringify -}; diff --git a/node_modules/qs/lib/parse.js b/node_modules/qs/lib/parse.js deleted file mode 100644 index 8c9872e..0000000 --- a/node_modules/qs/lib/parse.js +++ /dev/null @@ -1,174 +0,0 @@ -'use strict'; - -var utils = require('./utils'); - -var has = Object.prototype.hasOwnProperty; - -var defaults = { - allowDots: false, - allowPrototypes: false, - arrayLimit: 20, - decoder: utils.decode, - delimiter: '&', - depth: 5, - parameterLimit: 1000, - plainObjects: false, - strictNullHandling: false -}; - -var parseValues = function parseQueryStringValues(str, options) { - var obj = {}; - var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; - var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; - var parts = cleanStr.split(options.delimiter, limit); - - for (var i = 0; i < parts.length; ++i) { - var part = parts[i]; - - var bracketEqualsPos = part.indexOf(']='); - var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; - - var key, val; - if (pos === -1) { - key = options.decoder(part, defaults.decoder); - val = options.strictNullHandling ? null : ''; - } else { - key = options.decoder(part.slice(0, pos), defaults.decoder); - val = options.decoder(part.slice(pos + 1), defaults.decoder); - } - if (has.call(obj, key)) { - obj[key] = [].concat(obj[key]).concat(val); - } else { - obj[key] = val; - } - } - - return obj; -}; - -var parseObject = function (chain, val, options) { - var leaf = val; - - for (var i = chain.length - 1; i >= 0; --i) { - var obj; - var root = chain[i]; - - if (root === '[]') { - obj = []; - obj = obj.concat(leaf); - } else { - obj = options.plainObjects ? Object.create(null) : {}; - var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; - var index = parseInt(cleanRoot, 10); - if ( - !isNaN(index) - && root !== cleanRoot - && String(index) === cleanRoot - && index >= 0 - && (options.parseArrays && index <= options.arrayLimit) - ) { - obj = []; - obj[index] = leaf; - } else { - obj[cleanRoot] = leaf; - } - } - - leaf = obj; - } - - return leaf; -}; - -var parseKeys = function parseQueryStringKeys(givenKey, val, options) { - if (!givenKey) { - return; - } - - // Transform dot notation to bracket notation - var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; - - // The regex chunks - - var brackets = /(\[[^[\]]*])/; - var child = /(\[[^[\]]*])/g; - - // Get the parent - - var segment = brackets.exec(key); - var parent = segment ? key.slice(0, segment.index) : key; - - // Stash the parent if it exists - - var keys = []; - if (parent) { - // If we aren't using plain objects, optionally prefix keys - // that would overwrite object prototype properties - if (!options.plainObjects && has.call(Object.prototype, parent)) { - if (!options.allowPrototypes) { - return; - } - } - - keys.push(parent); - } - - // Loop through children appending to the array until we hit depth - - var i = 0; - while ((segment = child.exec(key)) !== null && i < options.depth) { - i += 1; - if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { - if (!options.allowPrototypes) { - return; - } - } - keys.push(segment[1]); - } - - // If there's a remainder, just add whatever is left - - if (segment) { - keys.push('[' + key.slice(segment.index) + ']'); - } - - return parseObject(keys, val, options); -}; - -module.exports = function (str, opts) { - var options = opts ? utils.assign({}, opts) : {}; - - if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') { - throw new TypeError('Decoder has to be a function.'); - } - - options.ignoreQueryPrefix = options.ignoreQueryPrefix === true; - options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter; - options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth; - options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit; - options.parseArrays = options.parseArrays !== false; - options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder; - options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots; - options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects; - options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes; - options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit; - options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling; - - if (str === '' || str === null || typeof str === 'undefined') { - return options.plainObjects ? Object.create(null) : {}; - } - - var tempObj = typeof str === 'string' ? parseValues(str, options) : str; - var obj = options.plainObjects ? Object.create(null) : {}; - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var newObj = parseKeys(key, tempObj[key], options); - obj = utils.merge(obj, newObj, options); - } - - return utils.compact(obj); -}; diff --git a/node_modules/qs/lib/stringify.js b/node_modules/qs/lib/stringify.js deleted file mode 100644 index ab915ac..0000000 --- a/node_modules/qs/lib/stringify.js +++ /dev/null @@ -1,210 +0,0 @@ -'use strict'; - -var utils = require('./utils'); -var formats = require('./formats'); - -var arrayPrefixGenerators = { - brackets: function brackets(prefix) { // eslint-disable-line func-name-matching - return prefix + '[]'; - }, - indices: function indices(prefix, key) { // eslint-disable-line func-name-matching - return prefix + '[' + key + ']'; - }, - repeat: function repeat(prefix) { // eslint-disable-line func-name-matching - return prefix; - } -}; - -var toISO = Date.prototype.toISOString; - -var defaults = { - delimiter: '&', - encode: true, - encoder: utils.encode, - encodeValuesOnly: false, - serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching - return toISO.call(date); - }, - skipNulls: false, - strictNullHandling: false -}; - -var stringify = function stringify( // eslint-disable-line func-name-matching - object, - prefix, - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - formatter, - encodeValuesOnly -) { - var obj = object; - if (typeof filter === 'function') { - obj = filter(prefix, obj); - } else if (obj instanceof Date) { - obj = serializeDate(obj); - } else if (obj === null) { - if (strictNullHandling) { - return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix; - } - - obj = ''; - } - - if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) { - if (encoder) { - var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder); - return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))]; - } - return [formatter(prefix) + '=' + formatter(String(obj))]; - } - - var values = []; - - if (typeof obj === 'undefined') { - return values; - } - - var objKeys; - if (Array.isArray(filter)) { - objKeys = filter; - } else { - var keys = Object.keys(obj); - objKeys = sort ? keys.sort(sort) : keys; - } - - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; - - if (skipNulls && obj[key] === null) { - continue; - } - - if (Array.isArray(obj)) { - values = values.concat(stringify( - obj[key], - generateArrayPrefix(prefix, key), - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - formatter, - encodeValuesOnly - )); - } else { - values = values.concat(stringify( - obj[key], - prefix + (allowDots ? '.' + key : '[' + key + ']'), - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - formatter, - encodeValuesOnly - )); - } - } - - return values; -}; - -module.exports = function (object, opts) { - var obj = object; - var options = opts ? utils.assign({}, opts) : {}; - - if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') { - throw new TypeError('Encoder has to be a function.'); - } - - var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter; - var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling; - var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls; - var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode; - var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder; - var sort = typeof options.sort === 'function' ? options.sort : null; - var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots; - var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate; - var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly; - if (typeof options.format === 'undefined') { - options.format = formats['default']; - } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) { - throw new TypeError('Unknown format option provided.'); - } - var formatter = formats.formatters[options.format]; - var objKeys; - var filter; - - if (typeof options.filter === 'function') { - filter = options.filter; - obj = filter('', obj); - } else if (Array.isArray(options.filter)) { - filter = options.filter; - objKeys = filter; - } - - var keys = []; - - if (typeof obj !== 'object' || obj === null) { - return ''; - } - - var arrayFormat; - if (options.arrayFormat in arrayPrefixGenerators) { - arrayFormat = options.arrayFormat; - } else if ('indices' in options) { - arrayFormat = options.indices ? 'indices' : 'repeat'; - } else { - arrayFormat = 'indices'; - } - - var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; - - if (!objKeys) { - objKeys = Object.keys(obj); - } - - if (sort) { - objKeys.sort(sort); - } - - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; - - if (skipNulls && obj[key] === null) { - continue; - } - - keys = keys.concat(stringify( - obj[key], - key, - generateArrayPrefix, - strictNullHandling, - skipNulls, - encode ? encoder : null, - filter, - sort, - allowDots, - serializeDate, - formatter, - encodeValuesOnly - )); - } - - var joined = keys.join(delimiter); - var prefix = options.addQueryPrefix === true ? '?' : ''; - - return joined.length > 0 ? prefix + joined : ''; -}; diff --git a/node_modules/qs/lib/utils.js b/node_modules/qs/lib/utils.js deleted file mode 100644 index 8775a32..0000000 --- a/node_modules/qs/lib/utils.js +++ /dev/null @@ -1,213 +0,0 @@ -'use strict'; - -var has = Object.prototype.hasOwnProperty; - -var hexTable = (function () { - var array = []; - for (var i = 0; i < 256; ++i) { - array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); - } - - return array; -}()); - -var compactQueue = function compactQueue(queue) { - var obj; - - while (queue.length) { - var item = queue.pop(); - obj = item.obj[item.prop]; - - if (Array.isArray(obj)) { - var compacted = []; - - for (var j = 0; j < obj.length; ++j) { - if (typeof obj[j] !== 'undefined') { - compacted.push(obj[j]); - } - } - - item.obj[item.prop] = compacted; - } - } - - return obj; -}; - -var arrayToObject = function arrayToObject(source, options) { - var obj = options && options.plainObjects ? Object.create(null) : {}; - for (var i = 0; i < source.length; ++i) { - if (typeof source[i] !== 'undefined') { - obj[i] = source[i]; - } - } - - return obj; -}; - -var merge = function merge(target, source, options) { - if (!source) { - return target; - } - - if (typeof source !== 'object') { - if (Array.isArray(target)) { - target.push(source); - } else if (typeof target === 'object') { - if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) { - target[source] = true; - } - } else { - return [target, source]; - } - - return target; - } - - if (typeof target !== 'object') { - return [target].concat(source); - } - - var mergeTarget = target; - if (Array.isArray(target) && !Array.isArray(source)) { - mergeTarget = arrayToObject(target, options); - } - - if (Array.isArray(target) && Array.isArray(source)) { - source.forEach(function (item, i) { - if (has.call(target, i)) { - if (target[i] && typeof target[i] === 'object') { - target[i] = merge(target[i], item, options); - } else { - target.push(item); - } - } else { - target[i] = item; - } - }); - return target; - } - - return Object.keys(source).reduce(function (acc, key) { - var value = source[key]; - - if (has.call(acc, key)) { - acc[key] = merge(acc[key], value, options); - } else { - acc[key] = value; - } - return acc; - }, mergeTarget); -}; - -var assign = function assignSingleSource(target, source) { - return Object.keys(source).reduce(function (acc, key) { - acc[key] = source[key]; - return acc; - }, target); -}; - -var decode = function (str) { - try { - return decodeURIComponent(str.replace(/\+/g, ' ')); - } catch (e) { - return str; - } -}; - -var encode = function encode(str) { - // This code was originally written by Brian White (mscdex) for the io.js core querystring library. - // It has been adapted here for stricter adherence to RFC 3986 - if (str.length === 0) { - return str; - } - - var string = typeof str === 'string' ? str : String(str); - - var out = ''; - for (var i = 0; i < string.length; ++i) { - var c = string.charCodeAt(i); - - if ( - c === 0x2D // - - || c === 0x2E // . - || c === 0x5F // _ - || c === 0x7E // ~ - || (c >= 0x30 && c <= 0x39) // 0-9 - || (c >= 0x41 && c <= 0x5A) // a-z - || (c >= 0x61 && c <= 0x7A) // A-Z - ) { - out += string.charAt(i); - continue; - } - - if (c < 0x80) { - out = out + hexTable[c]; - continue; - } - - if (c < 0x800) { - out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } - - if (c < 0xD800 || c >= 0xE000) { - out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } - - i += 1; - c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); - out += hexTable[0xF0 | (c >> 18)] - + hexTable[0x80 | ((c >> 12) & 0x3F)] - + hexTable[0x80 | ((c >> 6) & 0x3F)] - + hexTable[0x80 | (c & 0x3F)]; - } - - return out; -}; - -var compact = function compact(value) { - var queue = [{ obj: { o: value }, prop: 'o' }]; - var refs = []; - - for (var i = 0; i < queue.length; ++i) { - var item = queue[i]; - var obj = item.obj[item.prop]; - - var keys = Object.keys(obj); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - var val = obj[key]; - if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { - queue.push({ obj: obj, prop: key }); - refs.push(val); - } - } - } - - return compactQueue(queue); -}; - -var isRegExp = function isRegExp(obj) { - return Object.prototype.toString.call(obj) === '[object RegExp]'; -}; - -var isBuffer = function isBuffer(obj) { - if (obj === null || typeof obj === 'undefined') { - return false; - } - - return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); -}; - -module.exports = { - arrayToObject: arrayToObject, - assign: assign, - compact: compact, - decode: decode, - encode: encode, - isBuffer: isBuffer, - isRegExp: isRegExp, - merge: merge -}; diff --git a/node_modules/qs/package.json b/node_modules/qs/package.json deleted file mode 100644 index 7330649..0000000 --- a/node_modules/qs/package.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "_from": "qs@~6.5.2", - "_id": "qs@6.5.2", - "_inBundle": false, - "_integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "_location": "/qs", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "qs@~6.5.2", - "name": "qs", - "escapedName": "qs", - "rawSpec": "~6.5.2", - "saveSpec": null, - "fetchSpec": "~6.5.2" - }, - "_requiredBy": [ - "/request" - ], - "_resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "_shasum": "cb3ae806e8740444584ef154ce8ee98d403f3e36", - "_spec": "qs@~6.5.2", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/request", - "bugs": { - "url": "https://github.com/ljharb/qs/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Jordan Harband", - "email": "ljharb@gmail.com", - "url": "http://ljharb.codes" - } - ], - "dependencies": {}, - "deprecated": false, - "description": "A querystring parser that supports nesting and arrays, with a depth limit", - "devDependencies": { - "@ljharb/eslint-config": "^12.2.1", - "browserify": "^16.2.0", - "covert": "^1.1.0", - "editorconfig-tools": "^0.1.1", - "eslint": "^4.19.1", - "evalmd": "^0.0.17", - "iconv-lite": "^0.4.21", - "mkdirp": "^0.5.1", - "qs-iconv": "^1.0.4", - "safe-publish-latest": "^1.1.1", - "safer-buffer": "^2.1.2", - "tape": "^4.9.0" - }, - "engines": { - "node": ">=0.6" - }, - "homepage": "https://github.com/ljharb/qs", - "keywords": [ - "querystring", - "qs" - ], - "license": "BSD-3-Clause", - "main": "lib/index.js", - "name": "qs", - "repository": { - "type": "git", - "url": "git+https://github.com/ljharb/qs.git" - }, - "scripts": { - "coverage": "covert test", - "dist": "mkdirp dist && browserify --standalone Qs lib/index.js > dist/qs.js", - "lint": "eslint lib/*.js test/*.js", - "prelint": "editorconfig-tools check * lib/* test/*", - "prepublish": "safe-publish-latest && npm run dist", - "pretest": "npm run --silent readme && npm run --silent lint", - "readme": "evalmd README.md", - "test": "npm run --silent coverage", - "tests-only": "node test" - }, - "version": "6.5.2" -} diff --git a/node_modules/qs/test/.eslintrc b/node_modules/qs/test/.eslintrc deleted file mode 100644 index 20175d6..0000000 --- a/node_modules/qs/test/.eslintrc +++ /dev/null @@ -1,15 +0,0 @@ -{ - "rules": { - "array-bracket-newline": 0, - "array-element-newline": 0, - "consistent-return": 2, - "max-lines": 0, - "max-nested-callbacks": [2, 3], - "max-statements": 0, - "no-buffer-constructor": 0, - "no-extend-native": 0, - "no-magic-numbers": 0, - "object-curly-newline": 0, - "sort-keys": 0 - } -} diff --git a/node_modules/qs/test/index.js b/node_modules/qs/test/index.js deleted file mode 100644 index 5e6bc8f..0000000 --- a/node_modules/qs/test/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -require('./parse'); - -require('./stringify'); - -require('./utils'); diff --git a/node_modules/qs/test/parse.js b/node_modules/qs/test/parse.js deleted file mode 100644 index 0f8fe45..0000000 --- a/node_modules/qs/test/parse.js +++ /dev/null @@ -1,574 +0,0 @@ -'use strict'; - -var test = require('tape'); -var qs = require('../'); -var utils = require('../lib/utils'); -var iconv = require('iconv-lite'); -var SaferBuffer = require('safer-buffer').Buffer; - -test('parse()', function (t) { - t.test('parses a simple string', function (st) { - st.deepEqual(qs.parse('0=foo'), { 0: 'foo' }); - st.deepEqual(qs.parse('foo=c++'), { foo: 'c ' }); - st.deepEqual(qs.parse('a[>=]=23'), { a: { '>=': '23' } }); - st.deepEqual(qs.parse('a[<=>]==23'), { a: { '<=>': '=23' } }); - st.deepEqual(qs.parse('a[==]=23'), { a: { '==': '23' } }); - st.deepEqual(qs.parse('foo', { strictNullHandling: true }), { foo: null }); - st.deepEqual(qs.parse('foo'), { foo: '' }); - st.deepEqual(qs.parse('foo='), { foo: '' }); - st.deepEqual(qs.parse('foo=bar'), { foo: 'bar' }); - st.deepEqual(qs.parse(' foo = bar = baz '), { ' foo ': ' bar = baz ' }); - st.deepEqual(qs.parse('foo=bar=baz'), { foo: 'bar=baz' }); - st.deepEqual(qs.parse('foo=bar&bar=baz'), { foo: 'bar', bar: 'baz' }); - st.deepEqual(qs.parse('foo2=bar2&baz2='), { foo2: 'bar2', baz2: '' }); - st.deepEqual(qs.parse('foo=bar&baz', { strictNullHandling: true }), { foo: 'bar', baz: null }); - st.deepEqual(qs.parse('foo=bar&baz'), { foo: 'bar', baz: '' }); - st.deepEqual(qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World'), { - cht: 'p3', - chd: 't:60,40', - chs: '250x100', - chl: 'Hello|World' - }); - st.end(); - }); - - t.test('allows enabling dot notation', function (st) { - st.deepEqual(qs.parse('a.b=c'), { 'a.b': 'c' }); - st.deepEqual(qs.parse('a.b=c', { allowDots: true }), { a: { b: 'c' } }); - st.end(); - }); - - t.deepEqual(qs.parse('a[b]=c'), { a: { b: 'c' } }, 'parses a single nested string'); - t.deepEqual(qs.parse('a[b][c]=d'), { a: { b: { c: 'd' } } }, 'parses a double nested string'); - t.deepEqual( - qs.parse('a[b][c][d][e][f][g][h]=i'), - { a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } }, - 'defaults to a depth of 5' - ); - - t.test('only parses one level when depth = 1', function (st) { - st.deepEqual(qs.parse('a[b][c]=d', { depth: 1 }), { a: { b: { '[c]': 'd' } } }); - st.deepEqual(qs.parse('a[b][c][d]=e', { depth: 1 }), { a: { b: { '[c][d]': 'e' } } }); - st.end(); - }); - - t.deepEqual(qs.parse('a=b&a=c'), { a: ['b', 'c'] }, 'parses a simple array'); - - t.test('parses an explicit array', function (st) { - st.deepEqual(qs.parse('a[]=b'), { a: ['b'] }); - st.deepEqual(qs.parse('a[]=b&a[]=c'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[]=b&a[]=c&a[]=d'), { a: ['b', 'c', 'd'] }); - st.end(); - }); - - t.test('parses a mix of simple and explicit arrays', function (st) { - st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[0]=b&a=c'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b&a[0]=c'), { a: ['b', 'c'] }); - - st.deepEqual(qs.parse('a[1]=b&a=c', { arrayLimit: 20 }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[]=b&a=c', { arrayLimit: 0 }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] }); - - st.deepEqual(qs.parse('a=b&a[1]=c', { arrayLimit: 20 }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b&a[]=c', { arrayLimit: 0 }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] }); - - st.end(); - }); - - t.test('parses a nested array', function (st) { - st.deepEqual(qs.parse('a[b][]=c&a[b][]=d'), { a: { b: ['c', 'd'] } }); - st.deepEqual(qs.parse('a[>=]=25'), { a: { '>=': '25' } }); - st.end(); - }); - - t.test('allows to specify array indices', function (st) { - st.deepEqual(qs.parse('a[1]=c&a[0]=b&a[2]=d'), { a: ['b', 'c', 'd'] }); - st.deepEqual(qs.parse('a[1]=c&a[0]=b'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[1]=c', { arrayLimit: 20 }), { a: ['c'] }); - st.deepEqual(qs.parse('a[1]=c', { arrayLimit: 0 }), { a: { 1: 'c' } }); - st.deepEqual(qs.parse('a[1]=c'), { a: ['c'] }); - st.end(); - }); - - t.test('limits specific array indices to arrayLimit', function (st) { - st.deepEqual(qs.parse('a[20]=a', { arrayLimit: 20 }), { a: ['a'] }); - st.deepEqual(qs.parse('a[21]=a', { arrayLimit: 20 }), { a: { 21: 'a' } }); - st.end(); - }); - - t.deepEqual(qs.parse('a[12b]=c'), { a: { '12b': 'c' } }, 'supports keys that begin with a number'); - - t.test('supports encoded = signs', function (st) { - st.deepEqual(qs.parse('he%3Dllo=th%3Dere'), { 'he=llo': 'th=ere' }); - st.end(); - }); - - t.test('is ok with url encoded strings', function (st) { - st.deepEqual(qs.parse('a[b%20c]=d'), { a: { 'b c': 'd' } }); - st.deepEqual(qs.parse('a[b]=c%20d'), { a: { b: 'c d' } }); - st.end(); - }); - - t.test('allows brackets in the value', function (st) { - st.deepEqual(qs.parse('pets=["tobi"]'), { pets: '["tobi"]' }); - st.deepEqual(qs.parse('operators=[">=", "<="]'), { operators: '[">=", "<="]' }); - st.end(); - }); - - t.test('allows empty values', function (st) { - st.deepEqual(qs.parse(''), {}); - st.deepEqual(qs.parse(null), {}); - st.deepEqual(qs.parse(undefined), {}); - st.end(); - }); - - t.test('transforms arrays to objects', function (st) { - st.deepEqual(qs.parse('foo[0]=bar&foo[bad]=baz'), { foo: { 0: 'bar', bad: 'baz' } }); - st.deepEqual(qs.parse('foo[bad]=baz&foo[0]=bar'), { foo: { bad: 'baz', 0: 'bar' } }); - st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar'), { foo: { bad: 'baz', 0: 'bar' } }); - st.deepEqual(qs.parse('foo[]=bar&foo[bad]=baz'), { foo: { 0: 'bar', bad: 'baz' } }); - st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo'), { foo: { bad: 'baz', 0: 'bar', 1: 'foo' } }); - st.deepEqual(qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb'), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] }); - - st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c', { allowPrototypes: false }), { a: { 0: 'b', t: 'u' } }); - st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c', { allowPrototypes: true }), { a: { 0: 'b', t: 'u', hasOwnProperty: 'c' } }); - st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y', { allowPrototypes: false }), { a: { 0: 'b', x: 'y' } }); - st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y', { allowPrototypes: true }), { a: { 0: 'b', hasOwnProperty: 'c', x: 'y' } }); - st.end(); - }); - - t.test('transforms arrays to objects (dot notation)', function (st) { - st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: 'baz' } }); - st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad.boo=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: { boo: 'baz' } } }); - st.deepEqual(qs.parse('foo[0][0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [[{ baz: 'bar' }]], fool: { bad: 'baz' } }); - st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15'], bar: '2' }] }); - st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].baz[1]=16&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15', '16'], bar: '2' }] }); - st.deepEqual(qs.parse('foo.bad=baz&foo[0]=bar', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar' } }); - st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar' } }); - st.deepEqual(qs.parse('foo[]=bar&foo.bad=baz', { allowDots: true }), { foo: { 0: 'bar', bad: 'baz' } }); - st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar&foo[]=foo', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar', 1: 'foo' } }); - st.deepEqual(qs.parse('foo[0].a=a&foo[0].b=b&foo[1].a=aa&foo[1].b=bb', { allowDots: true }), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] }); - st.end(); - }); - - t.test('correctly prunes undefined values when converting an array to an object', function (st) { - st.deepEqual(qs.parse('a[2]=b&a[99999999]=c'), { a: { 2: 'b', 99999999: 'c' } }); - st.end(); - }); - - t.test('supports malformed uri characters', function (st) { - st.deepEqual(qs.parse('{%:%}', { strictNullHandling: true }), { '{%:%}': null }); - st.deepEqual(qs.parse('{%:%}='), { '{%:%}': '' }); - st.deepEqual(qs.parse('foo=%:%}'), { foo: '%:%}' }); - st.end(); - }); - - t.test('doesn\'t produce empty keys', function (st) { - st.deepEqual(qs.parse('_r=1&'), { _r: '1' }); - st.end(); - }); - - t.test('cannot access Object prototype', function (st) { - qs.parse('constructor[prototype][bad]=bad'); - qs.parse('bad[constructor][prototype][bad]=bad'); - st.equal(typeof Object.prototype.bad, 'undefined'); - st.end(); - }); - - t.test('parses arrays of objects', function (st) { - st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] }); - st.deepEqual(qs.parse('a[0][b]=c'), { a: [{ b: 'c' }] }); - st.end(); - }); - - t.test('allows for empty strings in arrays', function (st) { - st.deepEqual(qs.parse('a[]=b&a[]=&a[]=c'), { a: ['b', '', 'c'] }); - - st.deepEqual( - qs.parse('a[0]=b&a[1]&a[2]=c&a[19]=', { strictNullHandling: true, arrayLimit: 20 }), - { a: ['b', null, 'c', ''] }, - 'with arrayLimit 20 + array indices: null then empty string works' - ); - st.deepEqual( - qs.parse('a[]=b&a[]&a[]=c&a[]=', { strictNullHandling: true, arrayLimit: 0 }), - { a: ['b', null, 'c', ''] }, - 'with arrayLimit 0 + array brackets: null then empty string works' - ); - - st.deepEqual( - qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]', { strictNullHandling: true, arrayLimit: 20 }), - { a: ['b', '', 'c', null] }, - 'with arrayLimit 20 + array indices: empty string then null works' - ); - st.deepEqual( - qs.parse('a[]=b&a[]=&a[]=c&a[]', { strictNullHandling: true, arrayLimit: 0 }), - { a: ['b', '', 'c', null] }, - 'with arrayLimit 0 + array brackets: empty string then null works' - ); - - st.deepEqual( - qs.parse('a[]=&a[]=b&a[]=c'), - { a: ['', 'b', 'c'] }, - 'array brackets: empty strings work' - ); - st.end(); - }); - - t.test('compacts sparse arrays', function (st) { - st.deepEqual(qs.parse('a[10]=1&a[2]=2', { arrayLimit: 20 }), { a: ['2', '1'] }); - st.deepEqual(qs.parse('a[1][b][2][c]=1', { arrayLimit: 20 }), { a: [{ b: [{ c: '1' }] }] }); - st.deepEqual(qs.parse('a[1][2][3][c]=1', { arrayLimit: 20 }), { a: [[[{ c: '1' }]]] }); - st.deepEqual(qs.parse('a[1][2][3][c][1]=1', { arrayLimit: 20 }), { a: [[[{ c: ['1'] }]]] }); - st.end(); - }); - - t.test('parses semi-parsed strings', function (st) { - st.deepEqual(qs.parse({ 'a[b]': 'c' }), { a: { b: 'c' } }); - st.deepEqual(qs.parse({ 'a[b]': 'c', 'a[d]': 'e' }), { a: { b: 'c', d: 'e' } }); - st.end(); - }); - - t.test('parses buffers correctly', function (st) { - var b = SaferBuffer.from('test'); - st.deepEqual(qs.parse({ a: b }), { a: b }); - st.end(); - }); - - t.test('continues parsing when no parent is found', function (st) { - st.deepEqual(qs.parse('[]=&a=b'), { 0: '', a: 'b' }); - st.deepEqual(qs.parse('[]&a=b', { strictNullHandling: true }), { 0: null, a: 'b' }); - st.deepEqual(qs.parse('[foo]=bar'), { foo: 'bar' }); - st.end(); - }); - - t.test('does not error when parsing a very long array', function (st) { - var str = 'a[]=a'; - while (Buffer.byteLength(str) < 128 * 1024) { - str = str + '&' + str; - } - - st.doesNotThrow(function () { - qs.parse(str); - }); - - st.end(); - }); - - t.test('should not throw when a native prototype has an enumerable property', { parallel: false }, function (st) { - Object.prototype.crash = ''; - Array.prototype.crash = ''; - st.doesNotThrow(qs.parse.bind(null, 'a=b')); - st.deepEqual(qs.parse('a=b'), { a: 'b' }); - st.doesNotThrow(qs.parse.bind(null, 'a[][b]=c')); - st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] }); - delete Object.prototype.crash; - delete Array.prototype.crash; - st.end(); - }); - - t.test('parses a string with an alternative string delimiter', function (st) { - st.deepEqual(qs.parse('a=b;c=d', { delimiter: ';' }), { a: 'b', c: 'd' }); - st.end(); - }); - - t.test('parses a string with an alternative RegExp delimiter', function (st) { - st.deepEqual(qs.parse('a=b; c=d', { delimiter: /[;,] */ }), { a: 'b', c: 'd' }); - st.end(); - }); - - t.test('does not use non-splittable objects as delimiters', function (st) { - st.deepEqual(qs.parse('a=b&c=d', { delimiter: true }), { a: 'b', c: 'd' }); - st.end(); - }); - - t.test('allows overriding parameter limit', function (st) { - st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: 1 }), { a: 'b' }); - st.end(); - }); - - t.test('allows setting the parameter limit to Infinity', function (st) { - st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: Infinity }), { a: 'b', c: 'd' }); - st.end(); - }); - - t.test('allows overriding array limit', function (st) { - st.deepEqual(qs.parse('a[0]=b', { arrayLimit: -1 }), { a: { 0: 'b' } }); - st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: -1 }), { a: { '-1': 'b' } }); - st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 }), { a: { 0: 'b', 1: 'c' } }); - st.end(); - }); - - t.test('allows disabling array parsing', function (st) { - st.deepEqual(qs.parse('a[0]=b&a[1]=c', { parseArrays: false }), { a: { 0: 'b', 1: 'c' } }); - st.end(); - }); - - t.test('allows for query string prefix', function (st) { - st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' }); - st.deepEqual(qs.parse('foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' }); - st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: false }), { '?foo': 'bar' }); - st.end(); - }); - - t.test('parses an object', function (st) { - var input = { - 'user[name]': { 'pop[bob]': 3 }, - 'user[email]': null - }; - - var expected = { - user: { - name: { 'pop[bob]': 3 }, - email: null - } - }; - - var result = qs.parse(input); - - st.deepEqual(result, expected); - st.end(); - }); - - t.test('parses an object in dot notation', function (st) { - var input = { - 'user.name': { 'pop[bob]': 3 }, - 'user.email.': null - }; - - var expected = { - user: { - name: { 'pop[bob]': 3 }, - email: null - } - }; - - var result = qs.parse(input, { allowDots: true }); - - st.deepEqual(result, expected); - st.end(); - }); - - t.test('parses an object and not child values', function (st) { - var input = { - 'user[name]': { 'pop[bob]': { test: 3 } }, - 'user[email]': null - }; - - var expected = { - user: { - name: { 'pop[bob]': { test: 3 } }, - email: null - } - }; - - var result = qs.parse(input); - - st.deepEqual(result, expected); - st.end(); - }); - - t.test('does not blow up when Buffer global is missing', function (st) { - var tempBuffer = global.Buffer; - delete global.Buffer; - var result = qs.parse('a=b&c=d'); - global.Buffer = tempBuffer; - st.deepEqual(result, { a: 'b', c: 'd' }); - st.end(); - }); - - t.test('does not crash when parsing circular references', function (st) { - var a = {}; - a.b = a; - - var parsed; - - st.doesNotThrow(function () { - parsed = qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a }); - }); - - st.equal('foo' in parsed, true, 'parsed has "foo" property'); - st.equal('bar' in parsed.foo, true); - st.equal('baz' in parsed.foo, true); - st.equal(parsed.foo.bar, 'baz'); - st.deepEqual(parsed.foo.baz, a); - st.end(); - }); - - t.test('does not crash when parsing deep objects', function (st) { - var parsed; - var str = 'foo'; - - for (var i = 0; i < 5000; i++) { - str += '[p]'; - } - - str += '=bar'; - - st.doesNotThrow(function () { - parsed = qs.parse(str, { depth: 5000 }); - }); - - st.equal('foo' in parsed, true, 'parsed has "foo" property'); - - var depth = 0; - var ref = parsed.foo; - while ((ref = ref.p)) { - depth += 1; - } - - st.equal(depth, 5000, 'parsed is 5000 properties deep'); - - st.end(); - }); - - t.test('parses null objects correctly', { skip: !Object.create }, function (st) { - var a = Object.create(null); - a.b = 'c'; - - st.deepEqual(qs.parse(a), { b: 'c' }); - var result = qs.parse({ a: a }); - st.equal('a' in result, true, 'result has "a" property'); - st.deepEqual(result.a, a); - st.end(); - }); - - t.test('parses dates correctly', function (st) { - var now = new Date(); - st.deepEqual(qs.parse({ a: now }), { a: now }); - st.end(); - }); - - t.test('parses regular expressions correctly', function (st) { - var re = /^test$/; - st.deepEqual(qs.parse({ a: re }), { a: re }); - st.end(); - }); - - t.test('does not allow overwriting prototype properties', function (st) { - st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: false }), {}); - st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: false }), {}); - - st.deepEqual( - qs.parse('toString', { allowPrototypes: false }), - {}, - 'bare "toString" results in {}' - ); - - st.end(); - }); - - t.test('can allow overwriting prototype properties', function (st) { - st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true }), { a: { hasOwnProperty: 'b' } }); - st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: true }), { hasOwnProperty: 'b' }); - - st.deepEqual( - qs.parse('toString', { allowPrototypes: true }), - { toString: '' }, - 'bare "toString" results in { toString: "" }' - ); - - st.end(); - }); - - t.test('params starting with a closing bracket', function (st) { - st.deepEqual(qs.parse(']=toString'), { ']': 'toString' }); - st.deepEqual(qs.parse(']]=toString'), { ']]': 'toString' }); - st.deepEqual(qs.parse(']hello]=toString'), { ']hello]': 'toString' }); - st.end(); - }); - - t.test('params starting with a starting bracket', function (st) { - st.deepEqual(qs.parse('[=toString'), { '[': 'toString' }); - st.deepEqual(qs.parse('[[=toString'), { '[[': 'toString' }); - st.deepEqual(qs.parse('[hello[=toString'), { '[hello[': 'toString' }); - st.end(); - }); - - t.test('add keys to objects', function (st) { - st.deepEqual( - qs.parse('a[b]=c&a=d'), - { a: { b: 'c', d: true } }, - 'can add keys to objects' - ); - - st.deepEqual( - qs.parse('a[b]=c&a=toString'), - { a: { b: 'c' } }, - 'can not overwrite prototype' - ); - - st.deepEqual( - qs.parse('a[b]=c&a=toString', { allowPrototypes: true }), - { a: { b: 'c', toString: true } }, - 'can overwrite prototype with allowPrototypes true' - ); - - st.deepEqual( - qs.parse('a[b]=c&a=toString', { plainObjects: true }), - { a: { b: 'c', toString: true } }, - 'can overwrite prototype with plainObjects true' - ); - - st.end(); - }); - - t.test('can return null objects', { skip: !Object.create }, function (st) { - var expected = Object.create(null); - expected.a = Object.create(null); - expected.a.b = 'c'; - expected.a.hasOwnProperty = 'd'; - st.deepEqual(qs.parse('a[b]=c&a[hasOwnProperty]=d', { plainObjects: true }), expected); - st.deepEqual(qs.parse(null, { plainObjects: true }), Object.create(null)); - var expectedArray = Object.create(null); - expectedArray.a = Object.create(null); - expectedArray.a[0] = 'b'; - expectedArray.a.c = 'd'; - st.deepEqual(qs.parse('a[]=b&a[c]=d', { plainObjects: true }), expectedArray); - st.end(); - }); - - t.test('can parse with custom encoding', function (st) { - st.deepEqual(qs.parse('%8c%a7=%91%e5%8d%e3%95%7b', { - decoder: function (str) { - var reg = /%([0-9A-F]{2})/ig; - var result = []; - var parts = reg.exec(str); - while (parts) { - result.push(parseInt(parts[1], 16)); - parts = reg.exec(str); - } - return iconv.decode(SaferBuffer.from(result), 'shift_jis').toString(); - } - }), { 県: '大阪府' }); - st.end(); - }); - - t.test('receives the default decoder as a second argument', function (st) { - st.plan(1); - qs.parse('a', { - decoder: function (str, defaultDecoder) { - st.equal(defaultDecoder, utils.decode); - } - }); - st.end(); - }); - - t.test('throws error with wrong decoder', function (st) { - st['throws'](function () { - qs.parse({}, { decoder: 'string' }); - }, new TypeError('Decoder has to be a function.')); - st.end(); - }); - - t.test('does not mutate the options argument', function (st) { - var options = {}; - qs.parse('a[b]=true', options); - st.deepEqual(options, {}); - st.end(); - }); - - t.end(); -}); diff --git a/node_modules/qs/test/stringify.js b/node_modules/qs/test/stringify.js deleted file mode 100644 index 165ac62..0000000 --- a/node_modules/qs/test/stringify.js +++ /dev/null @@ -1,597 +0,0 @@ -'use strict'; - -var test = require('tape'); -var qs = require('../'); -var utils = require('../lib/utils'); -var iconv = require('iconv-lite'); -var SaferBuffer = require('safer-buffer').Buffer; - -test('stringify()', function (t) { - t.test('stringifies a querystring object', function (st) { - st.equal(qs.stringify({ a: 'b' }), 'a=b'); - st.equal(qs.stringify({ a: 1 }), 'a=1'); - st.equal(qs.stringify({ a: 1, b: 2 }), 'a=1&b=2'); - st.equal(qs.stringify({ a: 'A_Z' }), 'a=A_Z'); - st.equal(qs.stringify({ a: '€' }), 'a=%E2%82%AC'); - st.equal(qs.stringify({ a: '' }), 'a=%EE%80%80'); - st.equal(qs.stringify({ a: 'א' }), 'a=%D7%90'); - st.equal(qs.stringify({ a: '𐐷' }), 'a=%F0%90%90%B7'); - st.end(); - }); - - t.test('adds query prefix', function (st) { - st.equal(qs.stringify({ a: 'b' }, { addQueryPrefix: true }), '?a=b'); - st.end(); - }); - - t.test('with query prefix, outputs blank string given an empty object', function (st) { - st.equal(qs.stringify({}, { addQueryPrefix: true }), ''); - st.end(); - }); - - t.test('stringifies a nested object', function (st) { - st.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c'); - st.equal(qs.stringify({ a: { b: { c: { d: 'e' } } } }), 'a%5Bb%5D%5Bc%5D%5Bd%5D=e'); - st.end(); - }); - - t.test('stringifies a nested object with dots notation', function (st) { - st.equal(qs.stringify({ a: { b: 'c' } }, { allowDots: true }), 'a.b=c'); - st.equal(qs.stringify({ a: { b: { c: { d: 'e' } } } }, { allowDots: true }), 'a.b.c.d=e'); - st.end(); - }); - - t.test('stringifies an array value', function (st) { - st.equal( - qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'indices' }), - 'a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d', - 'indices => indices' - ); - st.equal( - qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'brackets' }), - 'a%5B%5D=b&a%5B%5D=c&a%5B%5D=d', - 'brackets => brackets' - ); - st.equal( - qs.stringify({ a: ['b', 'c', 'd'] }), - 'a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d', - 'default => indices' - ); - st.end(); - }); - - t.test('omits nulls when asked', function (st) { - st.equal(qs.stringify({ a: 'b', c: null }, { skipNulls: true }), 'a=b'); - st.end(); - }); - - t.test('omits nested nulls when asked', function (st) { - st.equal(qs.stringify({ a: { b: 'c', d: null } }, { skipNulls: true }), 'a%5Bb%5D=c'); - st.end(); - }); - - t.test('omits array indices when asked', function (st) { - st.equal(qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }), 'a=b&a=c&a=d'); - st.end(); - }); - - t.test('stringifies a nested array value', function (st) { - st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { arrayFormat: 'indices' }), 'a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d'); - st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { arrayFormat: 'brackets' }), 'a%5Bb%5D%5B%5D=c&a%5Bb%5D%5B%5D=d'); - st.equal(qs.stringify({ a: { b: ['c', 'd'] } }), 'a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d'); - st.end(); - }); - - t.test('stringifies a nested array value with dots notation', function (st) { - st.equal( - qs.stringify( - { a: { b: ['c', 'd'] } }, - { allowDots: true, encode: false, arrayFormat: 'indices' } - ), - 'a.b[0]=c&a.b[1]=d', - 'indices: stringifies with dots + indices' - ); - st.equal( - qs.stringify( - { a: { b: ['c', 'd'] } }, - { allowDots: true, encode: false, arrayFormat: 'brackets' } - ), - 'a.b[]=c&a.b[]=d', - 'brackets: stringifies with dots + brackets' - ); - st.equal( - qs.stringify( - { a: { b: ['c', 'd'] } }, - { allowDots: true, encode: false } - ), - 'a.b[0]=c&a.b[1]=d', - 'default: stringifies with dots + indices' - ); - st.end(); - }); - - t.test('stringifies an object inside an array', function (st) { - st.equal( - qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'indices' }), - 'a%5B0%5D%5Bb%5D=c', - 'indices => brackets' - ); - st.equal( - qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'brackets' }), - 'a%5B%5D%5Bb%5D=c', - 'brackets => brackets' - ); - st.equal( - qs.stringify({ a: [{ b: 'c' }] }), - 'a%5B0%5D%5Bb%5D=c', - 'default => indices' - ); - - st.equal( - qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'indices' }), - 'a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1', - 'indices => indices' - ); - - st.equal( - qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'brackets' }), - 'a%5B%5D%5Bb%5D%5Bc%5D%5B%5D=1', - 'brackets => brackets' - ); - - st.equal( - qs.stringify({ a: [{ b: { c: [1] } }] }), - 'a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1', - 'default => indices' - ); - - st.end(); - }); - - t.test('stringifies an array with mixed objects and primitives', function (st) { - st.equal( - qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encode: false, arrayFormat: 'indices' }), - 'a[0][b]=1&a[1]=2&a[2]=3', - 'indices => indices' - ); - st.equal( - qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encode: false, arrayFormat: 'brackets' }), - 'a[][b]=1&a[]=2&a[]=3', - 'brackets => brackets' - ); - st.equal( - qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encode: false }), - 'a[0][b]=1&a[1]=2&a[2]=3', - 'default => indices' - ); - - st.end(); - }); - - t.test('stringifies an object inside an array with dots notation', function (st) { - st.equal( - qs.stringify( - { a: [{ b: 'c' }] }, - { allowDots: true, encode: false, arrayFormat: 'indices' } - ), - 'a[0].b=c', - 'indices => indices' - ); - st.equal( - qs.stringify( - { a: [{ b: 'c' }] }, - { allowDots: true, encode: false, arrayFormat: 'brackets' } - ), - 'a[].b=c', - 'brackets => brackets' - ); - st.equal( - qs.stringify( - { a: [{ b: 'c' }] }, - { allowDots: true, encode: false } - ), - 'a[0].b=c', - 'default => indices' - ); - - st.equal( - qs.stringify( - { a: [{ b: { c: [1] } }] }, - { allowDots: true, encode: false, arrayFormat: 'indices' } - ), - 'a[0].b.c[0]=1', - 'indices => indices' - ); - st.equal( - qs.stringify( - { a: [{ b: { c: [1] } }] }, - { allowDots: true, encode: false, arrayFormat: 'brackets' } - ), - 'a[].b.c[]=1', - 'brackets => brackets' - ); - st.equal( - qs.stringify( - { a: [{ b: { c: [1] } }] }, - { allowDots: true, encode: false } - ), - 'a[0].b.c[0]=1', - 'default => indices' - ); - - st.end(); - }); - - t.test('does not omit object keys when indices = false', function (st) { - st.equal(qs.stringify({ a: [{ b: 'c' }] }, { indices: false }), 'a%5Bb%5D=c'); - st.end(); - }); - - t.test('uses indices notation for arrays when indices=true', function (st) { - st.equal(qs.stringify({ a: ['b', 'c'] }, { indices: true }), 'a%5B0%5D=b&a%5B1%5D=c'); - st.end(); - }); - - t.test('uses indices notation for arrays when no arrayFormat is specified', function (st) { - st.equal(qs.stringify({ a: ['b', 'c'] }), 'a%5B0%5D=b&a%5B1%5D=c'); - st.end(); - }); - - t.test('uses indices notation for arrays when no arrayFormat=indices', function (st) { - st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }), 'a%5B0%5D=b&a%5B1%5D=c'); - st.end(); - }); - - t.test('uses repeat notation for arrays when no arrayFormat=repeat', function (st) { - st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }), 'a=b&a=c'); - st.end(); - }); - - t.test('uses brackets notation for arrays when no arrayFormat=brackets', function (st) { - st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }), 'a%5B%5D=b&a%5B%5D=c'); - st.end(); - }); - - t.test('stringifies a complicated object', function (st) { - st.equal(qs.stringify({ a: { b: 'c', d: 'e' } }), 'a%5Bb%5D=c&a%5Bd%5D=e'); - st.end(); - }); - - t.test('stringifies an empty value', function (st) { - st.equal(qs.stringify({ a: '' }), 'a='); - st.equal(qs.stringify({ a: null }, { strictNullHandling: true }), 'a'); - - st.equal(qs.stringify({ a: '', b: '' }), 'a=&b='); - st.equal(qs.stringify({ a: null, b: '' }, { strictNullHandling: true }), 'a&b='); - - st.equal(qs.stringify({ a: { b: '' } }), 'a%5Bb%5D='); - st.equal(qs.stringify({ a: { b: null } }, { strictNullHandling: true }), 'a%5Bb%5D'); - st.equal(qs.stringify({ a: { b: null } }, { strictNullHandling: false }), 'a%5Bb%5D='); - - st.end(); - }); - - t.test('stringifies a null object', { skip: !Object.create }, function (st) { - var obj = Object.create(null); - obj.a = 'b'; - st.equal(qs.stringify(obj), 'a=b'); - st.end(); - }); - - t.test('returns an empty string for invalid input', function (st) { - st.equal(qs.stringify(undefined), ''); - st.equal(qs.stringify(false), ''); - st.equal(qs.stringify(null), ''); - st.equal(qs.stringify(''), ''); - st.end(); - }); - - t.test('stringifies an object with a null object as a child', { skip: !Object.create }, function (st) { - var obj = { a: Object.create(null) }; - - obj.a.b = 'c'; - st.equal(qs.stringify(obj), 'a%5Bb%5D=c'); - st.end(); - }); - - t.test('drops keys with a value of undefined', function (st) { - st.equal(qs.stringify({ a: undefined }), ''); - - st.equal(qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: true }), 'a%5Bc%5D'); - st.equal(qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: false }), 'a%5Bc%5D='); - st.equal(qs.stringify({ a: { b: undefined, c: '' } }), 'a%5Bc%5D='); - st.end(); - }); - - t.test('url encodes values', function (st) { - st.equal(qs.stringify({ a: 'b c' }), 'a=b%20c'); - st.end(); - }); - - t.test('stringifies a date', function (st) { - var now = new Date(); - var str = 'a=' + encodeURIComponent(now.toISOString()); - st.equal(qs.stringify({ a: now }), str); - st.end(); - }); - - t.test('stringifies the weird object from qs', function (st) { - st.equal(qs.stringify({ 'my weird field': '~q1!2"\'w$5&7/z8)?' }), 'my%20weird%20field=~q1%212%22%27w%245%267%2Fz8%29%3F'); - st.end(); - }); - - t.test('skips properties that are part of the object prototype', function (st) { - Object.prototype.crash = 'test'; - st.equal(qs.stringify({ a: 'b' }), 'a=b'); - st.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c'); - delete Object.prototype.crash; - st.end(); - }); - - t.test('stringifies boolean values', function (st) { - st.equal(qs.stringify({ a: true }), 'a=true'); - st.equal(qs.stringify({ a: { b: true } }), 'a%5Bb%5D=true'); - st.equal(qs.stringify({ b: false }), 'b=false'); - st.equal(qs.stringify({ b: { c: false } }), 'b%5Bc%5D=false'); - st.end(); - }); - - t.test('stringifies buffer values', function (st) { - st.equal(qs.stringify({ a: SaferBuffer.from('test') }), 'a=test'); - st.equal(qs.stringify({ a: { b: SaferBuffer.from('test') } }), 'a%5Bb%5D=test'); - st.end(); - }); - - t.test('stringifies an object using an alternative delimiter', function (st) { - st.equal(qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }), 'a=b;c=d'); - st.end(); - }); - - t.test('doesn\'t blow up when Buffer global is missing', function (st) { - var tempBuffer = global.Buffer; - delete global.Buffer; - var result = qs.stringify({ a: 'b', c: 'd' }); - global.Buffer = tempBuffer; - st.equal(result, 'a=b&c=d'); - st.end(); - }); - - t.test('selects properties when filter=array', function (st) { - st.equal(qs.stringify({ a: 'b' }, { filter: ['a'] }), 'a=b'); - st.equal(qs.stringify({ a: 1 }, { filter: [] }), ''); - - st.equal( - qs.stringify( - { a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, - { filter: ['a', 'b', 0, 2], arrayFormat: 'indices' } - ), - 'a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3', - 'indices => indices' - ); - st.equal( - qs.stringify( - { a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, - { filter: ['a', 'b', 0, 2], arrayFormat: 'brackets' } - ), - 'a%5Bb%5D%5B%5D=1&a%5Bb%5D%5B%5D=3', - 'brackets => brackets' - ); - st.equal( - qs.stringify( - { a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, - { filter: ['a', 'b', 0, 2] } - ), - 'a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3', - 'default => indices' - ); - - st.end(); - }); - - t.test('supports custom representations when filter=function', function (st) { - var calls = 0; - var obj = { a: 'b', c: 'd', e: { f: new Date(1257894000000) } }; - var filterFunc = function (prefix, value) { - calls += 1; - if (calls === 1) { - st.equal(prefix, '', 'prefix is empty'); - st.equal(value, obj); - } else if (prefix === 'c') { - return void 0; - } else if (value instanceof Date) { - st.equal(prefix, 'e[f]'); - return value.getTime(); - } - return value; - }; - - st.equal(qs.stringify(obj, { filter: filterFunc }), 'a=b&e%5Bf%5D=1257894000000'); - st.equal(calls, 5); - st.end(); - }); - - t.test('can disable uri encoding', function (st) { - st.equal(qs.stringify({ a: 'b' }, { encode: false }), 'a=b'); - st.equal(qs.stringify({ a: { b: 'c' } }, { encode: false }), 'a[b]=c'); - st.equal(qs.stringify({ a: 'b', c: null }, { strictNullHandling: true, encode: false }), 'a=b&c'); - st.end(); - }); - - t.test('can sort the keys', function (st) { - var sort = function (a, b) { - return a.localeCompare(b); - }; - st.equal(qs.stringify({ a: 'c', z: 'y', b: 'f' }, { sort: sort }), 'a=c&b=f&z=y'); - st.equal(qs.stringify({ a: 'c', z: { j: 'a', i: 'b' }, b: 'f' }, { sort: sort }), 'a=c&b=f&z%5Bi%5D=b&z%5Bj%5D=a'); - st.end(); - }); - - t.test('can sort the keys at depth 3 or more too', function (st) { - var sort = function (a, b) { - return a.localeCompare(b); - }; - st.equal( - qs.stringify( - { a: 'a', z: { zj: { zjb: 'zjb', zja: 'zja' }, zi: { zib: 'zib', zia: 'zia' } }, b: 'b' }, - { sort: sort, encode: false } - ), - 'a=a&b=b&z[zi][zia]=zia&z[zi][zib]=zib&z[zj][zja]=zja&z[zj][zjb]=zjb' - ); - st.equal( - qs.stringify( - { a: 'a', z: { zj: { zjb: 'zjb', zja: 'zja' }, zi: { zib: 'zib', zia: 'zia' } }, b: 'b' }, - { sort: null, encode: false } - ), - 'a=a&z[zj][zjb]=zjb&z[zj][zja]=zja&z[zi][zib]=zib&z[zi][zia]=zia&b=b' - ); - st.end(); - }); - - t.test('can stringify with custom encoding', function (st) { - st.equal(qs.stringify({ 県: '大阪府', '': '' }, { - encoder: function (str) { - if (str.length === 0) { - return ''; - } - var buf = iconv.encode(str, 'shiftjis'); - var result = []; - for (var i = 0; i < buf.length; ++i) { - result.push(buf.readUInt8(i).toString(16)); - } - return '%' + result.join('%'); - } - }), '%8c%a7=%91%e5%8d%e3%95%7b&='); - st.end(); - }); - - t.test('receives the default encoder as a second argument', function (st) { - st.plan(2); - qs.stringify({ a: 1 }, { - encoder: function (str, defaultEncoder) { - st.equal(defaultEncoder, utils.encode); - } - }); - st.end(); - }); - - t.test('throws error with wrong encoder', function (st) { - st['throws'](function () { - qs.stringify({}, { encoder: 'string' }); - }, new TypeError('Encoder has to be a function.')); - st.end(); - }); - - t.test('can use custom encoder for a buffer object', { skip: typeof Buffer === 'undefined' }, function (st) { - st.equal(qs.stringify({ a: SaferBuffer.from([1]) }, { - encoder: function (buffer) { - if (typeof buffer === 'string') { - return buffer; - } - return String.fromCharCode(buffer.readUInt8(0) + 97); - } - }), 'a=b'); - st.end(); - }); - - t.test('serializeDate option', function (st) { - var date = new Date(); - st.equal( - qs.stringify({ a: date }), - 'a=' + date.toISOString().replace(/:/g, '%3A'), - 'default is toISOString' - ); - - var mutatedDate = new Date(); - mutatedDate.toISOString = function () { - throw new SyntaxError(); - }; - st['throws'](function () { - mutatedDate.toISOString(); - }, SyntaxError); - st.equal( - qs.stringify({ a: mutatedDate }), - 'a=' + Date.prototype.toISOString.call(mutatedDate).replace(/:/g, '%3A'), - 'toISOString works even when method is not locally present' - ); - - var specificDate = new Date(6); - st.equal( - qs.stringify( - { a: specificDate }, - { serializeDate: function (d) { return d.getTime() * 7; } } - ), - 'a=42', - 'custom serializeDate function called' - ); - - st.end(); - }); - - t.test('RFC 1738 spaces serialization', function (st) { - st.equal(qs.stringify({ a: 'b c' }, { format: qs.formats.RFC1738 }), 'a=b+c'); - st.equal(qs.stringify({ 'a b': 'c d' }, { format: qs.formats.RFC1738 }), 'a+b=c+d'); - st.end(); - }); - - t.test('RFC 3986 spaces serialization', function (st) { - st.equal(qs.stringify({ a: 'b c' }, { format: qs.formats.RFC3986 }), 'a=b%20c'); - st.equal(qs.stringify({ 'a b': 'c d' }, { format: qs.formats.RFC3986 }), 'a%20b=c%20d'); - st.end(); - }); - - t.test('Backward compatibility to RFC 3986', function (st) { - st.equal(qs.stringify({ a: 'b c' }), 'a=b%20c'); - st.end(); - }); - - t.test('Edge cases and unknown formats', function (st) { - ['UFO1234', false, 1234, null, {}, []].forEach( - function (format) { - st['throws']( - function () { - qs.stringify({ a: 'b c' }, { format: format }); - }, - new TypeError('Unknown format option provided.') - ); - } - ); - st.end(); - }); - - t.test('encodeValuesOnly', function (st) { - st.equal( - qs.stringify( - { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, - { encodeValuesOnly: true } - ), - 'a=b&c[0]=d&c[1]=e%3Df&f[0][0]=g&f[1][0]=h' - ); - st.equal( - qs.stringify( - { a: 'b', c: ['d', 'e'], f: [['g'], ['h']] } - ), - 'a=b&c%5B0%5D=d&c%5B1%5D=e&f%5B0%5D%5B0%5D=g&f%5B1%5D%5B0%5D=h' - ); - st.end(); - }); - - t.test('encodeValuesOnly - strictNullHandling', function (st) { - st.equal( - qs.stringify( - { a: { b: null } }, - { encodeValuesOnly: true, strictNullHandling: true } - ), - 'a[b]' - ); - st.end(); - }); - - t.test('does not mutate the options argument', function (st) { - var options = {}; - qs.stringify({}, options); - st.deepEqual(options, {}); - st.end(); - }); - - t.end(); -}); diff --git a/node_modules/qs/test/utils.js b/node_modules/qs/test/utils.js deleted file mode 100644 index eff4011..0000000 --- a/node_modules/qs/test/utils.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -var test = require('tape'); -var utils = require('../lib/utils'); - -test('merge()', function (t) { - t.deepEqual(utils.merge({ a: 'b' }, { a: 'c' }), { a: ['b', 'c'] }, 'merges two objects with the same key'); - - var oneMerged = utils.merge({ foo: 'bar' }, { foo: { first: '123' } }); - t.deepEqual(oneMerged, { foo: ['bar', { first: '123' }] }, 'merges a standalone and an object into an array'); - - var twoMerged = utils.merge({ foo: ['bar', { first: '123' }] }, { foo: { second: '456' } }); - t.deepEqual(twoMerged, { foo: { 0: 'bar', 1: { first: '123' }, second: '456' } }, 'merges a standalone and two objects into an array'); - - var sandwiched = utils.merge({ foo: ['bar', { first: '123', second: '456' }] }, { foo: 'baz' }); - t.deepEqual(sandwiched, { foo: ['bar', { first: '123', second: '456' }, 'baz'] }, 'merges an object sandwiched by two standalones into an array'); - - var nestedArrays = utils.merge({ foo: ['baz'] }, { foo: ['bar', 'xyzzy'] }); - t.deepEqual(nestedArrays, { foo: ['baz', 'bar', 'xyzzy'] }); - - t.end(); -}); - -test('assign()', function (t) { - var target = { a: 1, b: 2 }; - var source = { b: 3, c: 4 }; - var result = utils.assign(target, source); - - t.equal(result, target, 'returns the target'); - t.deepEqual(target, { a: 1, b: 3, c: 4 }, 'target and source are merged'); - t.deepEqual(source, { b: 3, c: 4 }, 'source is untouched'); - - t.end(); -}); diff --git a/node_modules/request/CHANGELOG.md b/node_modules/request/CHANGELOG.md deleted file mode 100644 index d3ffcd0..0000000 --- a/node_modules/request/CHANGELOG.md +++ /dev/null @@ -1,717 +0,0 @@ -## Change Log - -### v2.88.0 (2018/08/10) -- [#2996](https://github.com/request/request/pull/2996) fix(uuid): import versioned uuid (@kwonoj) -- [#2994](https://github.com/request/request/pull/2994) Update to oauth-sign 0.9.0 (@dlecocq) -- [#2993](https://github.com/request/request/pull/2993) Fix header tests (@simov) -- [#2904](https://github.com/request/request/pull/2904) #515, #2894 Strip port suffix from Host header if the protocol is known. (#2904) (@paambaati) -- [#2791](https://github.com/request/request/pull/2791) Improve AWS SigV4 support. (#2791) (@vikhyat) -- [#2977](https://github.com/request/request/pull/2977) Update test certificates (@simov) - -### v2.87.0 (2018/05/21) -- [#2943](https://github.com/request/request/pull/2943) Replace hawk dependency with a local implemenation (#2943) (@hueniverse) - -### v2.86.0 (2018/05/15) -- [#2885](https://github.com/request/request/pull/2885) Remove redundant code (for Node.js 0.9.4 and below) and dependency (@ChALkeR) -- [#2942](https://github.com/request/request/pull/2942) Make Test GREEN Again! (@simov) -- [#2923](https://github.com/request/request/pull/2923) Alterations for failing CI tests (@gareth-robinson) - -### v2.85.0 (2018/03/12) -- [#2880](https://github.com/request/request/pull/2880) Revert "Update hawk to 7.0.7 (#2880)" (@simov) - -### v2.84.0 (2018/03/12) -- [#2793](https://github.com/request/request/pull/2793) Fixed calculation of oauth_body_hash, issue #2792 (@dvishniakov) -- [#2880](https://github.com/request/request/pull/2880) Update hawk to 7.0.7 (#2880) (@kornel-kedzierski) - -### v2.83.0 (2017/09/27) -- [#2776](https://github.com/request/request/pull/2776) Updating tough-cookie due to security fix. (#2776) (@karlnorling) - -### v2.82.0 (2017/09/19) -- [#2703](https://github.com/request/request/pull/2703) Add Node.js v8 to Travis CI (@ryysud) -- [#2751](https://github.com/request/request/pull/2751) Update of hawk and qs to latest version (#2751) (@Olivier-Moreau) -- [#2658](https://github.com/request/request/pull/2658) Fixed some text in README.md (#2658) (@Marketionist) -- [#2635](https://github.com/request/request/pull/2635) chore(package): update aws-sign2 to version 0.7.0 (#2635) (@greenkeeperio-bot) -- [#2641](https://github.com/request/request/pull/2641) Update README to simplify & update convenience methods (#2641) (@FredKSchott) -- [#2541](https://github.com/request/request/pull/2541) Add convenience method for HTTP OPTIONS (#2541) (@jamesseanwright) -- [#2605](https://github.com/request/request/pull/2605) Add promise support section to README (#2605) (@FredKSchott) -- [#2579](https://github.com/request/request/pull/2579) refactor(lint): replace eslint with standard (#2579) (@ahmadnassri) -- [#2598](https://github.com/request/request/pull/2598) Update codecov to version 2.0.2 🚀 (@greenkeeperio-bot) -- [#2590](https://github.com/request/request/pull/2590) Adds test-timing keepAlive test (@nicjansma) -- [#2589](https://github.com/request/request/pull/2589) fix tabulation on request example README.MD (@odykyi) -- [#2594](https://github.com/request/request/pull/2594) chore(dependencies): har-validator to 5.x [removes babel dep] (@ahmadnassri) - -### v2.81.0 (2017/03/09) -- [#2584](https://github.com/request/request/pull/2584) Security issue: Upgrade qs to version 6.4.0 (@sergejmueller) -- [#2578](https://github.com/request/request/pull/2578) safe-buffer doesn't zero-fill by default, its just a polyfill. (#2578) (@mikeal) -- [#2566](https://github.com/request/request/pull/2566) Timings: Tracks 'lookup', adds 'wait' time, fixes connection re-use (#2566) (@nicjansma) -- [#2574](https://github.com/request/request/pull/2574) Migrating to safe-buffer for improved security. (@mikeal) -- [#2573](https://github.com/request/request/pull/2573) fixes #2572 (@ahmadnassri) - -### v2.80.0 (2017/03/04) -- [#2571](https://github.com/request/request/pull/2571) Correctly format the Host header for IPv6 addresses (@JamesMGreene) -- [#2558](https://github.com/request/request/pull/2558) Update README.md example snippet (@FredKSchott) -- [#2221](https://github.com/request/request/pull/2221) Adding a simple Response object reference in argument specification (@calamarico) -- [#2452](https://github.com/request/request/pull/2452) Adds .timings array with DNC, TCP, request and response times (@nicjansma) -- [#2553](https://github.com/request/request/pull/2553) add ISSUE_TEMPLATE, move PR template (@FredKSchott) -- [#2539](https://github.com/request/request/pull/2539) Create PULL_REQUEST_TEMPLATE.md (@FredKSchott) -- [#2524](https://github.com/request/request/pull/2524) Update caseless to version 0.12.0 🚀 (@greenkeeperio-bot) -- [#2460](https://github.com/request/request/pull/2460) Fix wrong MIME type in example (@OwnageIsMagic) -- [#2514](https://github.com/request/request/pull/2514) Change tags to keywords in package.json (@humphd) -- [#2492](https://github.com/request/request/pull/2492) More lenient gzip decompression (@addaleax) - -### v2.79.0 (2016/11/18) -- [#2368](https://github.com/request/request/pull/2368) Fix typeof check in test-pool.js (@forivall) -- [#2394](https://github.com/request/request/pull/2394) Use `files` in package.json (@SimenB) -- [#2463](https://github.com/request/request/pull/2463) AWS support for session tokens for temporary credentials (@simov) -- [#2467](https://github.com/request/request/pull/2467) Migrate to uuid (@simov, @antialias) -- [#2459](https://github.com/request/request/pull/2459) Update taper to version 0.5.0 🚀 (@greenkeeperio-bot) -- [#2448](https://github.com/request/request/pull/2448) Make other connect timeout test more reliable too (@mscdex) - -### v2.78.0 (2016/11/03) -- [#2447](https://github.com/request/request/pull/2447) Always set request timeout on keep-alive connections (@mscdex) - -### v2.77.0 (2016/11/03) -- [#2439](https://github.com/request/request/pull/2439) Fix socket 'connect' listener handling (@mscdex) -- [#2442](https://github.com/request/request/pull/2442) 👻😱 Node.js 0.10 is unmaintained 😱👻 (@greenkeeperio-bot) -- [#2435](https://github.com/request/request/pull/2435) Add followOriginalHttpMethod to redirect to original HTTP method (@kirrg001) -- [#2414](https://github.com/request/request/pull/2414) Improve test-timeout reliability (@mscdex) - -### v2.76.0 (2016/10/25) -- [#2424](https://github.com/request/request/pull/2424) Handle buffers directly instead of using "bl" (@zertosh) -- [#2415](https://github.com/request/request/pull/2415) Re-enable timeout tests on Travis + other fixes (@mscdex) -- [#2431](https://github.com/request/request/pull/2431) Improve timeouts accuracy and node v6.8.0+ compatibility (@mscdex, @greenkeeperio-bot) -- [#2428](https://github.com/request/request/pull/2428) Update qs to version 6.3.0 🚀 (@greenkeeperio-bot) -- [#2420](https://github.com/request/request/pull/2420) change .on to .once, remove possible memory leaks (@duereg) -- [#2426](https://github.com/request/request/pull/2426) Remove "isFunction" helper in favor of "typeof" check (@zertosh) -- [#2425](https://github.com/request/request/pull/2425) Simplify "defer" helper creation (@zertosh) -- [#2402](https://github.com/request/request/pull/2402) form-data@2.1.1 breaks build 🚨 (@greenkeeperio-bot) -- [#2393](https://github.com/request/request/pull/2393) Update form-data to version 2.1.0 🚀 (@greenkeeperio-bot) - -### v2.75.0 (2016/09/17) -- [#2381](https://github.com/request/request/pull/2381) Drop support for Node 0.10 (@simov) -- [#2377](https://github.com/request/request/pull/2377) Update form-data to version 2.0.0 🚀 (@greenkeeperio-bot) -- [#2353](https://github.com/request/request/pull/2353) Add greenkeeper ignored packages (@simov) -- [#2351](https://github.com/request/request/pull/2351) Update karma-tap to version 3.0.1 🚀 (@greenkeeperio-bot) -- [#2348](https://github.com/request/request/pull/2348) form-data@1.0.1 breaks build 🚨 (@greenkeeperio-bot) -- [#2349](https://github.com/request/request/pull/2349) Check error type instead of string (@scotttrinh) - -### v2.74.0 (2016/07/22) -- [#2295](https://github.com/request/request/pull/2295) Update tough-cookie to 2.3.0 (@stash-sfdc) -- [#2280](https://github.com/request/request/pull/2280) Update karma-tap to version 2.0.1 🚀 (@greenkeeperio-bot) - -### v2.73.0 (2016/07/09) -- [#2240](https://github.com/request/request/pull/2240) Remove connectionErrorHandler to fix #1903 (@zarenner) -- [#2251](https://github.com/request/request/pull/2251) tape@4.6.0 breaks build 🚨 (@greenkeeperio-bot) -- [#2225](https://github.com/request/request/pull/2225) Update docs (@ArtskydJ) -- [#2203](https://github.com/request/request/pull/2203) Update browserify to version 13.0.1 🚀 (@greenkeeperio-bot) -- [#2275](https://github.com/request/request/pull/2275) Update karma to version 1.1.1 🚀 (@greenkeeperio-bot) -- [#2204](https://github.com/request/request/pull/2204) Add codecov.yml and disable PR comments (@simov) -- [#2212](https://github.com/request/request/pull/2212) Fix link to http.IncomingMessage documentation (@nazieb) -- [#2208](https://github.com/request/request/pull/2208) Update to form-data RC4 and pass null values to it (@simov) -- [#2207](https://github.com/request/request/pull/2207) Move aws4 require statement to the top (@simov) -- [#2199](https://github.com/request/request/pull/2199) Update karma-coverage to version 1.0.0 🚀 (@greenkeeperio-bot) -- [#2206](https://github.com/request/request/pull/2206) Update qs to version 6.2.0 🚀 (@greenkeeperio-bot) -- [#2205](https://github.com/request/request/pull/2205) Use server-destory to close hanging sockets in tests (@simov) -- [#2200](https://github.com/request/request/pull/2200) Update karma-cli to version 1.0.0 🚀 (@greenkeeperio-bot) - -### v2.72.0 (2016/04/17) -- [#2176](https://github.com/request/request/pull/2176) Do not try to pipe Gzip responses with no body (@simov) -- [#2175](https://github.com/request/request/pull/2175) Add 'delete' alias for the 'del' API method (@simov, @MuhanZou) -- [#2172](https://github.com/request/request/pull/2172) Add support for deflate content encoding (@czardoz) -- [#2169](https://github.com/request/request/pull/2169) Add callback option (@simov) -- [#2165](https://github.com/request/request/pull/2165) Check for self.req existence inside the write method (@simov) -- [#2167](https://github.com/request/request/pull/2167) Fix TravisCI badge reference master branch (@a0viedo) - -### v2.71.0 (2016/04/12) -- [#2164](https://github.com/request/request/pull/2164) Catch errors from the underlying http module (@simov) - -### v2.70.0 (2016/04/05) -- [#2147](https://github.com/request/request/pull/2147) Update eslint to version 2.5.3 🚀 (@simov, @greenkeeperio-bot) -- [#2009](https://github.com/request/request/pull/2009) Support JSON stringify replacer argument. (@elyobo) -- [#2142](https://github.com/request/request/pull/2142) Update eslint to version 2.5.1 🚀 (@greenkeeperio-bot) -- [#2128](https://github.com/request/request/pull/2128) Update browserify-istanbul to version 2.0.0 🚀 (@greenkeeperio-bot) -- [#2115](https://github.com/request/request/pull/2115) Update eslint to version 2.3.0 🚀 (@simov, @greenkeeperio-bot) -- [#2089](https://github.com/request/request/pull/2089) Fix badges (@simov) -- [#2092](https://github.com/request/request/pull/2092) Update browserify-istanbul to version 1.0.0 🚀 (@greenkeeperio-bot) -- [#2079](https://github.com/request/request/pull/2079) Accept read stream as body option (@simov) -- [#2070](https://github.com/request/request/pull/2070) Update bl to version 1.1.2 🚀 (@greenkeeperio-bot) -- [#2063](https://github.com/request/request/pull/2063) Up bluebird and oauth-sign (@simov) -- [#2058](https://github.com/request/request/pull/2058) Karma fixes for latest versions (@eiriksm) -- [#2057](https://github.com/request/request/pull/2057) Update contributing guidelines (@simov) -- [#2054](https://github.com/request/request/pull/2054) Update qs to version 6.1.0 🚀 (@greenkeeperio-bot) - -### v2.69.0 (2016/01/27) -- [#2041](https://github.com/request/request/pull/2041) restore aws4 as regular dependency (@rmg) - -### v2.68.0 (2016/01/27) -- [#2036](https://github.com/request/request/pull/2036) Add AWS Signature Version 4 (@simov, @mirkods) -- [#2022](https://github.com/request/request/pull/2022) Convert numeric multipart bodies to string (@simov, @feross) -- [#2024](https://github.com/request/request/pull/2024) Update har-validator dependency for nsp advisory #76 (@TylerDixon) -- [#2016](https://github.com/request/request/pull/2016) Update qs to version 6.0.2 🚀 (@greenkeeperio-bot) -- [#2007](https://github.com/request/request/pull/2007) Use the `extend` module instead of util._extend (@simov) -- [#2003](https://github.com/request/request/pull/2003) Update browserify to version 13.0.0 🚀 (@greenkeeperio-bot) -- [#1989](https://github.com/request/request/pull/1989) Update buffer-equal to version 1.0.0 🚀 (@greenkeeperio-bot) -- [#1956](https://github.com/request/request/pull/1956) Check form-data content-length value before setting up the header (@jongyoonlee) -- [#1958](https://github.com/request/request/pull/1958) Use IncomingMessage.destroy method (@simov) -- [#1952](https://github.com/request/request/pull/1952) Adds example for Tor proxy (@prometheansacrifice) -- [#1943](https://github.com/request/request/pull/1943) Update eslint to version 1.10.3 🚀 (@simov, @greenkeeperio-bot) -- [#1924](https://github.com/request/request/pull/1924) Update eslint to version 1.10.1 🚀 (@greenkeeperio-bot) -- [#1915](https://github.com/request/request/pull/1915) Remove content-length and transfer-encoding headers from defaultProxyHeaderWhiteList (@yaxia) - -### v2.67.0 (2015/11/19) -- [#1913](https://github.com/request/request/pull/1913) Update http-signature to version 1.1.0 🚀 (@greenkeeperio-bot) - -### v2.66.0 (2015/11/18) -- [#1906](https://github.com/request/request/pull/1906) Update README URLs based on HTTP redirects (@ReadmeCritic) -- [#1905](https://github.com/request/request/pull/1905) Convert typed arrays into regular buffers (@simov) -- [#1902](https://github.com/request/request/pull/1902) node-uuid@1.4.7 breaks build 🚨 (@greenkeeperio-bot) -- [#1894](https://github.com/request/request/pull/1894) Fix tunneling after redirection from https (Original: #1881) (@simov, @falms) -- [#1893](https://github.com/request/request/pull/1893) Update eslint to version 1.9.0 🚀 (@greenkeeperio-bot) -- [#1852](https://github.com/request/request/pull/1852) Update eslint to version 1.7.3 🚀 (@simov, @greenkeeperio-bot, @paulomcnally, @michelsalib, @arbaaz, @nsklkn, @LoicMahieu, @JoshWillik, @jzaefferer, @ryanwholey, @djchie, @thisconnect, @mgenereu, @acroca, @Sebmaster, @KoltesDigital) -- [#1876](https://github.com/request/request/pull/1876) Implement loose matching for har mime types (@simov) -- [#1875](https://github.com/request/request/pull/1875) Update bluebird to version 3.0.2 🚀 (@simov, @greenkeeperio-bot) -- [#1871](https://github.com/request/request/pull/1871) Update browserify to version 12.0.1 🚀 (@greenkeeperio-bot) -- [#1866](https://github.com/request/request/pull/1866) Add missing quotes on x-token property in README (@miguelmota) -- [#1874](https://github.com/request/request/pull/1874) Fix typo in README.md (@gswalden) -- [#1860](https://github.com/request/request/pull/1860) Improve referer header tests and docs (@simov) -- [#1861](https://github.com/request/request/pull/1861) Remove redundant call to Stream constructor (@watson) -- [#1857](https://github.com/request/request/pull/1857) Fix Referer header to point to the original host name (@simov) -- [#1850](https://github.com/request/request/pull/1850) Update karma-coverage to version 0.5.3 🚀 (@greenkeeperio-bot) -- [#1847](https://github.com/request/request/pull/1847) Use node's latest version when building (@simov) -- [#1836](https://github.com/request/request/pull/1836) Tunnel: fix wrong property name (@KoltesDigital) -- [#1820](https://github.com/request/request/pull/1820) Set href as request.js uses it (@mgenereu) -- [#1840](https://github.com/request/request/pull/1840) Update http-signature to version 1.0.2 🚀 (@greenkeeperio-bot) -- [#1845](https://github.com/request/request/pull/1845) Update istanbul to version 0.4.0 🚀 (@greenkeeperio-bot) - -### v2.65.0 (2015/10/11) -- [#1833](https://github.com/request/request/pull/1833) Update aws-sign2 to version 0.6.0 🚀 (@greenkeeperio-bot) -- [#1811](https://github.com/request/request/pull/1811) Enable loose cookie parsing in tough-cookie (@Sebmaster) -- [#1830](https://github.com/request/request/pull/1830) Bring back tilde ranges for all dependencies (@simov) -- [#1821](https://github.com/request/request/pull/1821) Implement support for RFC 2617 MD5-sess algorithm. (@BigDSK) -- [#1828](https://github.com/request/request/pull/1828) Updated qs dependency to 5.2.0 (@acroca) -- [#1818](https://github.com/request/request/pull/1818) Extract `readResponseBody` method out of `onRequestResponse` (@pvoisin) -- [#1819](https://github.com/request/request/pull/1819) Run stringify once (@mgenereu) -- [#1814](https://github.com/request/request/pull/1814) Updated har-validator to version 2.0.2 (@greenkeeperio-bot) -- [#1807](https://github.com/request/request/pull/1807) Updated tough-cookie to version 2.1.0 (@greenkeeperio-bot) -- [#1800](https://github.com/request/request/pull/1800) Add caret ranges for devDependencies, except eslint (@simov) -- [#1799](https://github.com/request/request/pull/1799) Updated karma-browserify to version 4.4.0 (@greenkeeperio-bot) -- [#1797](https://github.com/request/request/pull/1797) Updated tape to version 4.2.0 (@greenkeeperio-bot) -- [#1788](https://github.com/request/request/pull/1788) Pinned all dependencies (@greenkeeperio-bot) - -### v2.64.0 (2015/09/25) -- [#1787](https://github.com/request/request/pull/1787) npm ignore examples, release.sh and disabled.appveyor.yml (@thisconnect) -- [#1775](https://github.com/request/request/pull/1775) Fix typo in README.md (@djchie) -- [#1776](https://github.com/request/request/pull/1776) Changed word 'conjuction' to read 'conjunction' in README.md (@ryanwholey) -- [#1785](https://github.com/request/request/pull/1785) Revert: Set default application/json content-type when using json option #1772 (@simov) - -### v2.63.0 (2015/09/21) -- [#1772](https://github.com/request/request/pull/1772) Set default application/json content-type when using json option (@jzaefferer) - -### v2.62.0 (2015/09/15) -- [#1768](https://github.com/request/request/pull/1768) Add node 4.0 to the list of build targets (@simov) -- [#1767](https://github.com/request/request/pull/1767) Query strings now cooperate with unix sockets (@JoshWillik) -- [#1750](https://github.com/request/request/pull/1750) Revert doc about installation of tough-cookie added in #884 (@LoicMahieu) -- [#1746](https://github.com/request/request/pull/1746) Missed comma in Readme (@nsklkn) -- [#1743](https://github.com/request/request/pull/1743) Fix options not being initialized in defaults method (@simov) - -### v2.61.0 (2015/08/19) -- [#1721](https://github.com/request/request/pull/1721) Minor fix in README.md (@arbaaz) -- [#1733](https://github.com/request/request/pull/1733) Avoid useless Buffer transformation (@michelsalib) -- [#1726](https://github.com/request/request/pull/1726) Update README.md (@paulomcnally) -- [#1715](https://github.com/request/request/pull/1715) Fix forever option in node > 0.10 #1709 (@calibr) -- [#1716](https://github.com/request/request/pull/1716) Do not create Buffer from Object in setContentLength(iojs v3.0 issue) (@calibr) -- [#1711](https://github.com/request/request/pull/1711) Add ability to detect connect timeouts (@kevinburke) -- [#1712](https://github.com/request/request/pull/1712) Set certificate expiration to August 2, 2018 (@kevinburke) -- [#1700](https://github.com/request/request/pull/1700) debug() when JSON.parse() on a response body fails (@phillipj) - -### v2.60.0 (2015/07/21) -- [#1687](https://github.com/request/request/pull/1687) Fix caseless bug - content-type not being set for multipart/form-data (@simov, @garymathews) - -### v2.59.0 (2015/07/20) -- [#1671](https://github.com/request/request/pull/1671) Add tests and docs for using the agent, agentClass, agentOptions and forever options. - Forever option defaults to using http(s).Agent in node 0.12+ (@simov) -- [#1679](https://github.com/request/request/pull/1679) Fix - do not remove OAuth param when using OAuth realm (@simov, @jhalickman) -- [#1668](https://github.com/request/request/pull/1668) updated dependencies (@deamme) -- [#1656](https://github.com/request/request/pull/1656) Fix form method (@simov) -- [#1651](https://github.com/request/request/pull/1651) Preserve HEAD method when using followAllRedirects (@simov) -- [#1652](https://github.com/request/request/pull/1652) Update `encoding` option documentation in README.md (@daniel347x) -- [#1650](https://github.com/request/request/pull/1650) Allow content-type overriding when using the `form` option (@simov) -- [#1646](https://github.com/request/request/pull/1646) Clarify the nature of setting `ca` in `agentOptions` (@jeffcharles) - -### v2.58.0 (2015/06/16) -- [#1638](https://github.com/request/request/pull/1638) Use the `extend` module to deep extend in the defaults method (@simov) -- [#1631](https://github.com/request/request/pull/1631) Move tunnel logic into separate module (@simov) -- [#1634](https://github.com/request/request/pull/1634) Fix OAuth query transport_method (@simov) -- [#1603](https://github.com/request/request/pull/1603) Add codecov (@simov) - -### v2.57.0 (2015/05/31) -- [#1615](https://github.com/request/request/pull/1615) Replace '.client' with '.socket' as the former was deprecated in 2.2.0. (@ChALkeR) - -### v2.56.0 (2015/05/28) -- [#1610](https://github.com/request/request/pull/1610) Bump module dependencies (@simov) -- [#1600](https://github.com/request/request/pull/1600) Extract the querystring logic into separate module (@simov) -- [#1607](https://github.com/request/request/pull/1607) Re-generate certificates (@simov) -- [#1599](https://github.com/request/request/pull/1599) Move getProxyFromURI logic below the check for Invaild URI (#1595) (@simov) -- [#1598](https://github.com/request/request/pull/1598) Fix the way http verbs are defined in order to please intellisense IDEs (@simov, @flannelJesus) -- [#1591](https://github.com/request/request/pull/1591) A few minor fixes: (@simov) -- [#1584](https://github.com/request/request/pull/1584) Refactor test-default tests (according to comments in #1430) (@simov) -- [#1585](https://github.com/request/request/pull/1585) Fixing documentation regarding TLS options (#1583) (@mainakae) -- [#1574](https://github.com/request/request/pull/1574) Refresh the oauth_nonce on redirect (#1573) (@simov) -- [#1570](https://github.com/request/request/pull/1570) Discovered tests that weren't properly running (@seanstrom) -- [#1569](https://github.com/request/request/pull/1569) Fix pause before response arrives (@kevinoid) -- [#1558](https://github.com/request/request/pull/1558) Emit error instead of throw (@simov) -- [#1568](https://github.com/request/request/pull/1568) Fix stall when piping gzipped response (@kevinoid) -- [#1560](https://github.com/request/request/pull/1560) Update combined-stream (@apechimp) -- [#1543](https://github.com/request/request/pull/1543) Initial support for oauth_body_hash on json payloads (@simov, @aesopwolf) -- [#1541](https://github.com/request/request/pull/1541) Fix coveralls (@simov) -- [#1540](https://github.com/request/request/pull/1540) Fix recursive defaults for convenience methods (@simov) -- [#1536](https://github.com/request/request/pull/1536) More eslint style rules (@froatsnook) -- [#1533](https://github.com/request/request/pull/1533) Adding dependency status bar to README.md (@YasharF) -- [#1539](https://github.com/request/request/pull/1539) ensure the latest version of har-validator is included (@ahmadnassri) -- [#1516](https://github.com/request/request/pull/1516) forever+pool test (@devTristan) - -### v2.55.0 (2015/04/05) -- [#1520](https://github.com/request/request/pull/1520) Refactor defaults (@simov) -- [#1525](https://github.com/request/request/pull/1525) Delete request headers with undefined value. (@froatsnook) -- [#1521](https://github.com/request/request/pull/1521) Add promise tests (@simov) -- [#1518](https://github.com/request/request/pull/1518) Fix defaults (@simov) -- [#1515](https://github.com/request/request/pull/1515) Allow static invoking of convenience methods (@simov) -- [#1505](https://github.com/request/request/pull/1505) Fix multipart boundary extraction regexp (@simov) -- [#1510](https://github.com/request/request/pull/1510) Fix basic auth form data (@simov) - -### v2.54.0 (2015/03/24) -- [#1501](https://github.com/request/request/pull/1501) HTTP Archive 1.2 support (@ahmadnassri) -- [#1486](https://github.com/request/request/pull/1486) Add a test for the forever agent (@akshayp) -- [#1500](https://github.com/request/request/pull/1500) Adding handling for no auth method and null bearer (@philberg) -- [#1498](https://github.com/request/request/pull/1498) Add table of contents in readme (@simov) -- [#1477](https://github.com/request/request/pull/1477) Add support for qs options via qsOptions key (@simov) -- [#1496](https://github.com/request/request/pull/1496) Parameters encoded to base 64 should be decoded as UTF-8, not ASCII. (@albanm) -- [#1494](https://github.com/request/request/pull/1494) Update eslint (@froatsnook) -- [#1474](https://github.com/request/request/pull/1474) Require Colon in Basic Auth (@erykwalder) -- [#1481](https://github.com/request/request/pull/1481) Fix baseUrl and redirections. (@burningtree) -- [#1469](https://github.com/request/request/pull/1469) Feature/base url (@froatsnook) -- [#1459](https://github.com/request/request/pull/1459) Add option to time request/response cycle (including rollup of redirects) (@aaron-em) -- [#1468](https://github.com/request/request/pull/1468) Re-enable io.js/node 0.12 build (@simov, @mikeal, @BBB) -- [#1442](https://github.com/request/request/pull/1442) Fixed the issue with strictSSL tests on 0.12 & io.js by explicitly setting a cipher that matches the cert. (@BBB, @nickmccurdy, @demohi, @simov, @0x4139) -- [#1460](https://github.com/request/request/pull/1460) localAddress or proxy config is lost when redirecting (@simov, @0x4139) -- [#1453](https://github.com/request/request/pull/1453) Test on Node.js 0.12 and io.js with allowed failures (@nickmccurdy, @demohi) -- [#1426](https://github.com/request/request/pull/1426) Fixing tests to pass on io.js and node 0.12 (only test-https.js stiff failing) (@mikeal) -- [#1446](https://github.com/request/request/pull/1446) Missing HTTP referer header with redirects Fixes #1038 (@simov, @guimon) -- [#1428](https://github.com/request/request/pull/1428) Deprecate Node v0.8.x (@nylen) -- [#1436](https://github.com/request/request/pull/1436) Add ability to set a requester without setting default options (@tikotzky) -- [#1435](https://github.com/request/request/pull/1435) dry up verb methods (@sethpollack) -- [#1423](https://github.com/request/request/pull/1423) Allow fully qualified multipart content-type header (@simov) -- [#1430](https://github.com/request/request/pull/1430) Fix recursive requester (@tikotzky) -- [#1429](https://github.com/request/request/pull/1429) Throw error when making HEAD request with a body (@tikotzky) -- [#1419](https://github.com/request/request/pull/1419) Add note that the project is broken in 0.12.x (@nylen) -- [#1413](https://github.com/request/request/pull/1413) Fix basic auth (@simov) -- [#1397](https://github.com/request/request/pull/1397) Improve pipe-from-file tests (@nylen) - -### v2.53.0 (2015/02/02) -- [#1396](https://github.com/request/request/pull/1396) Do not rfc3986 escape JSON bodies (@nylen, @simov) -- [#1392](https://github.com/request/request/pull/1392) Improve `timeout` option description (@watson) - -### v2.52.0 (2015/02/02) -- [#1383](https://github.com/request/request/pull/1383) Add missing HTTPS options that were not being passed to tunnel (@brichard19) (@nylen) -- [#1388](https://github.com/request/request/pull/1388) Upgrade mime-types package version (@roderickhsiao) -- [#1389](https://github.com/request/request/pull/1389) Revise Setup Tunnel Function (@seanstrom) -- [#1374](https://github.com/request/request/pull/1374) Allow explicitly disabling tunneling for proxied https destinations (@nylen) -- [#1376](https://github.com/request/request/pull/1376) Use karma-browserify for tests. Add browser test coverage reporter. (@eiriksm) -- [#1366](https://github.com/request/request/pull/1366) Refactor OAuth into separate module (@simov) -- [#1373](https://github.com/request/request/pull/1373) Rewrite tunnel test to be pure Node.js (@nylen) -- [#1371](https://github.com/request/request/pull/1371) Upgrade test reporter (@nylen) -- [#1360](https://github.com/request/request/pull/1360) Refactor basic, bearer, digest auth logic into separate class (@simov) -- [#1354](https://github.com/request/request/pull/1354) Remove circular dependency from debugging code (@nylen) -- [#1351](https://github.com/request/request/pull/1351) Move digest auth into private prototype method (@simov) -- [#1352](https://github.com/request/request/pull/1352) Update hawk dependency to ~2.3.0 (@mridgway) -- [#1353](https://github.com/request/request/pull/1353) Correct travis-ci badge (@dogancelik) -- [#1349](https://github.com/request/request/pull/1349) Make sure we return on errored browser requests. (@eiriksm) -- [#1346](https://github.com/request/request/pull/1346) getProxyFromURI Extraction Refactor (@seanstrom) -- [#1337](https://github.com/request/request/pull/1337) Standardize test ports on 6767 (@nylen) -- [#1341](https://github.com/request/request/pull/1341) Emit FormData error events as Request error events (@nylen, @rwky) -- [#1343](https://github.com/request/request/pull/1343) Clean up readme badges, and add Travis and Coveralls badges (@nylen) -- [#1345](https://github.com/request/request/pull/1345) Update README.md (@Aaron-Hartwig) -- [#1338](https://github.com/request/request/pull/1338) Always wait for server.close() callback in tests (@nylen) -- [#1342](https://github.com/request/request/pull/1342) Add mock https server and redo start of browser tests for this purpose. (@eiriksm) -- [#1339](https://github.com/request/request/pull/1339) Improve auth docs (@nylen) -- [#1335](https://github.com/request/request/pull/1335) Add support for OAuth plaintext signature method (@simov) -- [#1332](https://github.com/request/request/pull/1332) Add clean script to remove test-browser.js after the tests run (@seanstrom) -- [#1327](https://github.com/request/request/pull/1327) Fix errors generating coverage reports. (@nylen) -- [#1330](https://github.com/request/request/pull/1330) Return empty buffer upon empty response body and encoding is set to null (@seanstrom) -- [#1326](https://github.com/request/request/pull/1326) Use faster container-based infrastructure on Travis (@nylen) -- [#1315](https://github.com/request/request/pull/1315) Implement rfc3986 option (@simov, @nylen, @apoco, @DullReferenceException, @mmalecki, @oliamb, @cliffcrosland, @LewisJEllis, @eiriksm, @poislagarde) -- [#1314](https://github.com/request/request/pull/1314) Detect urlencoded form data header via regex (@simov) -- [#1317](https://github.com/request/request/pull/1317) Improve OAuth1.0 server side flow example (@simov) - -### v2.51.0 (2014/12/10) -- [#1310](https://github.com/request/request/pull/1310) Revert changes introduced in https://github.com/request/request/pull/1282 (@simov) - -### v2.50.0 (2014/12/09) -- [#1308](https://github.com/request/request/pull/1308) Add browser test to keep track of browserify compability. (@eiriksm) -- [#1299](https://github.com/request/request/pull/1299) Add optional support for jsonReviver (@poislagarde) -- [#1277](https://github.com/request/request/pull/1277) Add Coveralls configuration (@simov) -- [#1307](https://github.com/request/request/pull/1307) Upgrade form-data, add back browserify compability. Fixes #455. (@eiriksm) -- [#1305](https://github.com/request/request/pull/1305) Fix typo in README.md (@LewisJEllis) -- [#1288](https://github.com/request/request/pull/1288) Update README.md to explain custom file use case (@cliffcrosland) - -### v2.49.0 (2014/11/28) -- [#1295](https://github.com/request/request/pull/1295) fix(proxy): no-proxy false positive (@oliamb) -- [#1292](https://github.com/request/request/pull/1292) Upgrade `caseless` to 0.8.1 (@mmalecki) -- [#1276](https://github.com/request/request/pull/1276) Set transfer encoding for multipart/related to chunked by default (@simov) -- [#1275](https://github.com/request/request/pull/1275) Fix multipart content-type headers detection (@simov) -- [#1269](https://github.com/request/request/pull/1269) adds streams example for review (@tbuchok) -- [#1238](https://github.com/request/request/pull/1238) Add examples README.md (@simov) - -### v2.48.0 (2014/11/12) -- [#1263](https://github.com/request/request/pull/1263) Fixed a syntax error / typo in README.md (@xna2) -- [#1253](https://github.com/request/request/pull/1253) Add multipart chunked flag (@simov, @nylen) -- [#1251](https://github.com/request/request/pull/1251) Clarify that defaults() does not modify global defaults (@nylen) -- [#1250](https://github.com/request/request/pull/1250) Improve documentation for pool and maxSockets options (@nylen) -- [#1237](https://github.com/request/request/pull/1237) Documenting error handling when using streams (@vmattos) -- [#1244](https://github.com/request/request/pull/1244) Finalize changelog command (@nylen) -- [#1241](https://github.com/request/request/pull/1241) Fix typo (@alexanderGugel) -- [#1223](https://github.com/request/request/pull/1223) Show latest version number instead of "upcoming" in changelog (@nylen) -- [#1236](https://github.com/request/request/pull/1236) Document how to use custom CA in README (#1229) (@hypesystem) -- [#1228](https://github.com/request/request/pull/1228) Support for oauth with RSA-SHA1 signing (@nylen) -- [#1216](https://github.com/request/request/pull/1216) Made json and multipart options coexist (@nylen, @simov) -- [#1225](https://github.com/request/request/pull/1225) Allow header white/exclusive lists in any case. (@RReverser) - -### v2.47.0 (2014/10/26) -- [#1222](https://github.com/request/request/pull/1222) Move from mikeal/request to request/request (@nylen) -- [#1220](https://github.com/request/request/pull/1220) update qs dependency to 2.3.1 (@FredKSchott) -- [#1212](https://github.com/request/request/pull/1212) Improve tests/test-timeout.js (@nylen) -- [#1219](https://github.com/request/request/pull/1219) remove old globalAgent workaround for node 0.4 (@request) -- [#1214](https://github.com/request/request/pull/1214) Remove cruft left over from optional dependencies (@nylen) -- [#1215](https://github.com/request/request/pull/1215) Add proxyHeaderExclusiveList option for proxy-only headers. (@RReverser) -- [#1211](https://github.com/request/request/pull/1211) Allow 'Host' header instead of 'host' and remember case across redirects (@nylen) -- [#1208](https://github.com/request/request/pull/1208) Improve release script (@nylen) -- [#1213](https://github.com/request/request/pull/1213) Support for custom cookie store (@nylen, @mitsuru) -- [#1197](https://github.com/request/request/pull/1197) Clean up some code around setting the agent (@FredKSchott) -- [#1209](https://github.com/request/request/pull/1209) Improve multipart form append test (@simov) -- [#1207](https://github.com/request/request/pull/1207) Update changelog (@nylen) -- [#1185](https://github.com/request/request/pull/1185) Stream multipart/related bodies (@simov) - -### v2.46.0 (2014/10/23) -- [#1198](https://github.com/request/request/pull/1198) doc for TLS/SSL protocol options (@shawnzhu) -- [#1200](https://github.com/request/request/pull/1200) Add a Gitter chat badge to README.md (@gitter-badger) -- [#1196](https://github.com/request/request/pull/1196) Upgrade taper test reporter to v0.3.0 (@nylen) -- [#1199](https://github.com/request/request/pull/1199) Fix lint error: undeclared var i (@nylen) -- [#1191](https://github.com/request/request/pull/1191) Move self.proxy decision logic out of init and into a helper (@FredKSchott) -- [#1190](https://github.com/request/request/pull/1190) Move _buildRequest() logic back into init (@FredKSchott) -- [#1186](https://github.com/request/request/pull/1186) Support Smarter Unix URL Scheme (@FredKSchott) -- [#1178](https://github.com/request/request/pull/1178) update form documentation for new usage (@FredKSchott) -- [#1180](https://github.com/request/request/pull/1180) Enable no-mixed-requires linting rule (@nylen) -- [#1184](https://github.com/request/request/pull/1184) Don't forward authorization header across redirects to different hosts (@nylen) -- [#1183](https://github.com/request/request/pull/1183) Correct README about pre and postamble CRLF using multipart and not mult... (@netpoetica) -- [#1179](https://github.com/request/request/pull/1179) Lint tests directory (@nylen) -- [#1169](https://github.com/request/request/pull/1169) add metadata for form-data file field (@dotcypress) -- [#1173](https://github.com/request/request/pull/1173) remove optional dependencies (@seanstrom) -- [#1165](https://github.com/request/request/pull/1165) Cleanup event listeners and remove function creation from init (@FredKSchott) -- [#1174](https://github.com/request/request/pull/1174) update the request.cookie docs to have a valid cookie example (@seanstrom) -- [#1168](https://github.com/request/request/pull/1168) create a detach helper and use detach helper in replace of nextTick (@seanstrom) -- [#1171](https://github.com/request/request/pull/1171) in post can send form data and use callback (@MiroRadenovic) -- [#1159](https://github.com/request/request/pull/1159) accept charset for x-www-form-urlencoded content-type (@seanstrom) -- [#1157](https://github.com/request/request/pull/1157) Update README.md: body with json=true (@Rob--W) -- [#1164](https://github.com/request/request/pull/1164) Disable tests/test-timeout.js on Travis (@nylen) -- [#1153](https://github.com/request/request/pull/1153) Document how to run a single test (@nylen) -- [#1144](https://github.com/request/request/pull/1144) adds documentation for the "response" event within the streaming section (@tbuchok) -- [#1162](https://github.com/request/request/pull/1162) Update eslintrc file to no longer allow past errors (@FredKSchott) -- [#1155](https://github.com/request/request/pull/1155) Support/use self everywhere (@seanstrom) -- [#1161](https://github.com/request/request/pull/1161) fix no-use-before-define lint warnings (@emkay) -- [#1156](https://github.com/request/request/pull/1156) adding curly brackets to get rid of lint errors (@emkay) -- [#1151](https://github.com/request/request/pull/1151) Fix localAddress test on OS X (@nylen) -- [#1145](https://github.com/request/request/pull/1145) documentation: fix outdated reference to setCookieSync old name in README (@FredKSchott) -- [#1131](https://github.com/request/request/pull/1131) Update pool documentation (@FredKSchott) -- [#1143](https://github.com/request/request/pull/1143) Rewrite all tests to use tape (@nylen) -- [#1137](https://github.com/request/request/pull/1137) Add ability to specifiy querystring lib in options. (@jgrund) -- [#1138](https://github.com/request/request/pull/1138) allow hostname and port in place of host on uri (@cappslock) -- [#1134](https://github.com/request/request/pull/1134) Fix multiple redirects and `self.followRedirect` (@blakeembrey) -- [#1130](https://github.com/request/request/pull/1130) documentation fix: add note about npm test for contributing (@FredKSchott) -- [#1120](https://github.com/request/request/pull/1120) Support/refactor request setup tunnel (@seanstrom) -- [#1129](https://github.com/request/request/pull/1129) linting fix: convert double quote strings to use single quotes (@FredKSchott) -- [#1124](https://github.com/request/request/pull/1124) linting fix: remove unneccesary semi-colons (@FredKSchott) - -### v2.45.0 (2014/10/06) -- [#1128](https://github.com/request/request/pull/1128) Add test for setCookie regression (@nylen) -- [#1127](https://github.com/request/request/pull/1127) added tests around using objects as values in a query string (@bcoe) -- [#1103](https://github.com/request/request/pull/1103) Support/refactor request constructor (@nylen, @seanstrom) -- [#1119](https://github.com/request/request/pull/1119) add basic linting to request library (@FredKSchott) -- [#1121](https://github.com/request/request/pull/1121) Revert "Explicitly use sync versions of cookie functions" (@nylen) -- [#1118](https://github.com/request/request/pull/1118) linting fix: Restructure bad empty if statement (@FredKSchott) -- [#1117](https://github.com/request/request/pull/1117) Fix a bad check for valid URIs (@FredKSchott) -- [#1113](https://github.com/request/request/pull/1113) linting fix: space out operators (@FredKSchott) -- [#1116](https://github.com/request/request/pull/1116) Fix typo in `noProxyHost` definition (@FredKSchott) -- [#1114](https://github.com/request/request/pull/1114) linting fix: Added a `new` operator that was missing when creating and throwing a new error (@FredKSchott) -- [#1096](https://github.com/request/request/pull/1096) No_proxy support (@samcday) -- [#1107](https://github.com/request/request/pull/1107) linting-fix: remove unused variables (@FredKSchott) -- [#1112](https://github.com/request/request/pull/1112) linting fix: Make return values consistent and more straitforward (@FredKSchott) -- [#1111](https://github.com/request/request/pull/1111) linting fix: authPieces was getting redeclared (@FredKSchott) -- [#1105](https://github.com/request/request/pull/1105) Use strict mode in request (@FredKSchott) -- [#1110](https://github.com/request/request/pull/1110) linting fix: replace lazy '==' with more strict '===' (@FredKSchott) -- [#1109](https://github.com/request/request/pull/1109) linting fix: remove function call from if-else conditional statement (@FredKSchott) -- [#1102](https://github.com/request/request/pull/1102) Fix to allow setting a `requester` on recursive calls to `request.defaults` (@tikotzky) -- [#1095](https://github.com/request/request/pull/1095) Tweaking engines in package.json (@pdehaan) -- [#1082](https://github.com/request/request/pull/1082) Forward the socket event from the httpModule request (@seanstrom) -- [#972](https://github.com/request/request/pull/972) Clarify gzip handling in the README (@kevinoid) -- [#1089](https://github.com/request/request/pull/1089) Mention that encoding defaults to utf8, not Buffer (@stuartpb) -- [#1088](https://github.com/request/request/pull/1088) Fix cookie example in README.md and make it more clear (@pipi32167) -- [#1027](https://github.com/request/request/pull/1027) Add support for multipart form data in request options. (@crocket) -- [#1076](https://github.com/request/request/pull/1076) use Request.abort() to abort the request when the request has timed-out (@seanstrom) -- [#1068](https://github.com/request/request/pull/1068) add optional postamble required by .NET multipart requests (@netpoetica) - -### v2.43.0 (2014/09/18) -- [#1057](https://github.com/request/request/pull/1057) Defaults should not overwrite defined options (@davidwood) -- [#1046](https://github.com/request/request/pull/1046) Propagate datastream errors, useful in case gzip fails. (@ZJONSSON, @Janpot) -- [#1063](https://github.com/request/request/pull/1063) copy the input headers object #1060 (@finnp) -- [#1031](https://github.com/request/request/pull/1031) Explicitly use sync versions of cookie functions (@ZJONSSON) -- [#1056](https://github.com/request/request/pull/1056) Fix redirects when passing url.parse(x) as URL to convenience method (@nylen) - -### v2.42.0 (2014/09/04) -- [#1053](https://github.com/request/request/pull/1053) Fix #1051 Parse auth properly when using non-tunneling proxy (@isaacs) - -### v2.41.0 (2014/09/04) -- [#1050](https://github.com/request/request/pull/1050) Pass whitelisted headers to tunneling proxy. Organize all tunneling logic. (@isaacs, @Feldhacker) -- [#1035](https://github.com/request/request/pull/1035) souped up nodei.co badge (@rvagg) -- [#1048](https://github.com/request/request/pull/1048) Aws is now possible over a proxy (@steven-aerts) -- [#1039](https://github.com/request/request/pull/1039) extract out helper functions to a helper file (@seanstrom) -- [#1021](https://github.com/request/request/pull/1021) Support/refactor indexjs (@seanstrom) -- [#1033](https://github.com/request/request/pull/1033) Improve and document debug options (@nylen) -- [#1034](https://github.com/request/request/pull/1034) Fix readme headings (@nylen) -- [#1030](https://github.com/request/request/pull/1030) Allow recursive request.defaults (@tikotzky) -- [#1029](https://github.com/request/request/pull/1029) Fix a couple of typos (@nylen) -- [#675](https://github.com/request/request/pull/675) Checking for SSL fault on connection before reading SSL properties (@VRMink) -- [#989](https://github.com/request/request/pull/989) Added allowRedirect function. Should return true if redirect is allowed or false otherwise (@doronin) -- [#1025](https://github.com/request/request/pull/1025) [fixes #1023] Set self._ended to true once response has ended (@mridgway) -- [#1020](https://github.com/request/request/pull/1020) Add back removed debug metadata (@FredKSchott) -- [#1008](https://github.com/request/request/pull/1008) Moving to module instead of cutomer buffer concatenation. (@mikeal) -- [#770](https://github.com/request/request/pull/770) Added dependency badge for README file; (@timgluz, @mafintosh, @lalitkapoor, @stash, @bobyrizov) -- [#1016](https://github.com/request/request/pull/1016) toJSON no longer results in an infinite loop, returns simple objects (@FredKSchott) -- [#1018](https://github.com/request/request/pull/1018) Remove pre-0.4.4 HTTPS fix (@mmalecki) -- [#1006](https://github.com/request/request/pull/1006) Migrate to caseless, fixes #1001 (@mikeal) -- [#995](https://github.com/request/request/pull/995) Fix parsing array of objects (@sjonnet19) -- [#999](https://github.com/request/request/pull/999) Fix fallback for browserify for optional modules. (@eiriksm) -- [#996](https://github.com/request/request/pull/996) Wrong oauth signature when multiple same param keys exist [updated] (@bengl) - -### v2.40.0 (2014/08/06) -- [#992](https://github.com/request/request/pull/992) Fix security vulnerability. Update qs (@poeticninja) -- [#988](https://github.com/request/request/pull/988) “--” -> “—” (@upisfree) -- [#987](https://github.com/request/request/pull/987) Show optional modules as being loaded by the module that reqeusted them (@iarna) - -### v2.39.0 (2014/07/24) -- [#976](https://github.com/request/request/pull/976) Update README.md (@pvoznenko) - -### v2.38.0 (2014/07/22) -- [#952](https://github.com/request/request/pull/952) Adding support to client certificate with proxy use case (@ofirshaked) -- [#884](https://github.com/request/request/pull/884) Documented tough-cookie installation. (@wbyoung) -- [#935](https://github.com/request/request/pull/935) Correct repository url (@fritx) -- [#963](https://github.com/request/request/pull/963) Update changelog (@nylen) -- [#960](https://github.com/request/request/pull/960) Support gzip with encoding on node pre-v0.9.4 (@kevinoid) -- [#953](https://github.com/request/request/pull/953) Add async Content-Length computation when using form-data (@LoicMahieu) -- [#844](https://github.com/request/request/pull/844) Add support for HTTP[S]_PROXY environment variables. Fixes #595. (@jvmccarthy) -- [#946](https://github.com/request/request/pull/946) defaults: merge headers (@aj0strow) - -### v2.37.0 (2014/07/07) -- [#957](https://github.com/request/request/pull/957) Silence EventEmitter memory leak warning #311 (@watson) -- [#955](https://github.com/request/request/pull/955) check for content-length header before setting it in nextTick (@camilleanne) -- [#951](https://github.com/request/request/pull/951) Add support for gzip content decoding (@kevinoid) -- [#949](https://github.com/request/request/pull/949) Manually enter querystring in form option (@charlespwd) -- [#944](https://github.com/request/request/pull/944) Make request work with browserify (@eiriksm) -- [#943](https://github.com/request/request/pull/943) New mime module (@eiriksm) -- [#927](https://github.com/request/request/pull/927) Bump version of hawk dep. (@samccone) -- [#907](https://github.com/request/request/pull/907) append secureOptions to poolKey (@medovob) - -### v2.35.0 (2014/05/17) -- [#901](https://github.com/request/request/pull/901) Fixes #555 (@pigulla) -- [#897](https://github.com/request/request/pull/897) merge with default options (@vohof) -- [#891](https://github.com/request/request/pull/891) fixes 857 - options object is mutated by calling request (@lalitkapoor) -- [#869](https://github.com/request/request/pull/869) Pipefilter test (@tgohn) -- [#866](https://github.com/request/request/pull/866) Fix typo (@dandv) -- [#861](https://github.com/request/request/pull/861) Add support for RFC 6750 Bearer Tokens (@phedny) -- [#809](https://github.com/request/request/pull/809) upgrade tunnel-proxy to 0.4.0 (@ksato9700) -- [#850](https://github.com/request/request/pull/850) Fix word consistency in readme (@0xNobody) -- [#810](https://github.com/request/request/pull/810) add some exposition to mpu example in README.md (@mikermcneil) -- [#840](https://github.com/request/request/pull/840) improve error reporting for invalid protocols (@FND) -- [#821](https://github.com/request/request/pull/821) added secureOptions back (@nw) -- [#815](https://github.com/request/request/pull/815) Create changelog based on pull requests (@lalitkapoor) - -### v2.34.0 (2014/02/18) -- [#516](https://github.com/request/request/pull/516) UNIX Socket URL Support (@lyuzashi) -- [#801](https://github.com/request/request/pull/801) 794 ignore cookie parsing and domain errors (@lalitkapoor) -- [#802](https://github.com/request/request/pull/802) Added the Apache license to the package.json. (@keskival) -- [#793](https://github.com/request/request/pull/793) Adds content-length calculation when submitting forms using form-data li... (@Juul) -- [#785](https://github.com/request/request/pull/785) Provide ability to override content-type when `json` option used (@vvo) -- [#781](https://github.com/request/request/pull/781) simpler isReadStream function (@joaojeronimo) - -### v2.32.0 (2014/01/16) -- [#767](https://github.com/request/request/pull/767) Use tough-cookie CookieJar sync API (@stash) -- [#764](https://github.com/request/request/pull/764) Case-insensitive authentication scheme (@bobyrizov) -- [#763](https://github.com/request/request/pull/763) Upgrade tough-cookie to 0.10.0 (@stash) -- [#744](https://github.com/request/request/pull/744) Use Cookie.parse (@lalitkapoor) -- [#757](https://github.com/request/request/pull/757) require aws-sign2 (@mafintosh) - -### v2.31.0 (2014/01/08) -- [#645](https://github.com/request/request/pull/645) update twitter api url to v1.1 (@mick) -- [#746](https://github.com/request/request/pull/746) README: Markdown code highlight (@weakish) -- [#745](https://github.com/request/request/pull/745) updating setCookie example to make it clear that the callback is required (@emkay) -- [#742](https://github.com/request/request/pull/742) Add note about JSON output body type (@iansltx) -- [#741](https://github.com/request/request/pull/741) README example is using old cookie jar api (@emkay) -- [#736](https://github.com/request/request/pull/736) Fix callback arguments documentation (@mmalecki) -- [#732](https://github.com/request/request/pull/732) JSHINT: Creating global 'for' variable. Should be 'for (var ...'. (@Fritz-Lium) -- [#730](https://github.com/request/request/pull/730) better HTTP DIGEST support (@dai-shi) -- [#728](https://github.com/request/request/pull/728) Fix TypeError when calling request.cookie (@scarletmeow) -- [#727](https://github.com/request/request/pull/727) fix requester bug (@jchris) -- [#724](https://github.com/request/request/pull/724) README.md: add custom HTTP Headers example. (@tcort) -- [#719](https://github.com/request/request/pull/719) Made a comment gender neutral. (@unsetbit) -- [#715](https://github.com/request/request/pull/715) Request.multipart no longer crashes when header 'Content-type' present (@pastaclub) -- [#710](https://github.com/request/request/pull/710) Fixing listing in callback part of docs. (@lukasz-zak) -- [#696](https://github.com/request/request/pull/696) Edited README.md for formatting and clarity of phrasing (@Zearin) -- [#694](https://github.com/request/request/pull/694) Typo in README (@VRMink) -- [#690](https://github.com/request/request/pull/690) Handle blank password in basic auth. (@diversario) -- [#682](https://github.com/request/request/pull/682) Optional dependencies (@Turbo87) -- [#683](https://github.com/request/request/pull/683) Travis CI support (@Turbo87) -- [#674](https://github.com/request/request/pull/674) change cookie module,to tough-cookie.please check it . (@sxyizhiren) -- [#666](https://github.com/request/request/pull/666) make `ciphers` and `secureProtocol` to work in https request (@richarddong) -- [#656](https://github.com/request/request/pull/656) Test case for #304. (@diversario) -- [#662](https://github.com/request/request/pull/662) option.tunnel to explicitly disable tunneling (@seanmonstar) -- [#659](https://github.com/request/request/pull/659) fix failure when running with NODE_DEBUG=request, and a test for that (@jrgm) -- [#630](https://github.com/request/request/pull/630) Send random cnonce for HTTP Digest requests (@wprl) -- [#619](https://github.com/request/request/pull/619) decouple things a bit (@joaojeronimo) -- [#613](https://github.com/request/request/pull/613) Fixes #583, moved initialization of self.uri.pathname (@lexander) -- [#605](https://github.com/request/request/pull/605) Only include ":" + pass in Basic Auth if it's defined (fixes #602) (@bendrucker) -- [#596](https://github.com/request/request/pull/596) Global agent is being used when pool is specified (@Cauldrath) -- [#594](https://github.com/request/request/pull/594) Emit complete event when there is no callback (@RomainLK) -- [#601](https://github.com/request/request/pull/601) Fixed a small typo (@michalstanko) -- [#589](https://github.com/request/request/pull/589) Prevent setting headers after they are sent (@geek) -- [#587](https://github.com/request/request/pull/587) Global cookie jar disabled by default (@threepointone) -- [#544](https://github.com/request/request/pull/544) Update http-signature version. (@davidlehn) -- [#581](https://github.com/request/request/pull/581) Fix spelling of "ignoring." (@bigeasy) -- [#568](https://github.com/request/request/pull/568) use agentOptions to create agent when specified in request (@SamPlacette) -- [#564](https://github.com/request/request/pull/564) Fix redirections (@criloz) -- [#541](https://github.com/request/request/pull/541) The exported request function doesn't have an auth method (@tschaub) -- [#542](https://github.com/request/request/pull/542) Expose Request class (@regality) -- [#536](https://github.com/request/request/pull/536) Allow explicitly empty user field for basic authentication. (@mikeando) -- [#532](https://github.com/request/request/pull/532) fix typo (@fredericosilva) -- [#497](https://github.com/request/request/pull/497) Added redirect event (@Cauldrath) -- [#503](https://github.com/request/request/pull/503) Fix basic auth for passwords that contain colons (@tonistiigi) -- [#521](https://github.com/request/request/pull/521) Improving test-localAddress.js (@noway) -- [#529](https://github.com/request/request/pull/529) dependencies versions bump (@jodaka) -- [#523](https://github.com/request/request/pull/523) Updating dependencies (@noway) -- [#520](https://github.com/request/request/pull/520) Fixing test-tunnel.js (@noway) -- [#519](https://github.com/request/request/pull/519) Update internal path state on post-creation QS changes (@jblebrun) -- [#510](https://github.com/request/request/pull/510) Add HTTP Signature support. (@davidlehn) -- [#502](https://github.com/request/request/pull/502) Fix POST (and probably other) requests that are retried after 401 Unauthorized (@nylen) -- [#508](https://github.com/request/request/pull/508) Honor the .strictSSL option when using proxies (tunnel-agent) (@jhs) -- [#512](https://github.com/request/request/pull/512) Make password optional to support the format: http://username@hostname/ (@pajato1) -- [#513](https://github.com/request/request/pull/513) add 'localAddress' support (@yyfrankyy) -- [#498](https://github.com/request/request/pull/498) Moving response emit above setHeaders on destination streams (@kenperkins) -- [#490](https://github.com/request/request/pull/490) Empty response body (3-rd argument) must be passed to callback as an empty string (@Olegas) -- [#479](https://github.com/request/request/pull/479) Changing so if Accept header is explicitly set, sending json does not ov... (@RoryH) -- [#475](https://github.com/request/request/pull/475) Use `unescape` from `querystring` (@shimaore) -- [#473](https://github.com/request/request/pull/473) V0.10 compat (@isaacs) -- [#471](https://github.com/request/request/pull/471) Using querystring library from visionmedia (@kbackowski) -- [#461](https://github.com/request/request/pull/461) Strip the UTF8 BOM from a UTF encoded response (@kppullin) -- [#460](https://github.com/request/request/pull/460) hawk 0.10.0 (@hueniverse) -- [#462](https://github.com/request/request/pull/462) if query params are empty, then request path shouldn't end with a '?' (merges cleanly now) (@jaipandya) -- [#456](https://github.com/request/request/pull/456) hawk 0.9.0 (@hueniverse) -- [#429](https://github.com/request/request/pull/429) Copy options before adding callback. (@nrn, @nfriedly, @youurayy, @jplock, @kapetan, @landeiro, @othiym23, @mmalecki) -- [#454](https://github.com/request/request/pull/454) Destroy the response if present when destroying the request (clean merge) (@mafintosh) -- [#310](https://github.com/request/request/pull/310) Twitter Oauth Stuff Out of Date; Now Updated (@joemccann, @isaacs, @mscdex) -- [#413](https://github.com/request/request/pull/413) rename googledoodle.png to .jpg (@nfriedly, @youurayy, @jplock, @kapetan, @landeiro, @othiym23, @mmalecki) -- [#448](https://github.com/request/request/pull/448) Convenience method for PATCH (@mloar) -- [#444](https://github.com/request/request/pull/444) protect against double callbacks on error path (@spollack) -- [#433](https://github.com/request/request/pull/433) Added support for HTTPS cert & key (@mmalecki) -- [#430](https://github.com/request/request/pull/430) Respect specified {Host,host} headers, not just {host} (@andrewschaaf) -- [#415](https://github.com/request/request/pull/415) Fixed a typo. (@jerem) -- [#338](https://github.com/request/request/pull/338) Add more auth options, including digest support (@nylen) -- [#403](https://github.com/request/request/pull/403) Optimize environment lookup to happen once only (@mmalecki) -- [#398](https://github.com/request/request/pull/398) Add more reporting to tests (@mmalecki) -- [#388](https://github.com/request/request/pull/388) Ensure "safe" toJSON doesn't break EventEmitters (@othiym23) -- [#381](https://github.com/request/request/pull/381) Resolving "Invalid signature. Expected signature base string: " (@landeiro) -- [#380](https://github.com/request/request/pull/380) Fixes missing host header on retried request when using forever agent (@mac-) -- [#376](https://github.com/request/request/pull/376) Headers lost on redirect (@kapetan) -- [#375](https://github.com/request/request/pull/375) Fix for missing oauth_timestamp parameter (@jplock) -- [#374](https://github.com/request/request/pull/374) Correct Host header for proxy tunnel CONNECT (@youurayy) -- [#370](https://github.com/request/request/pull/370) Twitter reverse auth uses x_auth_mode not x_auth_type (@drudge) -- [#369](https://github.com/request/request/pull/369) Don't remove x_auth_mode for Twitter reverse auth (@drudge) -- [#344](https://github.com/request/request/pull/344) Make AWS auth signing find headers correctly (@nlf) -- [#363](https://github.com/request/request/pull/363) rfc3986 on base_uri, now passes tests (@jeffmarshall) -- [#362](https://github.com/request/request/pull/362) Running `rfc3986` on `base_uri` in `oauth.hmacsign` instead of just `encodeURIComponent` (@jeffmarshall) -- [#361](https://github.com/request/request/pull/361) Don't create a Content-Length header if we already have it set (@danjenkins) -- [#360](https://github.com/request/request/pull/360) Delete self._form along with everything else on redirect (@jgautier) -- [#355](https://github.com/request/request/pull/355) stop sending erroneous headers on redirected requests (@azylman) -- [#332](https://github.com/request/request/pull/332) Fix #296 - Only set Content-Type if body exists (@Marsup) -- [#343](https://github.com/request/request/pull/343) Allow AWS to work in more situations, added a note in the README on its usage (@nlf) -- [#320](https://github.com/request/request/pull/320) request.defaults() doesn't need to wrap jar() (@StuartHarris) -- [#322](https://github.com/request/request/pull/322) Fix + test for piped into request bumped into redirect. #321 (@alexindigo) -- [#326](https://github.com/request/request/pull/326) Do not try to remove listener from an undefined connection (@CartoDB) -- [#318](https://github.com/request/request/pull/318) Pass servername to tunneling secure socket creation (@isaacs) -- [#317](https://github.com/request/request/pull/317) Workaround for #313 (@isaacs) -- [#293](https://github.com/request/request/pull/293) Allow parser errors to bubble up to request (@mscdex) -- [#290](https://github.com/request/request/pull/290) A test for #289 (@isaacs) -- [#280](https://github.com/request/request/pull/280) Like in node.js print options if NODE_DEBUG contains the word request (@Filirom1) -- [#207](https://github.com/request/request/pull/207) Fix #206 Change HTTP/HTTPS agent when redirecting between protocols (@isaacs) -- [#214](https://github.com/request/request/pull/214) documenting additional behavior of json option (@jphaas, @vpulim) -- [#272](https://github.com/request/request/pull/272) Boundary begins with CRLF? (@elspoono, @timshadel, @naholyr, @nanodocumet, @TehShrike) -- [#284](https://github.com/request/request/pull/284) Remove stray `console.log()` call in multipart generator. (@bcherry) -- [#241](https://github.com/request/request/pull/241) Composability updates suggested by issue #239 (@polotek) -- [#282](https://github.com/request/request/pull/282) OAuth Authorization header contains non-"oauth_" parameters (@jplock) -- [#279](https://github.com/request/request/pull/279) fix tests with boundary by injecting boundry from header (@benatkin) -- [#273](https://github.com/request/request/pull/273) Pipe back pressure issue (@mafintosh) -- [#268](https://github.com/request/request/pull/268) I'm not OCD seriously (@TehShrike) -- [#263](https://github.com/request/request/pull/263) Bug in OAuth key generation for sha1 (@nanodocumet) -- [#265](https://github.com/request/request/pull/265) uncaughtException when redirected to invalid URI (@naholyr) -- [#262](https://github.com/request/request/pull/262) JSON test should check for equality (@timshadel) -- [#261](https://github.com/request/request/pull/261) Setting 'pool' to 'false' does NOT disable Agent pooling (@timshadel) -- [#249](https://github.com/request/request/pull/249) Fix for the fix of your (closed) issue #89 where self.headers[content-length] is set to 0 for all methods (@sethbridges, @polotek, @zephrax, @jeromegn) -- [#255](https://github.com/request/request/pull/255) multipart allow body === '' ( the empty string ) (@Filirom1) -- [#260](https://github.com/request/request/pull/260) fixed just another leak of 'i' (@sreuter) -- [#246](https://github.com/request/request/pull/246) Fixing the set-cookie header (@jeromegn) -- [#243](https://github.com/request/request/pull/243) Dynamic boundary (@zephrax) -- [#240](https://github.com/request/request/pull/240) don't error when null is passed for options (@polotek) -- [#211](https://github.com/request/request/pull/211) Replace all occurrences of special chars in RFC3986 (@chriso, @vpulim) -- [#224](https://github.com/request/request/pull/224) Multipart content-type change (@janjongboom) -- [#217](https://github.com/request/request/pull/217) need to use Authorization (titlecase) header with Tumblr OAuth (@visnup) -- [#203](https://github.com/request/request/pull/203) Fix cookie and redirect bugs and add auth support for HTTPS tunnel (@vpulim) -- [#199](https://github.com/request/request/pull/199) Tunnel (@isaacs) -- [#198](https://github.com/request/request/pull/198) Bugfix on forever usage of util.inherits (@isaacs) -- [#197](https://github.com/request/request/pull/197) Make ForeverAgent work with HTTPS (@isaacs) -- [#193](https://github.com/request/request/pull/193) Fixes GH-119 (@goatslacker) -- [#188](https://github.com/request/request/pull/188) Add abort support to the returned request (@itay) -- [#176](https://github.com/request/request/pull/176) Querystring option (@csainty) -- [#182](https://github.com/request/request/pull/182) Fix request.defaults to support (uri, options, callback) api (@twilson63) -- [#180](https://github.com/request/request/pull/180) Modified the post, put, head and del shortcuts to support uri optional param (@twilson63) -- [#179](https://github.com/request/request/pull/179) fix to add opts in .pipe(stream, opts) (@substack) -- [#177](https://github.com/request/request/pull/177) Issue #173 Support uri as first and optional config as second argument (@twilson63) -- [#170](https://github.com/request/request/pull/170) can't create a cookie in a wrapped request (defaults) (@fabianonunes) -- [#168](https://github.com/request/request/pull/168) Picking off an EasyFix by adding some missing mimetypes. (@serby) -- [#161](https://github.com/request/request/pull/161) Fix cookie jar/headers.cookie collision (#125) (@papandreou) -- [#162](https://github.com/request/request/pull/162) Fix issue #159 (@dpetukhov) -- [#90](https://github.com/request/request/pull/90) add option followAllRedirects to follow post/put redirects (@jroes) -- [#148](https://github.com/request/request/pull/148) Retry Agent (@thejh) -- [#146](https://github.com/request/request/pull/146) Multipart should respect content-type if previously set (@apeace) -- [#144](https://github.com/request/request/pull/144) added "form" option to readme (@petejkim) -- [#133](https://github.com/request/request/pull/133) Fixed cookies parsing (@afanasy) -- [#135](https://github.com/request/request/pull/135) host vs hostname (@iangreenleaf) -- [#132](https://github.com/request/request/pull/132) return the body as a Buffer when encoding is set to null (@jahewson) -- [#112](https://github.com/request/request/pull/112) Support using a custom http-like module (@jhs) -- [#104](https://github.com/request/request/pull/104) Cookie handling contains bugs (@janjongboom) -- [#121](https://github.com/request/request/pull/121) Another patch for cookie handling regression (@jhurliman) -- [#117](https://github.com/request/request/pull/117) Remove the global `i` (@3rd-Eden) -- [#110](https://github.com/request/request/pull/110) Update to Iris Couch URL (@jhs) -- [#86](https://github.com/request/request/pull/86) Can't post binary to multipart requests (@kkaefer) -- [#105](https://github.com/request/request/pull/105) added test for proxy option. (@dominictarr) -- [#102](https://github.com/request/request/pull/102) Implemented cookies - closes issue 82: https://github.com/mikeal/request/issues/82 (@alessioalex) -- [#97](https://github.com/request/request/pull/97) Typo in previous pull causes TypeError in non-0.5.11 versions (@isaacs) -- [#96](https://github.com/request/request/pull/96) Authless parsed url host support (@isaacs) -- [#81](https://github.com/request/request/pull/81) Enhance redirect handling (@danmactough) -- [#78](https://github.com/request/request/pull/78) Don't try to do strictSSL for non-ssl connections (@isaacs) -- [#76](https://github.com/request/request/pull/76) Bug when a request fails and a timeout is set (@Marsup) -- [#70](https://github.com/request/request/pull/70) add test script to package.json (@isaacs, @aheckmann) -- [#73](https://github.com/request/request/pull/73) Fix #71 Respect the strictSSL flag (@isaacs) -- [#69](https://github.com/request/request/pull/69) Flatten chunked requests properly (@isaacs) -- [#67](https://github.com/request/request/pull/67) fixed global variable leaks (@aheckmann) -- [#66](https://github.com/request/request/pull/66) Do not overwrite established content-type headers for read stream deliver (@voodootikigod) -- [#53](https://github.com/request/request/pull/53) Parse json: Issue #51 (@benatkin) -- [#45](https://github.com/request/request/pull/45) Added timeout option (@mbrevoort) -- [#35](https://github.com/request/request/pull/35) The "end" event isn't emitted for some responses (@voxpelli) -- [#31](https://github.com/request/request/pull/31) Error on piping a request to a destination (@tobowers) \ No newline at end of file diff --git a/node_modules/request/LICENSE b/node_modules/request/LICENSE deleted file mode 100644 index a4a9aee..0000000 --- a/node_modules/request/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/request/README.md b/node_modules/request/README.md deleted file mode 100644 index 9da0eb7..0000000 --- a/node_modules/request/README.md +++ /dev/null @@ -1,1133 +0,0 @@ -# Deprecated! - -As of Feb 11th 2020, request is fully deprecated. No new changes are expected land. In fact, none have landed for some time. - -For more information about why request is deprecated and possible alternatives refer to -[this issue](https://github.com/request/request/issues/3142). - -# Request - Simplified HTTP client - -[![npm package](https://nodei.co/npm/request.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/request/) - -[![Build status](https://img.shields.io/travis/request/request/master.svg?style=flat-square)](https://travis-ci.org/request/request) -[![Coverage](https://img.shields.io/codecov/c/github/request/request.svg?style=flat-square)](https://codecov.io/github/request/request?branch=master) -[![Coverage](https://img.shields.io/coveralls/request/request.svg?style=flat-square)](https://coveralls.io/r/request/request) -[![Dependency Status](https://img.shields.io/david/request/request.svg?style=flat-square)](https://david-dm.org/request/request) -[![Known Vulnerabilities](https://snyk.io/test/npm/request/badge.svg?style=flat-square)](https://snyk.io/test/npm/request) -[![Gitter](https://img.shields.io/badge/gitter-join_chat-blue.svg?style=flat-square)](https://gitter.im/request/request?utm_source=badge) - - -## Super simple to use - -Request is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default. - -```js -const request = require('request'); -request('http://www.google.com', function (error, response, body) { - console.error('error:', error); // Print the error if one occurred - console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received - console.log('body:', body); // Print the HTML for the Google homepage. -}); -``` - - -## Table of contents - -- [Streaming](#streaming) -- [Promises & Async/Await](#promises--asyncawait) -- [Forms](#forms) -- [HTTP Authentication](#http-authentication) -- [Custom HTTP Headers](#custom-http-headers) -- [OAuth Signing](#oauth-signing) -- [Proxies](#proxies) -- [Unix Domain Sockets](#unix-domain-sockets) -- [TLS/SSL Protocol](#tlsssl-protocol) -- [Support for HAR 1.2](#support-for-har-12) -- [**All Available Options**](#requestoptions-callback) - -Request also offers [convenience methods](#convenience-methods) like -`request.defaults` and `request.post`, and there are -lots of [usage examples](#examples) and several -[debugging techniques](#debugging). - - ---- - - -## Streaming - -You can stream any response to a file stream. - -```js -request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png')) -``` - -You can also stream a file to a PUT or POST request. This method will also check the file extension against a mapping of file extensions to content-types (in this case `application/json`) and use the proper `content-type` in the PUT request (if the headers don’t already provide one). - -```js -fs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json')) -``` - -Request can also `pipe` to itself. When doing so, `content-type` and `content-length` are preserved in the PUT headers. - -```js -request.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png')) -``` - -Request emits a "response" event when a response is received. The `response` argument will be an instance of [http.IncomingMessage](https://nodejs.org/api/http.html#http_class_http_incomingmessage). - -```js -request - .get('http://google.com/img.png') - .on('response', function(response) { - console.log(response.statusCode) // 200 - console.log(response.headers['content-type']) // 'image/png' - }) - .pipe(request.put('http://mysite.com/img.png')) -``` - -To easily handle errors when streaming requests, listen to the `error` event before piping: - -```js -request - .get('http://mysite.com/doodle.png') - .on('error', function(err) { - console.error(err) - }) - .pipe(fs.createWriteStream('doodle.png')) -``` - -Now let’s get fancy. - -```js -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - if (req.method === 'PUT') { - req.pipe(request.put('http://mysite.com/doodle.png')) - } else if (req.method === 'GET' || req.method === 'HEAD') { - request.get('http://mysite.com/doodle.png').pipe(resp) - } - } -}) -``` - -You can also `pipe()` from `http.ServerRequest` instances, as well as to `http.ServerResponse` instances. The HTTP method, headers, and entity-body data will be sent. Which means that, if you don't really care about security, you can do: - -```js -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - const x = request('http://mysite.com/doodle.png') - req.pipe(x) - x.pipe(resp) - } -}) -``` - -And since `pipe()` returns the destination stream in ≥ Node 0.5.x you can do one line proxying. :) - -```js -req.pipe(request('http://mysite.com/doodle.png')).pipe(resp) -``` - -Also, none of this new functionality conflicts with requests previous features, it just expands them. - -```js -const r = request.defaults({'proxy':'http://localproxy.com'}) - -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - r.get('http://google.com/doodle.png').pipe(resp) - } -}) -``` - -You can still use intermediate proxies, the requests will still follow HTTP forwards, etc. - -[back to top](#table-of-contents) - - ---- - - -## Promises & Async/Await - -`request` supports both streaming and callback interfaces natively. If you'd like `request` to return a Promise instead, you can use an alternative interface wrapper for `request`. These wrappers can be useful if you prefer to work with Promises, or if you'd like to use `async`/`await` in ES2017. - -Several alternative interfaces are provided by the request team, including: -- [`request-promise`](https://github.com/request/request-promise) (uses [Bluebird](https://github.com/petkaantonov/bluebird) Promises) -- [`request-promise-native`](https://github.com/request/request-promise-native) (uses native Promises) -- [`request-promise-any`](https://github.com/request/request-promise-any) (uses [any-promise](https://www.npmjs.com/package/any-promise) Promises) - -Also, [`util.promisify`](https://nodejs.org/api/util.html#util_util_promisify_original), which is available from Node.js v8.0 can be used to convert a regular function that takes a callback to return a promise instead. - - -[back to top](#table-of-contents) - - ---- - - -## Forms - -`request` supports `application/x-www-form-urlencoded` and `multipart/form-data` form uploads. For `multipart/related` refer to the `multipart` API. - - -#### application/x-www-form-urlencoded (URL-Encoded Forms) - -URL-encoded forms are simple. - -```js -request.post('http://service.com/upload', {form:{key:'value'}}) -// or -request.post('http://service.com/upload').form({key:'value'}) -// or -request.post({url:'http://service.com/upload', form: {key:'value'}}, function(err,httpResponse,body){ /* ... */ }) -``` - - -#### multipart/form-data (Multipart Form Uploads) - -For `multipart/form-data` we use the [form-data](https://github.com/form-data/form-data) library by [@felixge](https://github.com/felixge). For the most cases, you can pass your upload form data via the `formData` option. - - -```js -const formData = { - // Pass a simple key-value pair - my_field: 'my_value', - // Pass data via Buffers - my_buffer: Buffer.from([1, 2, 3]), - // Pass data via Streams - my_file: fs.createReadStream(__dirname + '/unicycle.jpg'), - // Pass multiple values /w an Array - attachments: [ - fs.createReadStream(__dirname + '/attachment1.jpg'), - fs.createReadStream(__dirname + '/attachment2.jpg') - ], - // Pass optional meta-data with an 'options' object with style: {value: DATA, options: OPTIONS} - // Use case: for some types of streams, you'll need to provide "file"-related information manually. - // See the `form-data` README for more information about options: https://github.com/form-data/form-data - custom_file: { - value: fs.createReadStream('/dev/urandom'), - options: { - filename: 'topsecret.jpg', - contentType: 'image/jpeg' - } - } -}; -request.post({url:'http://service.com/upload', formData: formData}, function optionalCallback(err, httpResponse, body) { - if (err) { - return console.error('upload failed:', err); - } - console.log('Upload successful! Server responded with:', body); -}); -``` - -For advanced cases, you can access the form-data object itself via `r.form()`. This can be modified until the request is fired on the next cycle of the event-loop. (Note that this calling `form()` will clear the currently set form data for that request.) - -```js -// NOTE: Advanced use-case, for normal use see 'formData' usage above -const r = request.post('http://service.com/upload', function optionalCallback(err, httpResponse, body) {...}) -const form = r.form(); -form.append('my_field', 'my_value'); -form.append('my_buffer', Buffer.from([1, 2, 3])); -form.append('custom_file', fs.createReadStream(__dirname + '/unicycle.jpg'), {filename: 'unicycle.jpg'}); -``` -See the [form-data README](https://github.com/form-data/form-data) for more information & examples. - - -#### multipart/related - -Some variations in different HTTP implementations require a newline/CRLF before, after, or both before and after the boundary of a `multipart/related` request (using the multipart option). This has been observed in the .NET WebAPI version 4.0. You can turn on a boundary preambleCRLF or postamble by passing them as `true` to your request options. - -```js - request({ - method: 'PUT', - preambleCRLF: true, - postambleCRLF: true, - uri: 'http://service.com/upload', - multipart: [ - { - 'content-type': 'application/json', - body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) - }, - { body: 'I am an attachment' }, - { body: fs.createReadStream('image.png') } - ], - // alternatively pass an object containing additional options - multipart: { - chunked: false, - data: [ - { - 'content-type': 'application/json', - body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) - }, - { body: 'I am an attachment' } - ] - } - }, - function (error, response, body) { - if (error) { - return console.error('upload failed:', error); - } - console.log('Upload successful! Server responded with:', body); - }) -``` - -[back to top](#table-of-contents) - - ---- - - -## HTTP Authentication - -```js -request.get('http://some.server.com/').auth('username', 'password', false); -// or -request.get('http://some.server.com/', { - 'auth': { - 'user': 'username', - 'pass': 'password', - 'sendImmediately': false - } -}); -// or -request.get('http://some.server.com/').auth(null, null, true, 'bearerToken'); -// or -request.get('http://some.server.com/', { - 'auth': { - 'bearer': 'bearerToken' - } -}); -``` - -If passed as an option, `auth` should be a hash containing values: - -- `user` || `username` -- `pass` || `password` -- `sendImmediately` (optional) -- `bearer` (optional) - -The method form takes parameters -`auth(username, password, sendImmediately, bearer)`. - -`sendImmediately` defaults to `true`, which causes a basic or bearer -authentication header to be sent. If `sendImmediately` is `false`, then -`request` will retry with a proper authentication header after receiving a -`401` response from the server (which must contain a `WWW-Authenticate` header -indicating the required authentication method). - -Note that you can also specify basic authentication using the URL itself, as -detailed in [RFC 1738](http://www.ietf.org/rfc/rfc1738.txt). Simply pass the -`user:password` before the host with an `@` sign: - -```js -const username = 'username', - password = 'password', - url = 'http://' + username + ':' + password + '@some.server.com'; - -request({url}, function (error, response, body) { - // Do more stuff with 'body' here -}); -``` - -Digest authentication is supported, but it only works with `sendImmediately` -set to `false`; otherwise `request` will send basic authentication on the -initial request, which will probably cause the request to fail. - -Bearer authentication is supported, and is activated when the `bearer` value is -available. The value may be either a `String` or a `Function` returning a -`String`. Using a function to supply the bearer token is particularly useful if -used in conjunction with `defaults` to allow a single function to supply the -last known token at the time of sending a request, or to compute one on the fly. - -[back to top](#table-of-contents) - - ---- - - -## Custom HTTP Headers - -HTTP Headers, such as `User-Agent`, can be set in the `options` object. -In the example below, we call the github API to find out the number -of stars and forks for the request repository. This requires a -custom `User-Agent` header as well as https. - -```js -const request = require('request'); - -const options = { - url: 'https://api.github.com/repos/request/request', - headers: { - 'User-Agent': 'request' - } -}; - -function callback(error, response, body) { - if (!error && response.statusCode == 200) { - const info = JSON.parse(body); - console.log(info.stargazers_count + " Stars"); - console.log(info.forks_count + " Forks"); - } -} - -request(options, callback); -``` - -[back to top](#table-of-contents) - - ---- - - -## OAuth Signing - -[OAuth version 1.0](https://tools.ietf.org/html/rfc5849) is supported. The -default signing algorithm is -[HMAC-SHA1](https://tools.ietf.org/html/rfc5849#section-3.4.2): - -```js -// OAuth1.0 - 3-legged server side flow (Twitter example) -// step 1 -const qs = require('querystring') - , oauth = - { callback: 'http://mysite.com/callback/' - , consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - } - , url = 'https://api.twitter.com/oauth/request_token' - ; -request.post({url:url, oauth:oauth}, function (e, r, body) { - // Ideally, you would take the body in the response - // and construct a URL that a user clicks on (like a sign in button). - // The verifier is only available in the response after a user has - // verified with twitter that they are authorizing your app. - - // step 2 - const req_data = qs.parse(body) - const uri = 'https://api.twitter.com/oauth/authenticate' - + '?' + qs.stringify({oauth_token: req_data.oauth_token}) - // redirect the user to the authorize uri - - // step 3 - // after the user is redirected back to your server - const auth_data = qs.parse(body) - , oauth = - { consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - , token: auth_data.oauth_token - , token_secret: req_data.oauth_token_secret - , verifier: auth_data.oauth_verifier - } - , url = 'https://api.twitter.com/oauth/access_token' - ; - request.post({url:url, oauth:oauth}, function (e, r, body) { - // ready to make signed requests on behalf of the user - const perm_data = qs.parse(body) - , oauth = - { consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - , token: perm_data.oauth_token - , token_secret: perm_data.oauth_token_secret - } - , url = 'https://api.twitter.com/1.1/users/show.json' - , qs = - { screen_name: perm_data.screen_name - , user_id: perm_data.user_id - } - ; - request.get({url:url, oauth:oauth, qs:qs, json:true}, function (e, r, user) { - console.log(user) - }) - }) -}) -``` - -For [RSA-SHA1 signing](https://tools.ietf.org/html/rfc5849#section-3.4.3), make -the following changes to the OAuth options object: -* Pass `signature_method : 'RSA-SHA1'` -* Instead of `consumer_secret`, specify a `private_key` string in - [PEM format](http://how2ssl.com/articles/working_with_pem_files/) - -For [PLAINTEXT signing](http://oauth.net/core/1.0/#anchor22), make -the following changes to the OAuth options object: -* Pass `signature_method : 'PLAINTEXT'` - -To send OAuth parameters via query params or in a post body as described in The -[Consumer Request Parameters](http://oauth.net/core/1.0/#consumer_req_param) -section of the oauth1 spec: -* Pass `transport_method : 'query'` or `transport_method : 'body'` in the OAuth - options object. -* `transport_method` defaults to `'header'` - -To use [Request Body Hash](https://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/oauth-bodyhash.html) you can either -* Manually generate the body hash and pass it as a string `body_hash: '...'` -* Automatically generate the body hash by passing `body_hash: true` - -[back to top](#table-of-contents) - - ---- - - -## Proxies - -If you specify a `proxy` option, then the request (and any subsequent -redirects) will be sent via a connection to the proxy server. - -If your endpoint is an `https` url, and you are using a proxy, then -request will send a `CONNECT` request to the proxy server *first*, and -then use the supplied connection to connect to the endpoint. - -That is, first it will make a request like: - -``` -HTTP/1.1 CONNECT endpoint-server.com:80 -Host: proxy-server.com -User-Agent: whatever user agent you specify -``` - -and then the proxy server make a TCP connection to `endpoint-server` -on port `80`, and return a response that looks like: - -``` -HTTP/1.1 200 OK -``` - -At this point, the connection is left open, and the client is -communicating directly with the `endpoint-server.com` machine. - -See [the wikipedia page on HTTP Tunneling](https://en.wikipedia.org/wiki/HTTP_tunnel) -for more information. - -By default, when proxying `http` traffic, request will simply make a -standard proxied `http` request. This is done by making the `url` -section of the initial line of the request a fully qualified url to -the endpoint. - -For example, it will make a single request that looks like: - -``` -HTTP/1.1 GET http://endpoint-server.com/some-url -Host: proxy-server.com -Other-Headers: all go here - -request body or whatever -``` - -Because a pure "http over http" tunnel offers no additional security -or other features, it is generally simpler to go with a -straightforward HTTP proxy in this case. However, if you would like -to force a tunneling proxy, you may set the `tunnel` option to `true`. - -You can also make a standard proxied `http` request by explicitly setting -`tunnel : false`, but **note that this will allow the proxy to see the traffic -to/from the destination server**. - -If you are using a tunneling proxy, you may set the -`proxyHeaderWhiteList` to share certain headers with the proxy. - -You can also set the `proxyHeaderExclusiveList` to share certain -headers only with the proxy and not with destination host. - -By default, this set is: - -``` -accept -accept-charset -accept-encoding -accept-language -accept-ranges -cache-control -content-encoding -content-language -content-length -content-location -content-md5 -content-range -content-type -connection -date -expect -max-forwards -pragma -proxy-authorization -referer -te -transfer-encoding -user-agent -via -``` - -Note that, when using a tunneling proxy, the `proxy-authorization` -header and any headers from custom `proxyHeaderExclusiveList` are -*never* sent to the endpoint server, but only to the proxy server. - - -### Controlling proxy behaviour using environment variables - -The following environment variables are respected by `request`: - - * `HTTP_PROXY` / `http_proxy` - * `HTTPS_PROXY` / `https_proxy` - * `NO_PROXY` / `no_proxy` - -When `HTTP_PROXY` / `http_proxy` are set, they will be used to proxy non-SSL requests that do not have an explicit `proxy` configuration option present. Similarly, `HTTPS_PROXY` / `https_proxy` will be respected for SSL requests that do not have an explicit `proxy` configuration option. It is valid to define a proxy in one of the environment variables, but then override it for a specific request, using the `proxy` configuration option. Furthermore, the `proxy` configuration option can be explicitly set to false / null to opt out of proxying altogether for that request. - -`request` is also aware of the `NO_PROXY`/`no_proxy` environment variables. These variables provide a granular way to opt out of proxying, on a per-host basis. It should contain a comma separated list of hosts to opt out of proxying. It is also possible to opt of proxying when a particular destination port is used. Finally, the variable may be set to `*` to opt out of the implicit proxy configuration of the other environment variables. - -Here's some examples of valid `no_proxy` values: - - * `google.com` - don't proxy HTTP/HTTPS requests to Google. - * `google.com:443` - don't proxy HTTPS requests to Google, but *do* proxy HTTP requests to Google. - * `google.com:443, yahoo.com:80` - don't proxy HTTPS requests to Google, and don't proxy HTTP requests to Yahoo! - * `*` - ignore `https_proxy`/`http_proxy` environment variables altogether. - -[back to top](#table-of-contents) - - ---- - - -## UNIX Domain Sockets - -`request` supports making requests to [UNIX Domain Sockets](https://en.wikipedia.org/wiki/Unix_domain_socket). To make one, use the following URL scheme: - -```js -/* Pattern */ 'http://unix:SOCKET:PATH' -/* Example */ request.get('http://unix:/absolute/path/to/unix.socket:/request/path') -``` - -Note: The `SOCKET` path is assumed to be absolute to the root of the host file system. - -[back to top](#table-of-contents) - - ---- - - -## TLS/SSL Protocol - -TLS/SSL Protocol options, such as `cert`, `key` and `passphrase`, can be -set directly in `options` object, in the `agentOptions` property of the `options` object, or even in `https.globalAgent.options`. Keep in mind that, although `agentOptions` allows for a slightly wider range of configurations, the recommended way is via `options` object directly, as using `agentOptions` or `https.globalAgent.options` would not be applied in the same way in proxied environments (as data travels through a TLS connection instead of an http/https agent). - -```js -const fs = require('fs') - , path = require('path') - , certFile = path.resolve(__dirname, 'ssl/client.crt') - , keyFile = path.resolve(__dirname, 'ssl/client.key') - , caFile = path.resolve(__dirname, 'ssl/ca.cert.pem') - , request = require('request'); - -const options = { - url: 'https://api.some-server.com/', - cert: fs.readFileSync(certFile), - key: fs.readFileSync(keyFile), - passphrase: 'password', - ca: fs.readFileSync(caFile) -}; - -request.get(options); -``` - -### Using `options.agentOptions` - -In the example below, we call an API that requires client side SSL certificate -(in PEM format) with passphrase protected private key (in PEM format) and disable the SSLv3 protocol: - -```js -const fs = require('fs') - , path = require('path') - , certFile = path.resolve(__dirname, 'ssl/client.crt') - , keyFile = path.resolve(__dirname, 'ssl/client.key') - , request = require('request'); - -const options = { - url: 'https://api.some-server.com/', - agentOptions: { - cert: fs.readFileSync(certFile), - key: fs.readFileSync(keyFile), - // Or use `pfx` property replacing `cert` and `key` when using private key, certificate and CA certs in PFX or PKCS12 format: - // pfx: fs.readFileSync(pfxFilePath), - passphrase: 'password', - securityOptions: 'SSL_OP_NO_SSLv3' - } -}; - -request.get(options); -``` - -It is able to force using SSLv3 only by specifying `secureProtocol`: - -```js -request.get({ - url: 'https://api.some-server.com/', - agentOptions: { - secureProtocol: 'SSLv3_method' - } -}); -``` - -It is possible to accept other certificates than those signed by generally allowed Certificate Authorities (CAs). -This can be useful, for example, when using self-signed certificates. -To require a different root certificate, you can specify the signing CA by adding the contents of the CA's certificate file to the `agentOptions`. -The certificate the domain presents must be signed by the root certificate specified: - -```js -request.get({ - url: 'https://api.some-server.com/', - agentOptions: { - ca: fs.readFileSync('ca.cert.pem') - } -}); -``` - -The `ca` value can be an array of certificates, in the event you have a private or internal corporate public-key infrastructure hierarchy. For example, if you want to connect to https://api.some-server.com which presents a key chain consisting of: -1. its own public key, which is signed by: -2. an intermediate "Corp Issuing Server", that is in turn signed by: -3. a root CA "Corp Root CA"; - -you can configure your request as follows: - -```js -request.get({ - url: 'https://api.some-server.com/', - agentOptions: { - ca: [ - fs.readFileSync('Corp Issuing Server.pem'), - fs.readFileSync('Corp Root CA.pem') - ] - } -}); -``` - -[back to top](#table-of-contents) - - ---- - -## Support for HAR 1.2 - -The `options.har` property will override the values: `url`, `method`, `qs`, `headers`, `form`, `formData`, `body`, `json`, as well as construct multipart data and read files from disk when `request.postData.params[].fileName` is present without a matching `value`. - -A validation step will check if the HAR Request format matches the latest spec (v1.2) and will skip parsing if not matching. - -```js - const request = require('request') - request({ - // will be ignored - method: 'GET', - uri: 'http://www.google.com', - - // HTTP Archive Request Object - har: { - url: 'http://www.mockbin.com/har', - method: 'POST', - headers: [ - { - name: 'content-type', - value: 'application/x-www-form-urlencoded' - } - ], - postData: { - mimeType: 'application/x-www-form-urlencoded', - params: [ - { - name: 'foo', - value: 'bar' - }, - { - name: 'hello', - value: 'world' - } - ] - } - } - }) - - // a POST request will be sent to http://www.mockbin.com - // with body an application/x-www-form-urlencoded body: - // foo=bar&hello=world -``` - -[back to top](#table-of-contents) - - ---- - -## request(options, callback) - -The first argument can be either a `url` or an `options` object. The only required option is `uri`; all others are optional. - -- `uri` || `url` - fully qualified uri or a parsed url object from `url.parse()` -- `baseUrl` - fully qualified uri string used as the base url. Most useful with `request.defaults`, for example when you want to do many requests to the same domain. If `baseUrl` is `https://example.com/api/`, then requesting `/end/point?test=true` will fetch `https://example.com/api/end/point?test=true`. When `baseUrl` is given, `uri` must also be a string. -- `method` - http method (default: `"GET"`) -- `headers` - http headers (default: `{}`) - ---- - -- `qs` - object containing querystring values to be appended to the `uri` -- `qsParseOptions` - object containing options to pass to the [qs.parse](https://github.com/hapijs/qs#parsing-objects) method. Alternatively pass options to the [querystring.parse](https://nodejs.org/docs/v0.12.0/api/querystring.html#querystring_querystring_parse_str_sep_eq_options) method using this format `{sep:';', eq:':', options:{}}` -- `qsStringifyOptions` - object containing options to pass to the [qs.stringify](https://github.com/hapijs/qs#stringifying) method. Alternatively pass options to the [querystring.stringify](https://nodejs.org/docs/v0.12.0/api/querystring.html#querystring_querystring_stringify_obj_sep_eq_options) method using this format `{sep:';', eq:':', options:{}}`. For example, to change the way arrays are converted to query strings using the `qs` module pass the `arrayFormat` option with one of `indices|brackets|repeat` -- `useQuerystring` - if true, use `querystring` to stringify and parse - querystrings, otherwise use `qs` (default: `false`). Set this option to - `true` if you need arrays to be serialized as `foo=bar&foo=baz` instead of the - default `foo[0]=bar&foo[1]=baz`. - ---- - -- `body` - entity body for PATCH, POST and PUT requests. Must be a `Buffer`, `String` or `ReadStream`. If `json` is `true`, then `body` must be a JSON-serializable object. -- `form` - when passed an object or a querystring, this sets `body` to a querystring representation of value, and adds `Content-type: application/x-www-form-urlencoded` header. When passed no options, a `FormData` instance is returned (and is piped to request). See "Forms" section above. -- `formData` - data to pass for a `multipart/form-data` request. See - [Forms](#forms) section above. -- `multipart` - array of objects which contain their own headers and `body` - attributes. Sends a `multipart/related` request. See [Forms](#forms) section - above. - - Alternatively you can pass in an object `{chunked: false, data: []}` where - `chunked` is used to specify whether the request is sent in - [chunked transfer encoding](https://en.wikipedia.org/wiki/Chunked_transfer_encoding) - In non-chunked requests, data items with body streams are not allowed. -- `preambleCRLF` - append a newline/CRLF before the boundary of your `multipart/form-data` request. -- `postambleCRLF` - append a newline/CRLF at the end of the boundary of your `multipart/form-data` request. -- `json` - sets `body` to JSON representation of value and adds `Content-type: application/json` header. Additionally, parses the response body as JSON. -- `jsonReviver` - a [reviver function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse) that will be passed to `JSON.parse()` when parsing a JSON response body. -- `jsonReplacer` - a [replacer function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) that will be passed to `JSON.stringify()` when stringifying a JSON request body. - ---- - -- `auth` - a hash containing values `user` || `username`, `pass` || `password`, and `sendImmediately` (optional). See documentation above. -- `oauth` - options for OAuth HMAC-SHA1 signing. See documentation above. -- `hawk` - options for [Hawk signing](https://github.com/hueniverse/hawk). The `credentials` key must contain the necessary signing info, [see hawk docs for details](https://github.com/hueniverse/hawk#usage-example). -- `aws` - `object` containing AWS signing information. Should have the properties `key`, `secret`, and optionally `session` (note that this only works for services that require session as part of the canonical string). Also requires the property `bucket`, unless you’re specifying your `bucket` as part of the path, or the request doesn’t use a bucket (i.e. GET Services). If you want to use AWS sign version 4 use the parameter `sign_version` with value `4` otherwise the default is version 2. If you are using SigV4, you can also include a `service` property that specifies the service name. **Note:** you need to `npm install aws4` first. -- `httpSignature` - options for the [HTTP Signature Scheme](https://github.com/joyent/node-http-signature/blob/master/http_signing.md) using [Joyent's library](https://github.com/joyent/node-http-signature). The `keyId` and `key` properties must be specified. See the docs for other options. - ---- - -- `followRedirect` - follow HTTP 3xx responses as redirects (default: `true`). This property can also be implemented as function which gets `response` object as a single argument and should return `true` if redirects should continue or `false` otherwise. -- `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects (default: `false`) -- `followOriginalHttpMethod` - by default we redirect to HTTP method GET. you can enable this property to redirect to the original HTTP method (default: `false`) -- `maxRedirects` - the maximum number of redirects to follow (default: `10`) -- `removeRefererHeader` - removes the referer header when a redirect happens (default: `false`). **Note:** if true, referer header set in the initial request is preserved during redirect chain. - ---- - -- `encoding` - encoding to be used on `setEncoding` of response data. If `null`, the `body` is returned as a `Buffer`. Anything else **(including the default value of `undefined`)** will be passed as the [encoding](http://nodejs.org/api/buffer.html#buffer_buffer) parameter to `toString()` (meaning this is effectively `utf8` by default). (**Note:** if you expect binary data, you should set `encoding: null`.) -- `gzip` - if `true`, add an `Accept-Encoding` header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response. **Note:** Automatic decoding of the response content is performed on the body data returned through `request` (both through the `request` stream and passed to the callback function) but is not performed on the `response` stream (available from the `response` event) which is the unmodified `http.IncomingMessage` object which may contain compressed data. See example below. -- `jar` - if `true`, remember cookies for future use (or define your custom cookie jar; see examples section) - ---- - -- `agent` - `http(s).Agent` instance to use -- `agentClass` - alternatively specify your agent's class name -- `agentOptions` - and pass its options. **Note:** for HTTPS see [tls API doc for TLS/SSL options](http://nodejs.org/api/tls.html#tls_tls_connect_options_callback) and the [documentation above](#using-optionsagentoptions). -- `forever` - set to `true` to use the [forever-agent](https://github.com/request/forever-agent) **Note:** Defaults to `http(s).Agent({keepAlive:true})` in node 0.12+ -- `pool` - an object describing which agents to use for the request. If this option is omitted the request will use the global agent (as long as your options allow for it). Otherwise, request will search the pool for your custom agent. If no custom agent is found, a new agent will be created and added to the pool. **Note:** `pool` is used only when the `agent` option is not specified. - - A `maxSockets` property can also be provided on the `pool` object to set the max number of sockets for all agents created (ex: `pool: {maxSockets: Infinity}`). - - Note that if you are sending multiple requests in a loop and creating - multiple new `pool` objects, `maxSockets` will not work as intended. To - work around this, either use [`request.defaults`](#requestdefaultsoptions) - with your pool options or create the pool object with the `maxSockets` - property outside of the loop. -- `timeout` - integer containing number of milliseconds, controls two timeouts. - - **Read timeout**: Time to wait for a server to send response headers (and start the response body) before aborting the request. - - **Connection timeout**: Sets the socket to timeout after `timeout` milliseconds of inactivity. Note that increasing the timeout beyond the OS-wide TCP connection timeout will not have any effect ([the default in Linux can be anywhere from 20-120 seconds][linux-timeout]) - -[linux-timeout]: http://www.sekuda.com/overriding_the_default_linux_kernel_20_second_tcp_socket_connect_timeout - ---- - -- `localAddress` - local interface to bind for network connections. -- `proxy` - an HTTP proxy to be used. Supports proxy Auth with Basic Auth, identical to support for the `url` parameter (by embedding the auth info in the `uri`) -- `strictSSL` - if `true`, requires SSL certificates be valid. **Note:** to use your own certificate authority, you need to specify an agent that was created with that CA as an option. -- `tunnel` - controls the behavior of - [HTTP `CONNECT` tunneling](https://en.wikipedia.org/wiki/HTTP_tunnel#HTTP_CONNECT_tunneling) - as follows: - - `undefined` (default) - `true` if the destination is `https`, `false` otherwise - - `true` - always tunnel to the destination by making a `CONNECT` request to - the proxy - - `false` - request the destination as a `GET` request. -- `proxyHeaderWhiteList` - a whitelist of headers to send to a - tunneling proxy. -- `proxyHeaderExclusiveList` - a whitelist of headers to send - exclusively to a tunneling proxy and not to destination. - ---- - -- `time` - if `true`, the request-response cycle (including all redirects) is timed at millisecond resolution. When set, the following properties are added to the response object: - - `elapsedTime` Duration of the entire request/response in milliseconds (*deprecated*). - - `responseStartTime` Timestamp when the response began (in Unix Epoch milliseconds) (*deprecated*). - - `timingStart` Timestamp of the start of the request (in Unix Epoch milliseconds). - - `timings` Contains event timestamps in millisecond resolution relative to `timingStart`. If there were redirects, the properties reflect the timings of the final request in the redirect chain: - - `socket` Relative timestamp when the [`http`](https://nodejs.org/api/http.html#http_event_socket) module's `socket` event fires. This happens when the socket is assigned to the request. - - `lookup` Relative timestamp when the [`net`](https://nodejs.org/api/net.html#net_event_lookup) module's `lookup` event fires. This happens when the DNS has been resolved. - - `connect`: Relative timestamp when the [`net`](https://nodejs.org/api/net.html#net_event_connect) module's `connect` event fires. This happens when the server acknowledges the TCP connection. - - `response`: Relative timestamp when the [`http`](https://nodejs.org/api/http.html#http_event_response) module's `response` event fires. This happens when the first bytes are received from the server. - - `end`: Relative timestamp when the last bytes of the response are received. - - `timingPhases` Contains the durations of each request phase. If there were redirects, the properties reflect the timings of the final request in the redirect chain: - - `wait`: Duration of socket initialization (`timings.socket`) - - `dns`: Duration of DNS lookup (`timings.lookup` - `timings.socket`) - - `tcp`: Duration of TCP connection (`timings.connect` - `timings.socket`) - - `firstByte`: Duration of HTTP server response (`timings.response` - `timings.connect`) - - `download`: Duration of HTTP download (`timings.end` - `timings.response`) - - `total`: Duration entire HTTP round-trip (`timings.end`) - -- `har` - a [HAR 1.2 Request Object](http://www.softwareishard.com/blog/har-12-spec/#request), will be processed from HAR format into options overwriting matching values *(see the [HAR 1.2 section](#support-for-har-12) for details)* -- `callback` - alternatively pass the request's callback in the options object - -The callback argument gets 3 arguments: - -1. An `error` when applicable (usually from [`http.ClientRequest`](http://nodejs.org/api/http.html#http_class_http_clientrequest) object) -2. An [`http.IncomingMessage`](https://nodejs.org/api/http.html#http_class_http_incomingmessage) object (Response object) -3. The third is the `response` body (`String` or `Buffer`, or JSON object if the `json` option is supplied) - -[back to top](#table-of-contents) - - ---- - -## Convenience methods - -There are also shorthand methods for different HTTP METHODs and some other conveniences. - - -### request.defaults(options) - -This method **returns a wrapper** around the normal request API that defaults -to whatever options you pass to it. - -**Note:** `request.defaults()` **does not** modify the global request API; -instead, it **returns a wrapper** that has your default settings applied to it. - -**Note:** You can call `.defaults()` on the wrapper that is returned from -`request.defaults` to add/override defaults that were previously defaulted. - -For example: -```js -//requests using baseRequest() will set the 'x-token' header -const baseRequest = request.defaults({ - headers: {'x-token': 'my-token'} -}) - -//requests using specialRequest() will include the 'x-token' header set in -//baseRequest and will also include the 'special' header -const specialRequest = baseRequest.defaults({ - headers: {special: 'special value'} -}) -``` - -### request.METHOD() - -These HTTP method convenience functions act just like `request()` but with a default method already set for you: - -- *request.get()*: Defaults to `method: "GET"`. -- *request.post()*: Defaults to `method: "POST"`. -- *request.put()*: Defaults to `method: "PUT"`. -- *request.patch()*: Defaults to `method: "PATCH"`. -- *request.del() / request.delete()*: Defaults to `method: "DELETE"`. -- *request.head()*: Defaults to `method: "HEAD"`. -- *request.options()*: Defaults to `method: "OPTIONS"`. - -### request.cookie() - -Function that creates a new cookie. - -```js -request.cookie('key1=value1') -``` -### request.jar() - -Function that creates a new cookie jar. - -```js -request.jar() -``` - -### response.caseless.get('header-name') - -Function that returns the specified response header field using a [case-insensitive match](https://tools.ietf.org/html/rfc7230#section-3.2) - -```js -request('http://www.google.com', function (error, response, body) { - // print the Content-Type header even if the server returned it as 'content-type' (lowercase) - console.log('Content-Type is:', response.caseless.get('Content-Type')); -}); -``` - -[back to top](#table-of-contents) - - ---- - - -## Debugging - -There are at least three ways to debug the operation of `request`: - -1. Launch the node process like `NODE_DEBUG=request node script.js` - (`lib,request,otherlib` works too). - -2. Set `require('request').debug = true` at any time (this does the same thing - as #1). - -3. Use the [request-debug module](https://github.com/request/request-debug) to - view request and response headers and bodies. - -[back to top](#table-of-contents) - - ---- - -## Timeouts - -Most requests to external servers should have a timeout attached, in case the -server is not responding in a timely manner. Without a timeout, your code may -have a socket open/consume resources for minutes or more. - -There are two main types of timeouts: **connection timeouts** and **read -timeouts**. A connect timeout occurs if the timeout is hit while your client is -attempting to establish a connection to a remote machine (corresponding to the -[connect() call][connect] on the socket). A read timeout occurs any time the -server is too slow to send back a part of the response. - -These two situations have widely different implications for what went wrong -with the request, so it's useful to be able to distinguish them. You can detect -timeout errors by checking `err.code` for an 'ETIMEDOUT' value. Further, you -can detect whether the timeout was a connection timeout by checking if the -`err.connect` property is set to `true`. - -```js -request.get('http://10.255.255.1', {timeout: 1500}, function(err) { - console.log(err.code === 'ETIMEDOUT'); - // Set to `true` if the timeout was a connection timeout, `false` or - // `undefined` otherwise. - console.log(err.connect === true); - process.exit(0); -}); -``` - -[connect]: http://linux.die.net/man/2/connect - -## Examples: - -```js - const request = require('request') - , rand = Math.floor(Math.random()*100000000).toString() - ; - request( - { method: 'PUT' - , uri: 'http://mikeal.iriscouch.com/testjs/' + rand - , multipart: - [ { 'content-type': 'application/json' - , body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) - } - , { body: 'I am an attachment' } - ] - } - , function (error, response, body) { - if(response.statusCode == 201){ - console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand) - } else { - console.log('error: '+ response.statusCode) - console.log(body) - } - } - ) -``` - -For backwards-compatibility, response compression is not supported by default. -To accept gzip-compressed responses, set the `gzip` option to `true`. Note -that the body data passed through `request` is automatically decompressed -while the response object is unmodified and will contain compressed data if -the server sent a compressed response. - -```js - const request = require('request') - request( - { method: 'GET' - , uri: 'http://www.google.com' - , gzip: true - } - , function (error, response, body) { - // body is the decompressed response body - console.log('server encoded the data as: ' + (response.headers['content-encoding'] || 'identity')) - console.log('the decoded data is: ' + body) - } - ) - .on('data', function(data) { - // decompressed data as it is received - console.log('decoded chunk: ' + data) - }) - .on('response', function(response) { - // unmodified http.IncomingMessage object - response.on('data', function(data) { - // compressed data as it is received - console.log('received ' + data.length + ' bytes of compressed data') - }) - }) -``` - -Cookies are disabled by default (else, they would be used in subsequent requests). To enable cookies, set `jar` to `true` (either in `defaults` or `options`). - -```js -const request = request.defaults({jar: true}) -request('http://www.google.com', function () { - request('http://images.google.com') -}) -``` - -To use a custom cookie jar (instead of `request`’s global cookie jar), set `jar` to an instance of `request.jar()` (either in `defaults` or `options`) - -```js -const j = request.jar() -const request = request.defaults({jar:j}) -request('http://www.google.com', function () { - request('http://images.google.com') -}) -``` - -OR - -```js -const j = request.jar(); -const cookie = request.cookie('key1=value1'); -const url = 'http://www.google.com'; -j.setCookie(cookie, url); -request({url: url, jar: j}, function () { - request('http://images.google.com') -}) -``` - -To use a custom cookie store (such as a -[`FileCookieStore`](https://github.com/mitsuru/tough-cookie-filestore) -which supports saving to and restoring from JSON files), pass it as a parameter -to `request.jar()`: - -```js -const FileCookieStore = require('tough-cookie-filestore'); -// NOTE - currently the 'cookies.json' file must already exist! -const j = request.jar(new FileCookieStore('cookies.json')); -request = request.defaults({ jar : j }) -request('http://www.google.com', function() { - request('http://images.google.com') -}) -``` - -The cookie store must be a -[`tough-cookie`](https://github.com/SalesforceEng/tough-cookie) -store and it must support synchronous operations; see the -[`CookieStore` API docs](https://github.com/SalesforceEng/tough-cookie#api) -for details. - -To inspect your cookie jar after a request: - -```js -const j = request.jar() -request({url: 'http://www.google.com', jar: j}, function () { - const cookie_string = j.getCookieString(url); // "key1=value1; key2=value2; ..." - const cookies = j.getCookies(url); - // [{key: 'key1', value: 'value1', domain: "www.google.com", ...}, ...] -}) -``` - -[back to top](#table-of-contents) diff --git a/node_modules/request/index.js b/node_modules/request/index.js deleted file mode 100755 index d50f991..0000000 --- a/node_modules/request/index.js +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2010-2012 Mikeal Rogers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -'use strict' - -var extend = require('extend') -var cookies = require('./lib/cookies') -var helpers = require('./lib/helpers') - -var paramsHaveRequestBody = helpers.paramsHaveRequestBody - -// organize params for patch, post, put, head, del -function initParams (uri, options, callback) { - if (typeof options === 'function') { - callback = options - } - - var params = {} - if (options !== null && typeof options === 'object') { - extend(params, options, {uri: uri}) - } else if (typeof uri === 'string') { - extend(params, {uri: uri}) - } else { - extend(params, uri) - } - - params.callback = callback || params.callback - return params -} - -function request (uri, options, callback) { - if (typeof uri === 'undefined') { - throw new Error('undefined is not a valid uri or options object.') - } - - var params = initParams(uri, options, callback) - - if (params.method === 'HEAD' && paramsHaveRequestBody(params)) { - throw new Error('HTTP HEAD requests MUST NOT include a request body.') - } - - return new request.Request(params) -} - -function verbFunc (verb) { - var method = verb.toUpperCase() - return function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.method = method - return request(params, params.callback) - } -} - -// define like this to please codeintel/intellisense IDEs -request.get = verbFunc('get') -request.head = verbFunc('head') -request.options = verbFunc('options') -request.post = verbFunc('post') -request.put = verbFunc('put') -request.patch = verbFunc('patch') -request.del = verbFunc('delete') -request['delete'] = verbFunc('delete') - -request.jar = function (store) { - return cookies.jar(store) -} - -request.cookie = function (str) { - return cookies.parse(str) -} - -function wrapRequestMethod (method, options, requester, verb) { - return function (uri, opts, callback) { - var params = initParams(uri, opts, callback) - - var target = {} - extend(true, target, options, params) - - target.pool = params.pool || options.pool - - if (verb) { - target.method = verb.toUpperCase() - } - - if (typeof requester === 'function') { - method = requester - } - - return method(target, target.callback) - } -} - -request.defaults = function (options, requester) { - var self = this - - options = options || {} - - if (typeof options === 'function') { - requester = options - options = {} - } - - var defaults = wrapRequestMethod(self, options, requester) - - var verbs = ['get', 'head', 'post', 'put', 'patch', 'del', 'delete'] - verbs.forEach(function (verb) { - defaults[verb] = wrapRequestMethod(self[verb], options, requester, verb) - }) - - defaults.cookie = wrapRequestMethod(self.cookie, options, requester) - defaults.jar = self.jar - defaults.defaults = self.defaults - return defaults -} - -request.forever = function (agentOptions, optionsArg) { - var options = {} - if (optionsArg) { - extend(options, optionsArg) - } - if (agentOptions) { - options.agentOptions = agentOptions - } - - options.forever = true - return request.defaults(options) -} - -// Exports - -module.exports = request -request.Request = require('./request') -request.initParams = initParams - -// Backwards compatibility for request.debug -Object.defineProperty(request, 'debug', { - enumerable: true, - get: function () { - return request.Request.debug - }, - set: function (debug) { - request.Request.debug = debug - } -}) diff --git a/node_modules/request/lib/auth.js b/node_modules/request/lib/auth.js deleted file mode 100644 index 02f2038..0000000 --- a/node_modules/request/lib/auth.js +++ /dev/null @@ -1,167 +0,0 @@ -'use strict' - -var caseless = require('caseless') -var uuid = require('uuid/v4') -var helpers = require('./helpers') - -var md5 = helpers.md5 -var toBase64 = helpers.toBase64 - -function Auth (request) { - // define all public properties here - this.request = request - this.hasAuth = false - this.sentAuth = false - this.bearerToken = null - this.user = null - this.pass = null -} - -Auth.prototype.basic = function (user, pass, sendImmediately) { - var self = this - if (typeof user !== 'string' || (pass !== undefined && typeof pass !== 'string')) { - self.request.emit('error', new Error('auth() received invalid user or password')) - } - self.user = user - self.pass = pass - self.hasAuth = true - var header = user + ':' + (pass || '') - if (sendImmediately || typeof sendImmediately === 'undefined') { - var authHeader = 'Basic ' + toBase64(header) - self.sentAuth = true - return authHeader - } -} - -Auth.prototype.bearer = function (bearer, sendImmediately) { - var self = this - self.bearerToken = bearer - self.hasAuth = true - if (sendImmediately || typeof sendImmediately === 'undefined') { - if (typeof bearer === 'function') { - bearer = bearer() - } - var authHeader = 'Bearer ' + (bearer || '') - self.sentAuth = true - return authHeader - } -} - -Auth.prototype.digest = function (method, path, authHeader) { - // TODO: More complete implementation of RFC 2617. - // - handle challenge.domain - // - support qop="auth-int" only - // - handle Authentication-Info (not necessarily?) - // - check challenge.stale (not necessarily?) - // - increase nc (not necessarily?) - // For reference: - // http://tools.ietf.org/html/rfc2617#section-3 - // https://github.com/bagder/curl/blob/master/lib/http_digest.c - - var self = this - - var challenge = {} - var re = /([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi - while (true) { - var match = re.exec(authHeader) - if (!match) { - break - } - challenge[match[1]] = match[2] || match[3] - } - - /** - * RFC 2617: handle both MD5 and MD5-sess algorithms. - * - * If the algorithm directive's value is "MD5" or unspecified, then HA1 is - * HA1=MD5(username:realm:password) - * If the algorithm directive's value is "MD5-sess", then HA1 is - * HA1=MD5(MD5(username:realm:password):nonce:cnonce) - */ - var ha1Compute = function (algorithm, user, realm, pass, nonce, cnonce) { - var ha1 = md5(user + ':' + realm + ':' + pass) - if (algorithm && algorithm.toLowerCase() === 'md5-sess') { - return md5(ha1 + ':' + nonce + ':' + cnonce) - } else { - return ha1 - } - } - - var qop = /(^|,)\s*auth\s*($|,)/.test(challenge.qop) && 'auth' - var nc = qop && '00000001' - var cnonce = qop && uuid().replace(/-/g, '') - var ha1 = ha1Compute(challenge.algorithm, self.user, challenge.realm, self.pass, challenge.nonce, cnonce) - var ha2 = md5(method + ':' + path) - var digestResponse = qop - ? md5(ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2) - : md5(ha1 + ':' + challenge.nonce + ':' + ha2) - var authValues = { - username: self.user, - realm: challenge.realm, - nonce: challenge.nonce, - uri: path, - qop: qop, - response: digestResponse, - nc: nc, - cnonce: cnonce, - algorithm: challenge.algorithm, - opaque: challenge.opaque - } - - authHeader = [] - for (var k in authValues) { - if (authValues[k]) { - if (k === 'qop' || k === 'nc' || k === 'algorithm') { - authHeader.push(k + '=' + authValues[k]) - } else { - authHeader.push(k + '="' + authValues[k] + '"') - } - } - } - authHeader = 'Digest ' + authHeader.join(', ') - self.sentAuth = true - return authHeader -} - -Auth.prototype.onRequest = function (user, pass, sendImmediately, bearer) { - var self = this - var request = self.request - - var authHeader - if (bearer === undefined && user === undefined) { - self.request.emit('error', new Error('no auth mechanism defined')) - } else if (bearer !== undefined) { - authHeader = self.bearer(bearer, sendImmediately) - } else { - authHeader = self.basic(user, pass, sendImmediately) - } - if (authHeader) { - request.setHeader('authorization', authHeader) - } -} - -Auth.prototype.onResponse = function (response) { - var self = this - var request = self.request - - if (!self.hasAuth || self.sentAuth) { return null } - - var c = caseless(response.headers) - - var authHeader = c.get('www-authenticate') - var authVerb = authHeader && authHeader.split(' ')[0].toLowerCase() - request.debug('reauth', authVerb) - - switch (authVerb) { - case 'basic': - return self.basic(self.user, self.pass, true) - - case 'bearer': - return self.bearer(self.bearerToken, true) - - case 'digest': - return self.digest(request.method, request.path, authHeader) - } -} - -exports.Auth = Auth diff --git a/node_modules/request/lib/cookies.js b/node_modules/request/lib/cookies.js deleted file mode 100644 index bd5d46b..0000000 --- a/node_modules/request/lib/cookies.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict' - -var tough = require('tough-cookie') - -var Cookie = tough.Cookie -var CookieJar = tough.CookieJar - -exports.parse = function (str) { - if (str && str.uri) { - str = str.uri - } - if (typeof str !== 'string') { - throw new Error('The cookie function only accepts STRING as param') - } - return Cookie.parse(str, {loose: true}) -} - -// Adapt the sometimes-Async api of tough.CookieJar to our requirements -function RequestJar (store) { - var self = this - self._jar = new CookieJar(store, {looseMode: true}) -} -RequestJar.prototype.setCookie = function (cookieOrStr, uri, options) { - var self = this - return self._jar.setCookieSync(cookieOrStr, uri, options || {}) -} -RequestJar.prototype.getCookieString = function (uri) { - var self = this - return self._jar.getCookieStringSync(uri) -} -RequestJar.prototype.getCookies = function (uri) { - var self = this - return self._jar.getCookiesSync(uri) -} - -exports.jar = function (store) { - return new RequestJar(store) -} diff --git a/node_modules/request/lib/getProxyFromURI.js b/node_modules/request/lib/getProxyFromURI.js deleted file mode 100644 index 0b9b18e..0000000 --- a/node_modules/request/lib/getProxyFromURI.js +++ /dev/null @@ -1,79 +0,0 @@ -'use strict' - -function formatHostname (hostname) { - // canonicalize the hostname, so that 'oogle.com' won't match 'google.com' - return hostname.replace(/^\.*/, '.').toLowerCase() -} - -function parseNoProxyZone (zone) { - zone = zone.trim().toLowerCase() - - var zoneParts = zone.split(':', 2) - var zoneHost = formatHostname(zoneParts[0]) - var zonePort = zoneParts[1] - var hasPort = zone.indexOf(':') > -1 - - return {hostname: zoneHost, port: zonePort, hasPort: hasPort} -} - -function uriInNoProxy (uri, noProxy) { - var port = uri.port || (uri.protocol === 'https:' ? '443' : '80') - var hostname = formatHostname(uri.hostname) - var noProxyList = noProxy.split(',') - - // iterate through the noProxyList until it finds a match. - return noProxyList.map(parseNoProxyZone).some(function (noProxyZone) { - var isMatchedAt = hostname.indexOf(noProxyZone.hostname) - var hostnameMatched = ( - isMatchedAt > -1 && - (isMatchedAt === hostname.length - noProxyZone.hostname.length) - ) - - if (noProxyZone.hasPort) { - return (port === noProxyZone.port) && hostnameMatched - } - - return hostnameMatched - }) -} - -function getProxyFromURI (uri) { - // Decide the proper request proxy to use based on the request URI object and the - // environmental variables (NO_PROXY, HTTP_PROXY, etc.) - // respect NO_PROXY environment variables (see: https://lynx.invisible-island.net/lynx2.8.7/breakout/lynx_help/keystrokes/environments.html) - - var noProxy = process.env.NO_PROXY || process.env.no_proxy || '' - - // if the noProxy is a wildcard then return null - - if (noProxy === '*') { - return null - } - - // if the noProxy is not empty and the uri is found return null - - if (noProxy !== '' && uriInNoProxy(uri, noProxy)) { - return null - } - - // Check for HTTP or HTTPS Proxy in environment Else default to null - - if (uri.protocol === 'http:') { - return process.env.HTTP_PROXY || - process.env.http_proxy || null - } - - if (uri.protocol === 'https:') { - return process.env.HTTPS_PROXY || - process.env.https_proxy || - process.env.HTTP_PROXY || - process.env.http_proxy || null - } - - // if none of that works, return null - // (What uri protocol are you using then?) - - return null -} - -module.exports = getProxyFromURI diff --git a/node_modules/request/lib/har.js b/node_modules/request/lib/har.js deleted file mode 100644 index 0dedee4..0000000 --- a/node_modules/request/lib/har.js +++ /dev/null @@ -1,205 +0,0 @@ -'use strict' - -var fs = require('fs') -var qs = require('querystring') -var validate = require('har-validator') -var extend = require('extend') - -function Har (request) { - this.request = request -} - -Har.prototype.reducer = function (obj, pair) { - // new property ? - if (obj[pair.name] === undefined) { - obj[pair.name] = pair.value - return obj - } - - // existing? convert to array - var arr = [ - obj[pair.name], - pair.value - ] - - obj[pair.name] = arr - - return obj -} - -Har.prototype.prep = function (data) { - // construct utility properties - data.queryObj = {} - data.headersObj = {} - data.postData.jsonObj = false - data.postData.paramsObj = false - - // construct query objects - if (data.queryString && data.queryString.length) { - data.queryObj = data.queryString.reduce(this.reducer, {}) - } - - // construct headers objects - if (data.headers && data.headers.length) { - // loweCase header keys - data.headersObj = data.headers.reduceRight(function (headers, header) { - headers[header.name] = header.value - return headers - }, {}) - } - - // construct Cookie header - if (data.cookies && data.cookies.length) { - var cookies = data.cookies.map(function (cookie) { - return cookie.name + '=' + cookie.value - }) - - if (cookies.length) { - data.headersObj.cookie = cookies.join('; ') - } - } - - // prep body - function some (arr) { - return arr.some(function (type) { - return data.postData.mimeType.indexOf(type) === 0 - }) - } - - if (some([ - 'multipart/mixed', - 'multipart/related', - 'multipart/form-data', - 'multipart/alternative'])) { - // reset values - data.postData.mimeType = 'multipart/form-data' - } else if (some([ - 'application/x-www-form-urlencoded'])) { - if (!data.postData.params) { - data.postData.text = '' - } else { - data.postData.paramsObj = data.postData.params.reduce(this.reducer, {}) - - // always overwrite - data.postData.text = qs.stringify(data.postData.paramsObj) - } - } else if (some([ - 'text/json', - 'text/x-json', - 'application/json', - 'application/x-json'])) { - data.postData.mimeType = 'application/json' - - if (data.postData.text) { - try { - data.postData.jsonObj = JSON.parse(data.postData.text) - } catch (e) { - this.request.debug(e) - - // force back to text/plain - data.postData.mimeType = 'text/plain' - } - } - } - - return data -} - -Har.prototype.options = function (options) { - // skip if no har property defined - if (!options.har) { - return options - } - - var har = {} - extend(har, options.har) - - // only process the first entry - if (har.log && har.log.entries) { - har = har.log.entries[0] - } - - // add optional properties to make validation successful - har.url = har.url || options.url || options.uri || options.baseUrl || '/' - har.httpVersion = har.httpVersion || 'HTTP/1.1' - har.queryString = har.queryString || [] - har.headers = har.headers || [] - har.cookies = har.cookies || [] - har.postData = har.postData || {} - har.postData.mimeType = har.postData.mimeType || 'application/octet-stream' - - har.bodySize = 0 - har.headersSize = 0 - har.postData.size = 0 - - if (!validate.request(har)) { - return options - } - - // clean up and get some utility properties - var req = this.prep(har) - - // construct new options - if (req.url) { - options.url = req.url - } - - if (req.method) { - options.method = req.method - } - - if (Object.keys(req.queryObj).length) { - options.qs = req.queryObj - } - - if (Object.keys(req.headersObj).length) { - options.headers = req.headersObj - } - - function test (type) { - return req.postData.mimeType.indexOf(type) === 0 - } - if (test('application/x-www-form-urlencoded')) { - options.form = req.postData.paramsObj - } else if (test('application/json')) { - if (req.postData.jsonObj) { - options.body = req.postData.jsonObj - options.json = true - } - } else if (test('multipart/form-data')) { - options.formData = {} - - req.postData.params.forEach(function (param) { - var attachment = {} - - if (!param.fileName && !param.contentType) { - options.formData[param.name] = param.value - return - } - - // attempt to read from disk! - if (param.fileName && !param.value) { - attachment.value = fs.createReadStream(param.fileName) - } else if (param.value) { - attachment.value = param.value - } - - if (param.fileName) { - attachment.options = { - filename: param.fileName, - contentType: param.contentType ? param.contentType : null - } - } - - options.formData[param.name] = attachment - }) - } else { - if (req.postData.text) { - options.body = req.postData.text - } - } - - return options -} - -exports.Har = Har diff --git a/node_modules/request/lib/hawk.js b/node_modules/request/lib/hawk.js deleted file mode 100644 index de48a98..0000000 --- a/node_modules/request/lib/hawk.js +++ /dev/null @@ -1,89 +0,0 @@ -'use strict' - -var crypto = require('crypto') - -function randomString (size) { - var bits = (size + 1) * 6 - var buffer = crypto.randomBytes(Math.ceil(bits / 8)) - var string = buffer.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '') - return string.slice(0, size) -} - -function calculatePayloadHash (payload, algorithm, contentType) { - var hash = crypto.createHash(algorithm) - hash.update('hawk.1.payload\n') - hash.update((contentType ? contentType.split(';')[0].trim().toLowerCase() : '') + '\n') - hash.update(payload || '') - hash.update('\n') - return hash.digest('base64') -} - -exports.calculateMac = function (credentials, opts) { - var normalized = 'hawk.1.header\n' + - opts.ts + '\n' + - opts.nonce + '\n' + - (opts.method || '').toUpperCase() + '\n' + - opts.resource + '\n' + - opts.host.toLowerCase() + '\n' + - opts.port + '\n' + - (opts.hash || '') + '\n' - - if (opts.ext) { - normalized = normalized + opts.ext.replace('\\', '\\\\').replace('\n', '\\n') - } - - normalized = normalized + '\n' - - if (opts.app) { - normalized = normalized + opts.app + '\n' + (opts.dlg || '') + '\n' - } - - var hmac = crypto.createHmac(credentials.algorithm, credentials.key).update(normalized) - var digest = hmac.digest('base64') - return digest -} - -exports.header = function (uri, method, opts) { - var timestamp = opts.timestamp || Math.floor((Date.now() + (opts.localtimeOffsetMsec || 0)) / 1000) - var credentials = opts.credentials - if (!credentials || !credentials.id || !credentials.key || !credentials.algorithm) { - return '' - } - - if (['sha1', 'sha256'].indexOf(credentials.algorithm) === -1) { - return '' - } - - var artifacts = { - ts: timestamp, - nonce: opts.nonce || randomString(6), - method: method, - resource: uri.pathname + (uri.search || ''), - host: uri.hostname, - port: uri.port || (uri.protocol === 'http:' ? 80 : 443), - hash: opts.hash, - ext: opts.ext, - app: opts.app, - dlg: opts.dlg - } - - if (!artifacts.hash && (opts.payload || opts.payload === '')) { - artifacts.hash = calculatePayloadHash(opts.payload, credentials.algorithm, opts.contentType) - } - - var mac = exports.calculateMac(credentials, artifacts) - - var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== '' - var header = 'Hawk id="' + credentials.id + - '", ts="' + artifacts.ts + - '", nonce="' + artifacts.nonce + - (artifacts.hash ? '", hash="' + artifacts.hash : '') + - (hasExt ? '", ext="' + artifacts.ext.replace(/\\/g, '\\\\').replace(/"/g, '\\"') : '') + - '", mac="' + mac + '"' - - if (artifacts.app) { - header = header + ', app="' + artifacts.app + (artifacts.dlg ? '", dlg="' + artifacts.dlg : '') + '"' - } - - return header -} diff --git a/node_modules/request/lib/helpers.js b/node_modules/request/lib/helpers.js deleted file mode 100644 index 8b2a7e6..0000000 --- a/node_modules/request/lib/helpers.js +++ /dev/null @@ -1,66 +0,0 @@ -'use strict' - -var jsonSafeStringify = require('json-stringify-safe') -var crypto = require('crypto') -var Buffer = require('safe-buffer').Buffer - -var defer = typeof setImmediate === 'undefined' - ? process.nextTick - : setImmediate - -function paramsHaveRequestBody (params) { - return ( - params.body || - params.requestBodyStream || - (params.json && typeof params.json !== 'boolean') || - params.multipart - ) -} - -function safeStringify (obj, replacer) { - var ret - try { - ret = JSON.stringify(obj, replacer) - } catch (e) { - ret = jsonSafeStringify(obj, replacer) - } - return ret -} - -function md5 (str) { - return crypto.createHash('md5').update(str).digest('hex') -} - -function isReadStream (rs) { - return rs.readable && rs.path && rs.mode -} - -function toBase64 (str) { - return Buffer.from(str || '', 'utf8').toString('base64') -} - -function copy (obj) { - var o = {} - Object.keys(obj).forEach(function (i) { - o[i] = obj[i] - }) - return o -} - -function version () { - var numbers = process.version.replace('v', '').split('.') - return { - major: parseInt(numbers[0], 10), - minor: parseInt(numbers[1], 10), - patch: parseInt(numbers[2], 10) - } -} - -exports.paramsHaveRequestBody = paramsHaveRequestBody -exports.safeStringify = safeStringify -exports.md5 = md5 -exports.isReadStream = isReadStream -exports.toBase64 = toBase64 -exports.copy = copy -exports.version = version -exports.defer = defer diff --git a/node_modules/request/lib/multipart.js b/node_modules/request/lib/multipart.js deleted file mode 100644 index 6a009bc..0000000 --- a/node_modules/request/lib/multipart.js +++ /dev/null @@ -1,112 +0,0 @@ -'use strict' - -var uuid = require('uuid/v4') -var CombinedStream = require('combined-stream') -var isstream = require('isstream') -var Buffer = require('safe-buffer').Buffer - -function Multipart (request) { - this.request = request - this.boundary = uuid() - this.chunked = false - this.body = null -} - -Multipart.prototype.isChunked = function (options) { - var self = this - var chunked = false - var parts = options.data || options - - if (!parts.forEach) { - self.request.emit('error', new Error('Argument error, options.multipart.')) - } - - if (options.chunked !== undefined) { - chunked = options.chunked - } - - if (self.request.getHeader('transfer-encoding') === 'chunked') { - chunked = true - } - - if (!chunked) { - parts.forEach(function (part) { - if (typeof part.body === 'undefined') { - self.request.emit('error', new Error('Body attribute missing in multipart.')) - } - if (isstream(part.body)) { - chunked = true - } - }) - } - - return chunked -} - -Multipart.prototype.setHeaders = function (chunked) { - var self = this - - if (chunked && !self.request.hasHeader('transfer-encoding')) { - self.request.setHeader('transfer-encoding', 'chunked') - } - - var header = self.request.getHeader('content-type') - - if (!header || header.indexOf('multipart') === -1) { - self.request.setHeader('content-type', 'multipart/related; boundary=' + self.boundary) - } else { - if (header.indexOf('boundary') !== -1) { - self.boundary = header.replace(/.*boundary=([^\s;]+).*/, '$1') - } else { - self.request.setHeader('content-type', header + '; boundary=' + self.boundary) - } - } -} - -Multipart.prototype.build = function (parts, chunked) { - var self = this - var body = chunked ? new CombinedStream() : [] - - function add (part) { - if (typeof part === 'number') { - part = part.toString() - } - return chunked ? body.append(part) : body.push(Buffer.from(part)) - } - - if (self.request.preambleCRLF) { - add('\r\n') - } - - parts.forEach(function (part) { - var preamble = '--' + self.boundary + '\r\n' - Object.keys(part).forEach(function (key) { - if (key === 'body') { return } - preamble += key + ': ' + part[key] + '\r\n' - }) - preamble += '\r\n' - add(preamble) - add(part.body) - add('\r\n') - }) - add('--' + self.boundary + '--') - - if (self.request.postambleCRLF) { - add('\r\n') - } - - return body -} - -Multipart.prototype.onRequest = function (options) { - var self = this - - var chunked = self.isChunked(options) - var parts = options.data || options - - self.setHeaders(chunked) - self.chunked = chunked - self.body = self.build(parts, chunked) -} - -exports.Multipart = Multipart diff --git a/node_modules/request/lib/oauth.js b/node_modules/request/lib/oauth.js deleted file mode 100644 index 96de72b..0000000 --- a/node_modules/request/lib/oauth.js +++ /dev/null @@ -1,148 +0,0 @@ -'use strict' - -var url = require('url') -var qs = require('qs') -var caseless = require('caseless') -var uuid = require('uuid/v4') -var oauth = require('oauth-sign') -var crypto = require('crypto') -var Buffer = require('safe-buffer').Buffer - -function OAuth (request) { - this.request = request - this.params = null -} - -OAuth.prototype.buildParams = function (_oauth, uri, method, query, form, qsLib) { - var oa = {} - for (var i in _oauth) { - oa['oauth_' + i] = _oauth[i] - } - if (!oa.oauth_version) { - oa.oauth_version = '1.0' - } - if (!oa.oauth_timestamp) { - oa.oauth_timestamp = Math.floor(Date.now() / 1000).toString() - } - if (!oa.oauth_nonce) { - oa.oauth_nonce = uuid().replace(/-/g, '') - } - if (!oa.oauth_signature_method) { - oa.oauth_signature_method = 'HMAC-SHA1' - } - - var consumer_secret_or_private_key = oa.oauth_consumer_secret || oa.oauth_private_key // eslint-disable-line camelcase - delete oa.oauth_consumer_secret - delete oa.oauth_private_key - - var token_secret = oa.oauth_token_secret // eslint-disable-line camelcase - delete oa.oauth_token_secret - - var realm = oa.oauth_realm - delete oa.oauth_realm - delete oa.oauth_transport_method - - var baseurl = uri.protocol + '//' + uri.host + uri.pathname - var params = qsLib.parse([].concat(query, form, qsLib.stringify(oa)).join('&')) - - oa.oauth_signature = oauth.sign( - oa.oauth_signature_method, - method, - baseurl, - params, - consumer_secret_or_private_key, // eslint-disable-line camelcase - token_secret // eslint-disable-line camelcase - ) - - if (realm) { - oa.realm = realm - } - - return oa -} - -OAuth.prototype.buildBodyHash = function (_oauth, body) { - if (['HMAC-SHA1', 'RSA-SHA1'].indexOf(_oauth.signature_method || 'HMAC-SHA1') < 0) { - this.request.emit('error', new Error('oauth: ' + _oauth.signature_method + - ' signature_method not supported with body_hash signing.')) - } - - var shasum = crypto.createHash('sha1') - shasum.update(body || '') - var sha1 = shasum.digest('hex') - - return Buffer.from(sha1, 'hex').toString('base64') -} - -OAuth.prototype.concatParams = function (oa, sep, wrap) { - wrap = wrap || '' - - var params = Object.keys(oa).filter(function (i) { - return i !== 'realm' && i !== 'oauth_signature' - }).sort() - - if (oa.realm) { - params.splice(0, 0, 'realm') - } - params.push('oauth_signature') - - return params.map(function (i) { - return i + '=' + wrap + oauth.rfc3986(oa[i]) + wrap - }).join(sep) -} - -OAuth.prototype.onRequest = function (_oauth) { - var self = this - self.params = _oauth - - var uri = self.request.uri || {} - var method = self.request.method || '' - var headers = caseless(self.request.headers) - var body = self.request.body || '' - var qsLib = self.request.qsLib || qs - - var form - var query - var contentType = headers.get('content-type') || '' - var formContentType = 'application/x-www-form-urlencoded' - var transport = _oauth.transport_method || 'header' - - if (contentType.slice(0, formContentType.length) === formContentType) { - contentType = formContentType - form = body - } - if (uri.query) { - query = uri.query - } - if (transport === 'body' && (method !== 'POST' || contentType !== formContentType)) { - self.request.emit('error', new Error('oauth: transport_method of body requires POST ' + - 'and content-type ' + formContentType)) - } - - if (!form && typeof _oauth.body_hash === 'boolean') { - _oauth.body_hash = self.buildBodyHash(_oauth, self.request.body.toString()) - } - - var oa = self.buildParams(_oauth, uri, method, query, form, qsLib) - - switch (transport) { - case 'header': - self.request.setHeader('Authorization', 'OAuth ' + self.concatParams(oa, ',', '"')) - break - - case 'query': - var href = self.request.uri.href += (query ? '&' : '?') + self.concatParams(oa, '&') - self.request.uri = url.parse(href) - self.request.path = self.request.uri.path - break - - case 'body': - self.request.body = (form ? form + '&' : '') + self.concatParams(oa, '&') - break - - default: - self.request.emit('error', new Error('oauth: transport_method invalid')) - } -} - -exports.OAuth = OAuth diff --git a/node_modules/request/lib/querystring.js b/node_modules/request/lib/querystring.js deleted file mode 100644 index 4a32cd1..0000000 --- a/node_modules/request/lib/querystring.js +++ /dev/null @@ -1,50 +0,0 @@ -'use strict' - -var qs = require('qs') -var querystring = require('querystring') - -function Querystring (request) { - this.request = request - this.lib = null - this.useQuerystring = null - this.parseOptions = null - this.stringifyOptions = null -} - -Querystring.prototype.init = function (options) { - if (this.lib) { return } - - this.useQuerystring = options.useQuerystring - this.lib = (this.useQuerystring ? querystring : qs) - - this.parseOptions = options.qsParseOptions || {} - this.stringifyOptions = options.qsStringifyOptions || {} -} - -Querystring.prototype.stringify = function (obj) { - return (this.useQuerystring) - ? this.rfc3986(this.lib.stringify(obj, - this.stringifyOptions.sep || null, - this.stringifyOptions.eq || null, - this.stringifyOptions)) - : this.lib.stringify(obj, this.stringifyOptions) -} - -Querystring.prototype.parse = function (str) { - return (this.useQuerystring) - ? this.lib.parse(str, - this.parseOptions.sep || null, - this.parseOptions.eq || null, - this.parseOptions) - : this.lib.parse(str, this.parseOptions) -} - -Querystring.prototype.rfc3986 = function (str) { - return str.replace(/[!'()*]/g, function (c) { - return '%' + c.charCodeAt(0).toString(16).toUpperCase() - }) -} - -Querystring.prototype.unescape = querystring.unescape - -exports.Querystring = Querystring diff --git a/node_modules/request/lib/redirect.js b/node_modules/request/lib/redirect.js deleted file mode 100644 index b9150e7..0000000 --- a/node_modules/request/lib/redirect.js +++ /dev/null @@ -1,154 +0,0 @@ -'use strict' - -var url = require('url') -var isUrl = /^https?:/ - -function Redirect (request) { - this.request = request - this.followRedirect = true - this.followRedirects = true - this.followAllRedirects = false - this.followOriginalHttpMethod = false - this.allowRedirect = function () { return true } - this.maxRedirects = 10 - this.redirects = [] - this.redirectsFollowed = 0 - this.removeRefererHeader = false -} - -Redirect.prototype.onRequest = function (options) { - var self = this - - if (options.maxRedirects !== undefined) { - self.maxRedirects = options.maxRedirects - } - if (typeof options.followRedirect === 'function') { - self.allowRedirect = options.followRedirect - } - if (options.followRedirect !== undefined) { - self.followRedirects = !!options.followRedirect - } - if (options.followAllRedirects !== undefined) { - self.followAllRedirects = options.followAllRedirects - } - if (self.followRedirects || self.followAllRedirects) { - self.redirects = self.redirects || [] - } - if (options.removeRefererHeader !== undefined) { - self.removeRefererHeader = options.removeRefererHeader - } - if (options.followOriginalHttpMethod !== undefined) { - self.followOriginalHttpMethod = options.followOriginalHttpMethod - } -} - -Redirect.prototype.redirectTo = function (response) { - var self = this - var request = self.request - - var redirectTo = null - if (response.statusCode >= 300 && response.statusCode < 400 && response.caseless.has('location')) { - var location = response.caseless.get('location') - request.debug('redirect', location) - - if (self.followAllRedirects) { - redirectTo = location - } else if (self.followRedirects) { - switch (request.method) { - case 'PATCH': - case 'PUT': - case 'POST': - case 'DELETE': - // Do not follow redirects - break - default: - redirectTo = location - break - } - } - } else if (response.statusCode === 401) { - var authHeader = request._auth.onResponse(response) - if (authHeader) { - request.setHeader('authorization', authHeader) - redirectTo = request.uri - } - } - return redirectTo -} - -Redirect.prototype.onResponse = function (response) { - var self = this - var request = self.request - - var redirectTo = self.redirectTo(response) - if (!redirectTo || !self.allowRedirect.call(request, response)) { - return false - } - - request.debug('redirect to', redirectTo) - - // ignore any potential response body. it cannot possibly be useful - // to us at this point. - // response.resume should be defined, but check anyway before calling. Workaround for browserify. - if (response.resume) { - response.resume() - } - - if (self.redirectsFollowed >= self.maxRedirects) { - request.emit('error', new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + request.uri.href)) - return false - } - self.redirectsFollowed += 1 - - if (!isUrl.test(redirectTo)) { - redirectTo = url.resolve(request.uri.href, redirectTo) - } - - var uriPrev = request.uri - request.uri = url.parse(redirectTo) - - // handle the case where we change protocol from https to http or vice versa - if (request.uri.protocol !== uriPrev.protocol) { - delete request.agent - } - - self.redirects.push({ statusCode: response.statusCode, redirectUri: redirectTo }) - - if (self.followAllRedirects && request.method !== 'HEAD' && - response.statusCode !== 401 && response.statusCode !== 307) { - request.method = self.followOriginalHttpMethod ? request.method : 'GET' - } - // request.method = 'GET' // Force all redirects to use GET || commented out fixes #215 - delete request.src - delete request.req - delete request._started - if (response.statusCode !== 401 && response.statusCode !== 307) { - // Remove parameters from the previous response, unless this is the second request - // for a server that requires digest authentication. - delete request.body - delete request._form - if (request.headers) { - request.removeHeader('host') - request.removeHeader('content-type') - request.removeHeader('content-length') - if (request.uri.hostname !== request.originalHost.split(':')[0]) { - // Remove authorization if changing hostnames (but not if just - // changing ports or protocols). This matches the behavior of curl: - // https://github.com/bagder/curl/blob/6beb0eee/lib/http.c#L710 - request.removeHeader('authorization') - } - } - } - - if (!self.removeRefererHeader) { - request.setHeader('referer', uriPrev.href) - } - - request.emit('redirect') - - request.init() - - return true -} - -exports.Redirect = Redirect diff --git a/node_modules/request/lib/tunnel.js b/node_modules/request/lib/tunnel.js deleted file mode 100644 index 4479003..0000000 --- a/node_modules/request/lib/tunnel.js +++ /dev/null @@ -1,175 +0,0 @@ -'use strict' - -var url = require('url') -var tunnel = require('tunnel-agent') - -var defaultProxyHeaderWhiteList = [ - 'accept', - 'accept-charset', - 'accept-encoding', - 'accept-language', - 'accept-ranges', - 'cache-control', - 'content-encoding', - 'content-language', - 'content-location', - 'content-md5', - 'content-range', - 'content-type', - 'connection', - 'date', - 'expect', - 'max-forwards', - 'pragma', - 'referer', - 'te', - 'user-agent', - 'via' -] - -var defaultProxyHeaderExclusiveList = [ - 'proxy-authorization' -] - -function constructProxyHost (uriObject) { - var port = uriObject.port - var protocol = uriObject.protocol - var proxyHost = uriObject.hostname + ':' - - if (port) { - proxyHost += port - } else if (protocol === 'https:') { - proxyHost += '443' - } else { - proxyHost += '80' - } - - return proxyHost -} - -function constructProxyHeaderWhiteList (headers, proxyHeaderWhiteList) { - var whiteList = proxyHeaderWhiteList - .reduce(function (set, header) { - set[header.toLowerCase()] = true - return set - }, {}) - - return Object.keys(headers) - .filter(function (header) { - return whiteList[header.toLowerCase()] - }) - .reduce(function (set, header) { - set[header] = headers[header] - return set - }, {}) -} - -function constructTunnelOptions (request, proxyHeaders) { - var proxy = request.proxy - - var tunnelOptions = { - proxy: { - host: proxy.hostname, - port: +proxy.port, - proxyAuth: proxy.auth, - headers: proxyHeaders - }, - headers: request.headers, - ca: request.ca, - cert: request.cert, - key: request.key, - passphrase: request.passphrase, - pfx: request.pfx, - ciphers: request.ciphers, - rejectUnauthorized: request.rejectUnauthorized, - secureOptions: request.secureOptions, - secureProtocol: request.secureProtocol - } - - return tunnelOptions -} - -function constructTunnelFnName (uri, proxy) { - var uriProtocol = (uri.protocol === 'https:' ? 'https' : 'http') - var proxyProtocol = (proxy.protocol === 'https:' ? 'Https' : 'Http') - return [uriProtocol, proxyProtocol].join('Over') -} - -function getTunnelFn (request) { - var uri = request.uri - var proxy = request.proxy - var tunnelFnName = constructTunnelFnName(uri, proxy) - return tunnel[tunnelFnName] -} - -function Tunnel (request) { - this.request = request - this.proxyHeaderWhiteList = defaultProxyHeaderWhiteList - this.proxyHeaderExclusiveList = [] - if (typeof request.tunnel !== 'undefined') { - this.tunnelOverride = request.tunnel - } -} - -Tunnel.prototype.isEnabled = function () { - var self = this - var request = self.request - // Tunnel HTTPS by default. Allow the user to override this setting. - - // If self.tunnelOverride is set (the user specified a value), use it. - if (typeof self.tunnelOverride !== 'undefined') { - return self.tunnelOverride - } - - // If the destination is HTTPS, tunnel. - if (request.uri.protocol === 'https:') { - return true - } - - // Otherwise, do not use tunnel. - return false -} - -Tunnel.prototype.setup = function (options) { - var self = this - var request = self.request - - options = options || {} - - if (typeof request.proxy === 'string') { - request.proxy = url.parse(request.proxy) - } - - if (!request.proxy || !request.tunnel) { - return false - } - - // Setup Proxy Header Exclusive List and White List - if (options.proxyHeaderWhiteList) { - self.proxyHeaderWhiteList = options.proxyHeaderWhiteList - } - if (options.proxyHeaderExclusiveList) { - self.proxyHeaderExclusiveList = options.proxyHeaderExclusiveList - } - - var proxyHeaderExclusiveList = self.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList) - var proxyHeaderWhiteList = self.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList) - - // Setup Proxy Headers and Proxy Headers Host - // Only send the Proxy White Listed Header names - var proxyHeaders = constructProxyHeaderWhiteList(request.headers, proxyHeaderWhiteList) - proxyHeaders.host = constructProxyHost(request.uri) - - proxyHeaderExclusiveList.forEach(request.removeHeader, request) - - // Set Agent from Tunnel Data - var tunnelFn = getTunnelFn(request) - var tunnelOptions = constructTunnelOptions(request, proxyHeaders) - request.agent = tunnelFn(tunnelOptions) - - return true -} - -Tunnel.defaultProxyHeaderWhiteList = defaultProxyHeaderWhiteList -Tunnel.defaultProxyHeaderExclusiveList = defaultProxyHeaderExclusiveList -exports.Tunnel = Tunnel diff --git a/node_modules/request/package.json b/node_modules/request/package.json deleted file mode 100644 index 6376ffd..0000000 --- a/node_modules/request/package.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "_from": "request@^2.88.0", - "_id": "request@2.88.2", - "_inBundle": false, - "_integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "_location": "/request", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "request@^2.88.0", - "name": "request", - "escapedName": "request", - "rawSpec": "^2.88.0", - "saveSpec": null, - "fetchSpec": "^2.88.0" - }, - "_requiredBy": [ - "/link-check", - "/markdown-link-check" - ], - "_resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "_shasum": "d73c918731cb5a87da047e207234146f664d12b3", - "_spec": "request@^2.88.0", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/markdown-link-check", - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com" - }, - "bugs": { - "url": "http://github.com/request/request/issues" - }, - "bundleDependencies": false, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "description": "Simplified HTTP request client.", - "devDependencies": { - "bluebird": "^3.2.1", - "browserify": "^13.0.1", - "browserify-istanbul": "^2.0.0", - "buffer-equal": "^1.0.0", - "codecov": "^3.0.4", - "coveralls": "^3.0.2", - "function-bind": "^1.0.2", - "karma": "^3.0.0", - "karma-browserify": "^5.0.1", - "karma-cli": "^1.0.0", - "karma-coverage": "^1.0.0", - "karma-phantomjs-launcher": "^1.0.0", - "karma-tap": "^3.0.1", - "nyc": "^14.1.1", - "phantomjs-prebuilt": "^2.1.3", - "rimraf": "^2.2.8", - "server-destroy": "^1.0.1", - "standard": "^9.0.0", - "tape": "^4.6.0", - "taper": "^0.5.0" - }, - "engines": { - "node": ">= 6" - }, - "files": [ - "lib/", - "index.js", - "request.js" - ], - "greenkeeper": { - "ignore": [ - "hawk", - "har-validator" - ] - }, - "homepage": "https://github.com/request/request#readme", - "keywords": [ - "http", - "simple", - "util", - "utility" - ], - "license": "Apache-2.0", - "main": "index.js", - "name": "request", - "repository": { - "type": "git", - "url": "git+https://github.com/request/request.git" - }, - "scripts": { - "lint": "standard", - "test": "npm run lint && npm run test-ci && npm run test-browser", - "test-browser": "node tests/browser/start.js", - "test-ci": "taper tests/test-*.js", - "test-cov": "nyc --reporter=lcov tape tests/test-*.js" - }, - "version": "2.88.2" -} diff --git a/node_modules/request/request.js b/node_modules/request/request.js deleted file mode 100644 index 198b760..0000000 --- a/node_modules/request/request.js +++ /dev/null @@ -1,1553 +0,0 @@ -'use strict' - -var http = require('http') -var https = require('https') -var url = require('url') -var util = require('util') -var stream = require('stream') -var zlib = require('zlib') -var aws2 = require('aws-sign2') -var aws4 = require('aws4') -var httpSignature = require('http-signature') -var mime = require('mime-types') -var caseless = require('caseless') -var ForeverAgent = require('forever-agent') -var FormData = require('form-data') -var extend = require('extend') -var isstream = require('isstream') -var isTypedArray = require('is-typedarray').strict -var helpers = require('./lib/helpers') -var cookies = require('./lib/cookies') -var getProxyFromURI = require('./lib/getProxyFromURI') -var Querystring = require('./lib/querystring').Querystring -var Har = require('./lib/har').Har -var Auth = require('./lib/auth').Auth -var OAuth = require('./lib/oauth').OAuth -var hawk = require('./lib/hawk') -var Multipart = require('./lib/multipart').Multipart -var Redirect = require('./lib/redirect').Redirect -var Tunnel = require('./lib/tunnel').Tunnel -var now = require('performance-now') -var Buffer = require('safe-buffer').Buffer - -var safeStringify = helpers.safeStringify -var isReadStream = helpers.isReadStream -var toBase64 = helpers.toBase64 -var defer = helpers.defer -var copy = helpers.copy -var version = helpers.version -var globalCookieJar = cookies.jar() - -var globalPool = {} - -function filterForNonReserved (reserved, options) { - // Filter out properties that are not reserved. - // Reserved values are passed in at call site. - - var object = {} - for (var i in options) { - var notReserved = (reserved.indexOf(i) === -1) - if (notReserved) { - object[i] = options[i] - } - } - return object -} - -function filterOutReservedFunctions (reserved, options) { - // Filter out properties that are functions and are reserved. - // Reserved values are passed in at call site. - - var object = {} - for (var i in options) { - var isReserved = !(reserved.indexOf(i) === -1) - var isFunction = (typeof options[i] === 'function') - if (!(isReserved && isFunction)) { - object[i] = options[i] - } - } - return object -} - -// Return a simpler request object to allow serialization -function requestToJSON () { - var self = this - return { - uri: self.uri, - method: self.method, - headers: self.headers - } -} - -// Return a simpler response object to allow serialization -function responseToJSON () { - var self = this - return { - statusCode: self.statusCode, - body: self.body, - headers: self.headers, - request: requestToJSON.call(self.request) - } -} - -function Request (options) { - // if given the method property in options, set property explicitMethod to true - - // extend the Request instance with any non-reserved properties - // remove any reserved functions from the options object - // set Request instance to be readable and writable - // call init - - var self = this - - // start with HAR, then override with additional options - if (options.har) { - self._har = new Har(self) - options = self._har.options(options) - } - - stream.Stream.call(self) - var reserved = Object.keys(Request.prototype) - var nonReserved = filterForNonReserved(reserved, options) - - extend(self, nonReserved) - options = filterOutReservedFunctions(reserved, options) - - self.readable = true - self.writable = true - if (options.method) { - self.explicitMethod = true - } - self._qs = new Querystring(self) - self._auth = new Auth(self) - self._oauth = new OAuth(self) - self._multipart = new Multipart(self) - self._redirect = new Redirect(self) - self._tunnel = new Tunnel(self) - self.init(options) -} - -util.inherits(Request, stream.Stream) - -// Debugging -Request.debug = process.env.NODE_DEBUG && /\brequest\b/.test(process.env.NODE_DEBUG) -function debug () { - if (Request.debug) { - console.error('REQUEST %s', util.format.apply(util, arguments)) - } -} -Request.prototype.debug = debug - -Request.prototype.init = function (options) { - // init() contains all the code to setup the request object. - // the actual outgoing request is not started until start() is called - // this function is called from both the constructor and on redirect. - var self = this - if (!options) { - options = {} - } - self.headers = self.headers ? copy(self.headers) : {} - - // Delete headers with value undefined since they break - // ClientRequest.OutgoingMessage.setHeader in node 0.12 - for (var headerName in self.headers) { - if (typeof self.headers[headerName] === 'undefined') { - delete self.headers[headerName] - } - } - - caseless.httpify(self, self.headers) - - if (!self.method) { - self.method = options.method || 'GET' - } - if (!self.localAddress) { - self.localAddress = options.localAddress - } - - self._qs.init(options) - - debug(options) - if (!self.pool && self.pool !== false) { - self.pool = globalPool - } - self.dests = self.dests || [] - self.__isRequestRequest = true - - // Protect against double callback - if (!self._callback && self.callback) { - self._callback = self.callback - self.callback = function () { - if (self._callbackCalled) { - return // Print a warning maybe? - } - self._callbackCalled = true - self._callback.apply(self, arguments) - } - self.on('error', self.callback.bind()) - self.on('complete', self.callback.bind(self, null)) - } - - // People use this property instead all the time, so support it - if (!self.uri && self.url) { - self.uri = self.url - delete self.url - } - - // If there's a baseUrl, then use it as the base URL (i.e. uri must be - // specified as a relative path and is appended to baseUrl). - if (self.baseUrl) { - if (typeof self.baseUrl !== 'string') { - return self.emit('error', new Error('options.baseUrl must be a string')) - } - - if (typeof self.uri !== 'string') { - return self.emit('error', new Error('options.uri must be a string when using options.baseUrl')) - } - - if (self.uri.indexOf('//') === 0 || self.uri.indexOf('://') !== -1) { - return self.emit('error', new Error('options.uri must be a path when using options.baseUrl')) - } - - // Handle all cases to make sure that there's only one slash between - // baseUrl and uri. - var baseUrlEndsWithSlash = self.baseUrl.lastIndexOf('/') === self.baseUrl.length - 1 - var uriStartsWithSlash = self.uri.indexOf('/') === 0 - - if (baseUrlEndsWithSlash && uriStartsWithSlash) { - self.uri = self.baseUrl + self.uri.slice(1) - } else if (baseUrlEndsWithSlash || uriStartsWithSlash) { - self.uri = self.baseUrl + self.uri - } else if (self.uri === '') { - self.uri = self.baseUrl - } else { - self.uri = self.baseUrl + '/' + self.uri - } - delete self.baseUrl - } - - // A URI is needed by this point, emit error if we haven't been able to get one - if (!self.uri) { - return self.emit('error', new Error('options.uri is a required argument')) - } - - // If a string URI/URL was given, parse it into a URL object - if (typeof self.uri === 'string') { - self.uri = url.parse(self.uri) - } - - // Some URL objects are not from a URL parsed string and need href added - if (!self.uri.href) { - self.uri.href = url.format(self.uri) - } - - // DEPRECATED: Warning for users of the old Unix Sockets URL Scheme - if (self.uri.protocol === 'unix:') { - return self.emit('error', new Error('`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`')) - } - - // Support Unix Sockets - if (self.uri.host === 'unix') { - self.enableUnixSocket() - } - - if (self.strictSSL === false) { - self.rejectUnauthorized = false - } - - if (!self.uri.pathname) { self.uri.pathname = '/' } - - if (!(self.uri.host || (self.uri.hostname && self.uri.port)) && !self.uri.isUnix) { - // Invalid URI: it may generate lot of bad errors, like 'TypeError: Cannot call method `indexOf` of undefined' in CookieJar - // Detect and reject it as soon as possible - var faultyUri = url.format(self.uri) - var message = 'Invalid URI "' + faultyUri + '"' - if (Object.keys(options).length === 0) { - // No option ? This can be the sign of a redirect - // As this is a case where the user cannot do anything (they didn't call request directly with this URL) - // they should be warned that it can be caused by a redirection (can save some hair) - message += '. This can be caused by a crappy redirection.' - } - // This error was fatal - self.abort() - return self.emit('error', new Error(message)) - } - - if (!self.hasOwnProperty('proxy')) { - self.proxy = getProxyFromURI(self.uri) - } - - self.tunnel = self._tunnel.isEnabled() - if (self.proxy) { - self._tunnel.setup(options) - } - - self._redirect.onRequest(options) - - self.setHost = false - if (!self.hasHeader('host')) { - var hostHeaderName = self.originalHostHeaderName || 'host' - self.setHeader(hostHeaderName, self.uri.host) - // Drop :port suffix from Host header if known protocol. - if (self.uri.port) { - if ((self.uri.port === '80' && self.uri.protocol === 'http:') || - (self.uri.port === '443' && self.uri.protocol === 'https:')) { - self.setHeader(hostHeaderName, self.uri.hostname) - } - } - self.setHost = true - } - - self.jar(self._jar || options.jar) - - if (!self.uri.port) { - if (self.uri.protocol === 'http:') { self.uri.port = 80 } else if (self.uri.protocol === 'https:') { self.uri.port = 443 } - } - - if (self.proxy && !self.tunnel) { - self.port = self.proxy.port - self.host = self.proxy.hostname - } else { - self.port = self.uri.port - self.host = self.uri.hostname - } - - if (options.form) { - self.form(options.form) - } - - if (options.formData) { - var formData = options.formData - var requestForm = self.form() - var appendFormValue = function (key, value) { - if (value && value.hasOwnProperty('value') && value.hasOwnProperty('options')) { - requestForm.append(key, value.value, value.options) - } else { - requestForm.append(key, value) - } - } - for (var formKey in formData) { - if (formData.hasOwnProperty(formKey)) { - var formValue = formData[formKey] - if (formValue instanceof Array) { - for (var j = 0; j < formValue.length; j++) { - appendFormValue(formKey, formValue[j]) - } - } else { - appendFormValue(formKey, formValue) - } - } - } - } - - if (options.qs) { - self.qs(options.qs) - } - - if (self.uri.path) { - self.path = self.uri.path - } else { - self.path = self.uri.pathname + (self.uri.search || '') - } - - if (self.path.length === 0) { - self.path = '/' - } - - // Auth must happen last in case signing is dependent on other headers - if (options.aws) { - self.aws(options.aws) - } - - if (options.hawk) { - self.hawk(options.hawk) - } - - if (options.httpSignature) { - self.httpSignature(options.httpSignature) - } - - if (options.auth) { - if (Object.prototype.hasOwnProperty.call(options.auth, 'username')) { - options.auth.user = options.auth.username - } - if (Object.prototype.hasOwnProperty.call(options.auth, 'password')) { - options.auth.pass = options.auth.password - } - - self.auth( - options.auth.user, - options.auth.pass, - options.auth.sendImmediately, - options.auth.bearer - ) - } - - if (self.gzip && !self.hasHeader('accept-encoding')) { - self.setHeader('accept-encoding', 'gzip, deflate') - } - - if (self.uri.auth && !self.hasHeader('authorization')) { - var uriAuthPieces = self.uri.auth.split(':').map(function (item) { return self._qs.unescape(item) }) - self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(':'), true) - } - - if (!self.tunnel && self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization')) { - var proxyAuthPieces = self.proxy.auth.split(':').map(function (item) { return self._qs.unescape(item) }) - var authHeader = 'Basic ' + toBase64(proxyAuthPieces.join(':')) - self.setHeader('proxy-authorization', authHeader) - } - - if (self.proxy && !self.tunnel) { - self.path = (self.uri.protocol + '//' + self.uri.host + self.path) - } - - if (options.json) { - self.json(options.json) - } - if (options.multipart) { - self.multipart(options.multipart) - } - - if (options.time) { - self.timing = true - - // NOTE: elapsedTime is deprecated in favor of .timings - self.elapsedTime = self.elapsedTime || 0 - } - - function setContentLength () { - if (isTypedArray(self.body)) { - self.body = Buffer.from(self.body) - } - - if (!self.hasHeader('content-length')) { - var length - if (typeof self.body === 'string') { - length = Buffer.byteLength(self.body) - } else if (Array.isArray(self.body)) { - length = self.body.reduce(function (a, b) { return a + b.length }, 0) - } else { - length = self.body.length - } - - if (length) { - self.setHeader('content-length', length) - } else { - self.emit('error', new Error('Argument error, options.body.')) - } - } - } - if (self.body && !isstream(self.body)) { - setContentLength() - } - - if (options.oauth) { - self.oauth(options.oauth) - } else if (self._oauth.params && self.hasHeader('authorization')) { - self.oauth(self._oauth.params) - } - - var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol - var defaultModules = {'http:': http, 'https:': https} - var httpModules = self.httpModules || {} - - self.httpModule = httpModules[protocol] || defaultModules[protocol] - - if (!self.httpModule) { - return self.emit('error', new Error('Invalid protocol: ' + protocol)) - } - - if (options.ca) { - self.ca = options.ca - } - - if (!self.agent) { - if (options.agentOptions) { - self.agentOptions = options.agentOptions - } - - if (options.agentClass) { - self.agentClass = options.agentClass - } else if (options.forever) { - var v = version() - // use ForeverAgent in node 0.10- only - if (v.major === 0 && v.minor <= 10) { - self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL - } else { - self.agentClass = self.httpModule.Agent - self.agentOptions = self.agentOptions || {} - self.agentOptions.keepAlive = true - } - } else { - self.agentClass = self.httpModule.Agent - } - } - - if (self.pool === false) { - self.agent = false - } else { - self.agent = self.agent || self.getNewAgent() - } - - self.on('pipe', function (src) { - if (self.ntick && self._started) { - self.emit('error', new Error('You cannot pipe to this stream after the outbound request has started.')) - } - self.src = src - if (isReadStream(src)) { - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', mime.lookup(src.path)) - } - } else { - if (src.headers) { - for (var i in src.headers) { - if (!self.hasHeader(i)) { - self.setHeader(i, src.headers[i]) - } - } - } - if (self._json && !self.hasHeader('content-type')) { - self.setHeader('content-type', 'application/json') - } - if (src.method && !self.explicitMethod) { - self.method = src.method - } - } - - // self.on('pipe', function () { - // console.error('You have already piped to this stream. Pipeing twice is likely to break the request.') - // }) - }) - - defer(function () { - if (self._aborted) { - return - } - - var end = function () { - if (self._form) { - if (!self._auth.hasAuth) { - self._form.pipe(self) - } else if (self._auth.hasAuth && self._auth.sentAuth) { - self._form.pipe(self) - } - } - if (self._multipart && self._multipart.chunked) { - self._multipart.body.pipe(self) - } - if (self.body) { - if (isstream(self.body)) { - self.body.pipe(self) - } else { - setContentLength() - if (Array.isArray(self.body)) { - self.body.forEach(function (part) { - self.write(part) - }) - } else { - self.write(self.body) - } - self.end() - } - } else if (self.requestBodyStream) { - console.warn('options.requestBodyStream is deprecated, please pass the request object to stream.pipe.') - self.requestBodyStream.pipe(self) - } else if (!self.src) { - if (self._auth.hasAuth && !self._auth.sentAuth) { - self.end() - return - } - if (self.method !== 'GET' && typeof self.method !== 'undefined') { - self.setHeader('content-length', 0) - } - self.end() - } - } - - if (self._form && !self.hasHeader('content-length')) { - // Before ending the request, we had to compute the length of the whole form, asyncly - self.setHeader(self._form.getHeaders(), true) - self._form.getLength(function (err, length) { - if (!err && !isNaN(length)) { - self.setHeader('content-length', length) - } - end() - }) - } else { - end() - } - - self.ntick = true - }) -} - -Request.prototype.getNewAgent = function () { - var self = this - var Agent = self.agentClass - var options = {} - if (self.agentOptions) { - for (var i in self.agentOptions) { - options[i] = self.agentOptions[i] - } - } - if (self.ca) { - options.ca = self.ca - } - if (self.ciphers) { - options.ciphers = self.ciphers - } - if (self.secureProtocol) { - options.secureProtocol = self.secureProtocol - } - if (self.secureOptions) { - options.secureOptions = self.secureOptions - } - if (typeof self.rejectUnauthorized !== 'undefined') { - options.rejectUnauthorized = self.rejectUnauthorized - } - - if (self.cert && self.key) { - options.key = self.key - options.cert = self.cert - } - - if (self.pfx) { - options.pfx = self.pfx - } - - if (self.passphrase) { - options.passphrase = self.passphrase - } - - var poolKey = '' - - // different types of agents are in different pools - if (Agent !== self.httpModule.Agent) { - poolKey += Agent.name - } - - // ca option is only relevant if proxy or destination are https - var proxy = self.proxy - if (typeof proxy === 'string') { - proxy = url.parse(proxy) - } - var isHttps = (proxy && proxy.protocol === 'https:') || this.uri.protocol === 'https:' - - if (isHttps) { - if (options.ca) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.ca - } - - if (typeof options.rejectUnauthorized !== 'undefined') { - if (poolKey) { - poolKey += ':' - } - poolKey += options.rejectUnauthorized - } - - if (options.cert) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.cert.toString('ascii') + options.key.toString('ascii') - } - - if (options.pfx) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.pfx.toString('ascii') - } - - if (options.ciphers) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.ciphers - } - - if (options.secureProtocol) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.secureProtocol - } - - if (options.secureOptions) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.secureOptions - } - } - - if (self.pool === globalPool && !poolKey && Object.keys(options).length === 0 && self.httpModule.globalAgent) { - // not doing anything special. Use the globalAgent - return self.httpModule.globalAgent - } - - // we're using a stored agent. Make sure it's protocol-specific - poolKey = self.uri.protocol + poolKey - - // generate a new agent for this setting if none yet exists - if (!self.pool[poolKey]) { - self.pool[poolKey] = new Agent(options) - // properly set maxSockets on new agents - if (self.pool.maxSockets) { - self.pool[poolKey].maxSockets = self.pool.maxSockets - } - } - - return self.pool[poolKey] -} - -Request.prototype.start = function () { - // start() is called once we are ready to send the outgoing HTTP request. - // this is usually called on the first write(), end() or on nextTick() - var self = this - - if (self.timing) { - // All timings will be relative to this request's startTime. In order to do this, - // we need to capture the wall-clock start time (via Date), immediately followed - // by the high-resolution timer (via now()). While these two won't be set - // at the _exact_ same time, they should be close enough to be able to calculate - // high-resolution, monotonically non-decreasing timestamps relative to startTime. - var startTime = new Date().getTime() - var startTimeNow = now() - } - - if (self._aborted) { - return - } - - self._started = true - self.method = self.method || 'GET' - self.href = self.uri.href - - if (self.src && self.src.stat && self.src.stat.size && !self.hasHeader('content-length')) { - self.setHeader('content-length', self.src.stat.size) - } - if (self._aws) { - self.aws(self._aws, true) - } - - // We have a method named auth, which is completely different from the http.request - // auth option. If we don't remove it, we're gonna have a bad time. - var reqOptions = copy(self) - delete reqOptions.auth - - debug('make request', self.uri.href) - - // node v6.8.0 now supports a `timeout` value in `http.request()`, but we - // should delete it for now since we handle timeouts manually for better - // consistency with node versions before v6.8.0 - delete reqOptions.timeout - - try { - self.req = self.httpModule.request(reqOptions) - } catch (err) { - self.emit('error', err) - return - } - - if (self.timing) { - self.startTime = startTime - self.startTimeNow = startTimeNow - - // Timing values will all be relative to startTime (by comparing to startTimeNow - // so we have an accurate clock) - self.timings = {} - } - - var timeout - if (self.timeout && !self.timeoutTimer) { - if (self.timeout < 0) { - timeout = 0 - } else if (typeof self.timeout === 'number' && isFinite(self.timeout)) { - timeout = self.timeout - } - } - - self.req.on('response', self.onRequestResponse.bind(self)) - self.req.on('error', self.onRequestError.bind(self)) - self.req.on('drain', function () { - self.emit('drain') - }) - - self.req.on('socket', function (socket) { - // `._connecting` was the old property which was made public in node v6.1.0 - var isConnecting = socket._connecting || socket.connecting - if (self.timing) { - self.timings.socket = now() - self.startTimeNow - - if (isConnecting) { - var onLookupTiming = function () { - self.timings.lookup = now() - self.startTimeNow - } - - var onConnectTiming = function () { - self.timings.connect = now() - self.startTimeNow - } - - socket.once('lookup', onLookupTiming) - socket.once('connect', onConnectTiming) - - // clean up timing event listeners if needed on error - self.req.once('error', function () { - socket.removeListener('lookup', onLookupTiming) - socket.removeListener('connect', onConnectTiming) - }) - } - } - - var setReqTimeout = function () { - // This timeout sets the amount of time to wait *between* bytes sent - // from the server once connected. - // - // In particular, it's useful for erroring if the server fails to send - // data halfway through streaming a response. - self.req.setTimeout(timeout, function () { - if (self.req) { - self.abort() - var e = new Error('ESOCKETTIMEDOUT') - e.code = 'ESOCKETTIMEDOUT' - e.connect = false - self.emit('error', e) - } - }) - } - if (timeout !== undefined) { - // Only start the connection timer if we're actually connecting a new - // socket, otherwise if we're already connected (because this is a - // keep-alive connection) do not bother. This is important since we won't - // get a 'connect' event for an already connected socket. - if (isConnecting) { - var onReqSockConnect = function () { - socket.removeListener('connect', onReqSockConnect) - self.clearTimeout() - setReqTimeout() - } - - socket.on('connect', onReqSockConnect) - - self.req.on('error', function (err) { // eslint-disable-line handle-callback-err - socket.removeListener('connect', onReqSockConnect) - }) - - // Set a timeout in memory - this block will throw if the server takes more - // than `timeout` to write the HTTP status and headers (corresponding to - // the on('response') event on the client). NB: this measures wall-clock - // time, not the time between bytes sent by the server. - self.timeoutTimer = setTimeout(function () { - socket.removeListener('connect', onReqSockConnect) - self.abort() - var e = new Error('ETIMEDOUT') - e.code = 'ETIMEDOUT' - e.connect = true - self.emit('error', e) - }, timeout) - } else { - // We're already connected - setReqTimeout() - } - } - self.emit('socket', socket) - }) - - self.emit('request', self.req) -} - -Request.prototype.onRequestError = function (error) { - var self = this - if (self._aborted) { - return - } - if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' && - self.agent.addRequestNoreuse) { - self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) } - self.start() - self.req.end() - return - } - self.clearTimeout() - self.emit('error', error) -} - -Request.prototype.onRequestResponse = function (response) { - var self = this - - if (self.timing) { - self.timings.response = now() - self.startTimeNow - } - - debug('onRequestResponse', self.uri.href, response.statusCode, response.headers) - response.on('end', function () { - if (self.timing) { - self.timings.end = now() - self.startTimeNow - response.timingStart = self.startTime - - // fill in the blanks for any periods that didn't trigger, such as - // no lookup or connect due to keep alive - if (!self.timings.socket) { - self.timings.socket = 0 - } - if (!self.timings.lookup) { - self.timings.lookup = self.timings.socket - } - if (!self.timings.connect) { - self.timings.connect = self.timings.lookup - } - if (!self.timings.response) { - self.timings.response = self.timings.connect - } - - debug('elapsed time', self.timings.end) - - // elapsedTime includes all redirects - self.elapsedTime += Math.round(self.timings.end) - - // NOTE: elapsedTime is deprecated in favor of .timings - response.elapsedTime = self.elapsedTime - - // timings is just for the final fetch - response.timings = self.timings - - // pre-calculate phase timings as well - response.timingPhases = { - wait: self.timings.socket, - dns: self.timings.lookup - self.timings.socket, - tcp: self.timings.connect - self.timings.lookup, - firstByte: self.timings.response - self.timings.connect, - download: self.timings.end - self.timings.response, - total: self.timings.end - } - } - debug('response end', self.uri.href, response.statusCode, response.headers) - }) - - if (self._aborted) { - debug('aborted', self.uri.href) - response.resume() - return - } - - self.response = response - response.request = self - response.toJSON = responseToJSON - - // XXX This is different on 0.10, because SSL is strict by default - if (self.httpModule === https && - self.strictSSL && (!response.hasOwnProperty('socket') || - !response.socket.authorized)) { - debug('strict ssl error', self.uri.href) - var sslErr = response.hasOwnProperty('socket') ? response.socket.authorizationError : self.uri.href + ' does not support SSL' - self.emit('error', new Error('SSL Error: ' + sslErr)) - return - } - - // Save the original host before any redirect (if it changes, we need to - // remove any authorization headers). Also remember the case of the header - // name because lots of broken servers expect Host instead of host and we - // want the caller to be able to specify this. - self.originalHost = self.getHeader('host') - if (!self.originalHostHeaderName) { - self.originalHostHeaderName = self.hasHeader('host') - } - if (self.setHost) { - self.removeHeader('host') - } - self.clearTimeout() - - var targetCookieJar = (self._jar && self._jar.setCookie) ? self._jar : globalCookieJar - var addCookie = function (cookie) { - // set the cookie if it's domain in the href's domain. - try { - targetCookieJar.setCookie(cookie, self.uri.href, {ignoreError: true}) - } catch (e) { - self.emit('error', e) - } - } - - response.caseless = caseless(response.headers) - - if (response.caseless.has('set-cookie') && (!self._disableCookies)) { - var headerName = response.caseless.has('set-cookie') - if (Array.isArray(response.headers[headerName])) { - response.headers[headerName].forEach(addCookie) - } else { - addCookie(response.headers[headerName]) - } - } - - if (self._redirect.onResponse(response)) { - return // Ignore the rest of the response - } else { - // Be a good stream and emit end when the response is finished. - // Hack to emit end on close because of a core bug that never fires end - response.on('close', function () { - if (!self._ended) { - self.response.emit('end') - } - }) - - response.once('end', function () { - self._ended = true - }) - - var noBody = function (code) { - return ( - self.method === 'HEAD' || - // Informational - (code >= 100 && code < 200) || - // No Content - code === 204 || - // Not Modified - code === 304 - ) - } - - var responseContent - if (self.gzip && !noBody(response.statusCode)) { - var contentEncoding = response.headers['content-encoding'] || 'identity' - contentEncoding = contentEncoding.trim().toLowerCase() - - // Be more lenient with decoding compressed responses, since (very rarely) - // servers send slightly invalid gzip responses that are still accepted - // by common browsers. - // Always using Z_SYNC_FLUSH is what cURL does. - var zlibOptions = { - flush: zlib.Z_SYNC_FLUSH, - finishFlush: zlib.Z_SYNC_FLUSH - } - - if (contentEncoding === 'gzip') { - responseContent = zlib.createGunzip(zlibOptions) - response.pipe(responseContent) - } else if (contentEncoding === 'deflate') { - responseContent = zlib.createInflate(zlibOptions) - response.pipe(responseContent) - } else { - // Since previous versions didn't check for Content-Encoding header, - // ignore any invalid values to preserve backwards-compatibility - if (contentEncoding !== 'identity') { - debug('ignoring unrecognized Content-Encoding ' + contentEncoding) - } - responseContent = response - } - } else { - responseContent = response - } - - if (self.encoding) { - if (self.dests.length !== 0) { - console.error('Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.') - } else { - responseContent.setEncoding(self.encoding) - } - } - - if (self._paused) { - responseContent.pause() - } - - self.responseContent = responseContent - - self.emit('response', response) - - self.dests.forEach(function (dest) { - self.pipeDest(dest) - }) - - responseContent.on('data', function (chunk) { - if (self.timing && !self.responseStarted) { - self.responseStartTime = (new Date()).getTime() - - // NOTE: responseStartTime is deprecated in favor of .timings - response.responseStartTime = self.responseStartTime - } - self._destdata = true - self.emit('data', chunk) - }) - responseContent.once('end', function (chunk) { - self.emit('end', chunk) - }) - responseContent.on('error', function (error) { - self.emit('error', error) - }) - responseContent.on('close', function () { self.emit('close') }) - - if (self.callback) { - self.readResponseBody(response) - } else { // if no callback - self.on('end', function () { - if (self._aborted) { - debug('aborted', self.uri.href) - return - } - self.emit('complete', response) - }) - } - } - debug('finish init function', self.uri.href) -} - -Request.prototype.readResponseBody = function (response) { - var self = this - debug("reading response's body") - var buffers = [] - var bufferLength = 0 - var strings = [] - - self.on('data', function (chunk) { - if (!Buffer.isBuffer(chunk)) { - strings.push(chunk) - } else if (chunk.length) { - bufferLength += chunk.length - buffers.push(chunk) - } - }) - self.on('end', function () { - debug('end event', self.uri.href) - if (self._aborted) { - debug('aborted', self.uri.href) - // `buffer` is defined in the parent scope and used in a closure it exists for the life of the request. - // This can lead to leaky behavior if the user retains a reference to the request object. - buffers = [] - bufferLength = 0 - return - } - - if (bufferLength) { - debug('has body', self.uri.href, bufferLength) - response.body = Buffer.concat(buffers, bufferLength) - if (self.encoding !== null) { - response.body = response.body.toString(self.encoding) - } - // `buffer` is defined in the parent scope and used in a closure it exists for the life of the Request. - // This can lead to leaky behavior if the user retains a reference to the request object. - buffers = [] - bufferLength = 0 - } else if (strings.length) { - // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation. - // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse(). - if (self.encoding === 'utf8' && strings[0].length > 0 && strings[0][0] === '\uFEFF') { - strings[0] = strings[0].substring(1) - } - response.body = strings.join('') - } - - if (self._json) { - try { - response.body = JSON.parse(response.body, self._jsonReviver) - } catch (e) { - debug('invalid JSON received', self.uri.href) - } - } - debug('emitting complete', self.uri.href) - if (typeof response.body === 'undefined' && !self._json) { - response.body = self.encoding === null ? Buffer.alloc(0) : '' - } - self.emit('complete', response, response.body) - }) -} - -Request.prototype.abort = function () { - var self = this - self._aborted = true - - if (self.req) { - self.req.abort() - } else if (self.response) { - self.response.destroy() - } - - self.clearTimeout() - self.emit('abort') -} - -Request.prototype.pipeDest = function (dest) { - var self = this - var response = self.response - // Called after the response is received - if (dest.headers && !dest.headersSent) { - if (response.caseless.has('content-type')) { - var ctname = response.caseless.has('content-type') - if (dest.setHeader) { - dest.setHeader(ctname, response.headers[ctname]) - } else { - dest.headers[ctname] = response.headers[ctname] - } - } - - if (response.caseless.has('content-length')) { - var clname = response.caseless.has('content-length') - if (dest.setHeader) { - dest.setHeader(clname, response.headers[clname]) - } else { - dest.headers[clname] = response.headers[clname] - } - } - } - if (dest.setHeader && !dest.headersSent) { - for (var i in response.headers) { - // If the response content is being decoded, the Content-Encoding header - // of the response doesn't represent the piped content, so don't pass it. - if (!self.gzip || i !== 'content-encoding') { - dest.setHeader(i, response.headers[i]) - } - } - dest.statusCode = response.statusCode - } - if (self.pipefilter) { - self.pipefilter(response, dest) - } -} - -Request.prototype.qs = function (q, clobber) { - var self = this - var base - if (!clobber && self.uri.query) { - base = self._qs.parse(self.uri.query) - } else { - base = {} - } - - for (var i in q) { - base[i] = q[i] - } - - var qs = self._qs.stringify(base) - - if (qs === '') { - return self - } - - self.uri = url.parse(self.uri.href.split('?')[0] + '?' + qs) - self.url = self.uri - self.path = self.uri.path - - if (self.uri.host === 'unix') { - self.enableUnixSocket() - } - - return self -} -Request.prototype.form = function (form) { - var self = this - if (form) { - if (!/^application\/x-www-form-urlencoded\b/.test(self.getHeader('content-type'))) { - self.setHeader('content-type', 'application/x-www-form-urlencoded') - } - self.body = (typeof form === 'string') - ? self._qs.rfc3986(form.toString('utf8')) - : self._qs.stringify(form).toString('utf8') - return self - } - // create form-data object - self._form = new FormData() - self._form.on('error', function (err) { - err.message = 'form-data: ' + err.message - self.emit('error', err) - self.abort() - }) - return self._form -} -Request.prototype.multipart = function (multipart) { - var self = this - - self._multipart.onRequest(multipart) - - if (!self._multipart.chunked) { - self.body = self._multipart.body - } - - return self -} -Request.prototype.json = function (val) { - var self = this - - if (!self.hasHeader('accept')) { - self.setHeader('accept', 'application/json') - } - - if (typeof self.jsonReplacer === 'function') { - self._jsonReplacer = self.jsonReplacer - } - - self._json = true - if (typeof val === 'boolean') { - if (self.body !== undefined) { - if (!/^application\/x-www-form-urlencoded\b/.test(self.getHeader('content-type'))) { - self.body = safeStringify(self.body, self._jsonReplacer) - } else { - self.body = self._qs.rfc3986(self.body) - } - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', 'application/json') - } - } - } else { - self.body = safeStringify(val, self._jsonReplacer) - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', 'application/json') - } - } - - if (typeof self.jsonReviver === 'function') { - self._jsonReviver = self.jsonReviver - } - - return self -} -Request.prototype.getHeader = function (name, headers) { - var self = this - var result, re, match - if (!headers) { - headers = self.headers - } - Object.keys(headers).forEach(function (key) { - if (key.length !== name.length) { - return - } - re = new RegExp(name, 'i') - match = key.match(re) - if (match) { - result = headers[key] - } - }) - return result -} -Request.prototype.enableUnixSocket = function () { - // Get the socket & request paths from the URL - var unixParts = this.uri.path.split(':') - var host = unixParts[0] - var path = unixParts[1] - // Apply unix properties to request - this.socketPath = host - this.uri.pathname = path - this.uri.path = path - this.uri.host = host - this.uri.hostname = host - this.uri.isUnix = true -} - -Request.prototype.auth = function (user, pass, sendImmediately, bearer) { - var self = this - - self._auth.onRequest(user, pass, sendImmediately, bearer) - - return self -} -Request.prototype.aws = function (opts, now) { - var self = this - - if (!now) { - self._aws = opts - return self - } - - if (opts.sign_version === 4 || opts.sign_version === '4') { - // use aws4 - var options = { - host: self.uri.host, - path: self.uri.path, - method: self.method, - headers: self.headers, - body: self.body - } - if (opts.service) { - options.service = opts.service - } - var signRes = aws4.sign(options, { - accessKeyId: opts.key, - secretAccessKey: opts.secret, - sessionToken: opts.session - }) - self.setHeader('authorization', signRes.headers.Authorization) - self.setHeader('x-amz-date', signRes.headers['X-Amz-Date']) - if (signRes.headers['X-Amz-Security-Token']) { - self.setHeader('x-amz-security-token', signRes.headers['X-Amz-Security-Token']) - } - } else { - // default: use aws-sign2 - var date = new Date() - self.setHeader('date', date.toUTCString()) - var auth = { - key: opts.key, - secret: opts.secret, - verb: self.method.toUpperCase(), - date: date, - contentType: self.getHeader('content-type') || '', - md5: self.getHeader('content-md5') || '', - amazonHeaders: aws2.canonicalizeHeaders(self.headers) - } - var path = self.uri.path - if (opts.bucket && path) { - auth.resource = '/' + opts.bucket + path - } else if (opts.bucket && !path) { - auth.resource = '/' + opts.bucket - } else if (!opts.bucket && path) { - auth.resource = path - } else if (!opts.bucket && !path) { - auth.resource = '/' - } - auth.resource = aws2.canonicalizeResource(auth.resource) - self.setHeader('authorization', aws2.authorization(auth)) - } - - return self -} -Request.prototype.httpSignature = function (opts) { - var self = this - httpSignature.signRequest({ - getHeader: function (header) { - return self.getHeader(header, self.headers) - }, - setHeader: function (header, value) { - self.setHeader(header, value) - }, - method: self.method, - path: self.path - }, opts) - debug('httpSignature authorization', self.getHeader('authorization')) - - return self -} -Request.prototype.hawk = function (opts) { - var self = this - self.setHeader('Authorization', hawk.header(self.uri, self.method, opts)) -} -Request.prototype.oauth = function (_oauth) { - var self = this - - self._oauth.onRequest(_oauth) - - return self -} - -Request.prototype.jar = function (jar) { - var self = this - var cookies - - if (self._redirect.redirectsFollowed === 0) { - self.originalCookieHeader = self.getHeader('cookie') - } - - if (!jar) { - // disable cookies - cookies = false - self._disableCookies = true - } else { - var targetCookieJar = jar.getCookieString ? jar : globalCookieJar - var urihref = self.uri.href - // fetch cookie in the Specified host - if (targetCookieJar) { - cookies = targetCookieJar.getCookieString(urihref) - } - } - - // if need cookie and cookie is not empty - if (cookies && cookies.length) { - if (self.originalCookieHeader) { - // Don't overwrite existing Cookie header - self.setHeader('cookie', self.originalCookieHeader + '; ' + cookies) - } else { - self.setHeader('cookie', cookies) - } - } - self._jar = jar - return self -} - -// Stream API -Request.prototype.pipe = function (dest, opts) { - var self = this - - if (self.response) { - if (self._destdata) { - self.emit('error', new Error('You cannot pipe after data has been emitted from the response.')) - } else if (self._ended) { - self.emit('error', new Error('You cannot pipe after the response has been ended.')) - } else { - stream.Stream.prototype.pipe.call(self, dest, opts) - self.pipeDest(dest) - return dest - } - } else { - self.dests.push(dest) - stream.Stream.prototype.pipe.call(self, dest, opts) - return dest - } -} -Request.prototype.write = function () { - var self = this - if (self._aborted) { return } - - if (!self._started) { - self.start() - } - if (self.req) { - return self.req.write.apply(self.req, arguments) - } -} -Request.prototype.end = function (chunk) { - var self = this - if (self._aborted) { return } - - if (chunk) { - self.write(chunk) - } - if (!self._started) { - self.start() - } - if (self.req) { - self.req.end() - } -} -Request.prototype.pause = function () { - var self = this - if (!self.responseContent) { - self._paused = true - } else { - self.responseContent.pause.apply(self.responseContent, arguments) - } -} -Request.prototype.resume = function () { - var self = this - if (!self.responseContent) { - self._paused = false - } else { - self.responseContent.resume.apply(self.responseContent, arguments) - } -} -Request.prototype.destroy = function () { - var self = this - this.clearTimeout() - if (!self._ended) { - self.end() - } else if (self.response) { - self.response.destroy() - } -} - -Request.prototype.clearTimeout = function () { - if (this.timeoutTimer) { - clearTimeout(this.timeoutTimer) - this.timeoutTimer = null - } -} - -Request.defaultProxyHeaderWhiteList = - Tunnel.defaultProxyHeaderWhiteList.slice() - -Request.defaultProxyHeaderExclusiveList = - Tunnel.defaultProxyHeaderExclusiveList.slice() - -// Exports - -Request.prototype.toJSON = requestToJSON -module.exports = Request diff --git a/node_modules/safe-buffer/LICENSE b/node_modules/safe-buffer/LICENSE deleted file mode 100644 index 0c068ce..0000000 --- a/node_modules/safe-buffer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Feross Aboukhadijeh - -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. diff --git a/node_modules/safe-buffer/README.md b/node_modules/safe-buffer/README.md deleted file mode 100644 index e9a81af..0000000 --- a/node_modules/safe-buffer/README.md +++ /dev/null @@ -1,584 +0,0 @@ -# safe-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url] - -[travis-image]: https://img.shields.io/travis/feross/safe-buffer/master.svg -[travis-url]: https://travis-ci.org/feross/safe-buffer -[npm-image]: https://img.shields.io/npm/v/safe-buffer.svg -[npm-url]: https://npmjs.org/package/safe-buffer -[downloads-image]: https://img.shields.io/npm/dm/safe-buffer.svg -[downloads-url]: https://npmjs.org/package/safe-buffer -[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg -[standard-url]: https://standardjs.com - -#### Safer Node.js Buffer API - -**Use the new Node.js Buffer APIs (`Buffer.from`, `Buffer.alloc`, -`Buffer.allocUnsafe`, `Buffer.allocUnsafeSlow`) in all versions of Node.js.** - -**Uses the built-in implementation when available.** - -## install - -``` -npm install safe-buffer -``` - -## usage - -The goal of this package is to provide a safe replacement for the node.js `Buffer`. - -It's a drop-in replacement for `Buffer`. You can use it by adding one `require` line to -the top of your node.js modules: - -```js -var Buffer = require('safe-buffer').Buffer - -// Existing buffer code will continue to work without issues: - -new Buffer('hey', 'utf8') -new Buffer([1, 2, 3], 'utf8') -new Buffer(obj) -new Buffer(16) // create an uninitialized buffer (potentially unsafe) - -// But you can use these new explicit APIs to make clear what you want: - -Buffer.from('hey', 'utf8') // convert from many types to a Buffer -Buffer.alloc(16) // create a zero-filled buffer (safe) -Buffer.allocUnsafe(16) // create an uninitialized buffer (potentially unsafe) -``` - -## api - -### Class Method: Buffer.from(array) - - -* `array` {Array} - -Allocates a new `Buffer` using an `array` of octets. - -```js -const buf = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]); - // creates a new Buffer containing ASCII bytes - // ['b','u','f','f','e','r'] -``` - -A `TypeError` will be thrown if `array` is not an `Array`. - -### Class Method: Buffer.from(arrayBuffer[, byteOffset[, length]]) - - -* `arrayBuffer` {ArrayBuffer} The `.buffer` property of a `TypedArray` or - a `new ArrayBuffer()` -* `byteOffset` {Number} Default: `0` -* `length` {Number} Default: `arrayBuffer.length - byteOffset` - -When passed a reference to the `.buffer` property of a `TypedArray` instance, -the newly created `Buffer` will share the same allocated memory as the -TypedArray. - -```js -const arr = new Uint16Array(2); -arr[0] = 5000; -arr[1] = 4000; - -const buf = Buffer.from(arr.buffer); // shares the memory with arr; - -console.log(buf); - // Prints: - -// changing the TypedArray changes the Buffer also -arr[1] = 6000; - -console.log(buf); - // Prints: -``` - -The optional `byteOffset` and `length` arguments specify a memory range within -the `arrayBuffer` that will be shared by the `Buffer`. - -```js -const ab = new ArrayBuffer(10); -const buf = Buffer.from(ab, 0, 2); -console.log(buf.length); - // Prints: 2 -``` - -A `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer`. - -### Class Method: Buffer.from(buffer) - - -* `buffer` {Buffer} - -Copies the passed `buffer` data onto a new `Buffer` instance. - -```js -const buf1 = Buffer.from('buffer'); -const buf2 = Buffer.from(buf1); - -buf1[0] = 0x61; -console.log(buf1.toString()); - // 'auffer' -console.log(buf2.toString()); - // 'buffer' (copy is not changed) -``` - -A `TypeError` will be thrown if `buffer` is not a `Buffer`. - -### Class Method: Buffer.from(str[, encoding]) - - -* `str` {String} String to encode. -* `encoding` {String} Encoding to use, Default: `'utf8'` - -Creates a new `Buffer` containing the given JavaScript string `str`. If -provided, the `encoding` parameter identifies the character encoding. -If not provided, `encoding` defaults to `'utf8'`. - -```js -const buf1 = Buffer.from('this is a tést'); -console.log(buf1.toString()); - // prints: this is a tést -console.log(buf1.toString('ascii')); - // prints: this is a tC)st - -const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex'); -console.log(buf2.toString()); - // prints: this is a tést -``` - -A `TypeError` will be thrown if `str` is not a string. - -### Class Method: Buffer.alloc(size[, fill[, encoding]]) - - -* `size` {Number} -* `fill` {Value} Default: `undefined` -* `encoding` {String} Default: `utf8` - -Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the -`Buffer` will be *zero-filled*. - -```js -const buf = Buffer.alloc(5); -console.log(buf); - // -``` - -The `size` must be less than or equal to the value of -`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is -`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will -be created if a `size` less than or equal to 0 is specified. - -If `fill` is specified, the allocated `Buffer` will be initialized by calling -`buf.fill(fill)`. See [`buf.fill()`][] for more information. - -```js -const buf = Buffer.alloc(5, 'a'); -console.log(buf); - // -``` - -If both `fill` and `encoding` are specified, the allocated `Buffer` will be -initialized by calling `buf.fill(fill, encoding)`. For example: - -```js -const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64'); -console.log(buf); - // -``` - -Calling `Buffer.alloc(size)` can be significantly slower than the alternative -`Buffer.allocUnsafe(size)` but ensures that the newly created `Buffer` instance -contents will *never contain sensitive data*. - -A `TypeError` will be thrown if `size` is not a number. - -### Class Method: Buffer.allocUnsafe(size) - - -* `size` {Number} - -Allocates a new *non-zero-filled* `Buffer` of `size` bytes. The `size` must -be less than or equal to the value of `require('buffer').kMaxLength` (on 64-bit -architectures, `kMaxLength` is `(2^31)-1`). Otherwise, a [`RangeError`][] is -thrown. A zero-length Buffer will be created if a `size` less than or equal to -0 is specified. - -The underlying memory for `Buffer` instances created in this way is *not -initialized*. The contents of the newly created `Buffer` are unknown and -*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such -`Buffer` instances to zeroes. - -```js -const buf = Buffer.allocUnsafe(5); -console.log(buf); - // - // (octets will be different, every time) -buf.fill(0); -console.log(buf); - // -``` - -A `TypeError` will be thrown if `size` is not a number. - -Note that the `Buffer` module pre-allocates an internal `Buffer` instance of -size `Buffer.poolSize` that is used as a pool for the fast allocation of new -`Buffer` instances created using `Buffer.allocUnsafe(size)` (and the deprecated -`new Buffer(size)` constructor) only when `size` is less than or equal to -`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). The default -value of `Buffer.poolSize` is `8192` but can be modified. - -Use of this pre-allocated internal memory pool is a key difference between -calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`. -Specifically, `Buffer.alloc(size, fill)` will *never* use the internal Buffer -pool, while `Buffer.allocUnsafe(size).fill(fill)` *will* use the internal -Buffer pool if `size` is less than or equal to half `Buffer.poolSize`. The -difference is subtle but can be important when an application requires the -additional performance that `Buffer.allocUnsafe(size)` provides. - -### Class Method: Buffer.allocUnsafeSlow(size) - - -* `size` {Number} - -Allocates a new *non-zero-filled* and non-pooled `Buffer` of `size` bytes. The -`size` must be less than or equal to the value of -`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is -`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will -be created if a `size` less than or equal to 0 is specified. - -The underlying memory for `Buffer` instances created in this way is *not -initialized*. The contents of the newly created `Buffer` are unknown and -*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such -`Buffer` instances to zeroes. - -When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances, -allocations under 4KB are, by default, sliced from a single pre-allocated -`Buffer`. This allows applications to avoid the garbage collection overhead of -creating many individually allocated Buffers. This approach improves both -performance and memory usage by eliminating the need to track and cleanup as -many `Persistent` objects. - -However, in the case where a developer may need to retain a small chunk of -memory from a pool for an indeterminate amount of time, it may be appropriate -to create an un-pooled Buffer instance using `Buffer.allocUnsafeSlow()` then -copy out the relevant bits. - -```js -// need to keep around a few small chunks of memory -const store = []; - -socket.on('readable', () => { - const data = socket.read(); - // allocate for retained data - const sb = Buffer.allocUnsafeSlow(10); - // copy the data into the new allocation - data.copy(sb, 0, 0, 10); - store.push(sb); -}); -``` - -Use of `Buffer.allocUnsafeSlow()` should be used only as a last resort *after* -a developer has observed undue memory retention in their applications. - -A `TypeError` will be thrown if `size` is not a number. - -### All the Rest - -The rest of the `Buffer` API is exactly the same as in node.js. -[See the docs](https://nodejs.org/api/buffer.html). - - -## Related links - -- [Node.js issue: Buffer(number) is unsafe](https://github.com/nodejs/node/issues/4660) -- [Node.js Enhancement Proposal: Buffer.from/Buffer.alloc/Buffer.zalloc/Buffer() soft-deprecate](https://github.com/nodejs/node-eps/pull/4) - -## Why is `Buffer` unsafe? - -Today, the node.js `Buffer` constructor is overloaded to handle many different argument -types like `String`, `Array`, `Object`, `TypedArrayView` (`Uint8Array`, etc.), -`ArrayBuffer`, and also `Number`. - -The API is optimized for convenience: you can throw any type at it, and it will try to do -what you want. - -Because the Buffer constructor is so powerful, you often see code like this: - -```js -// Convert UTF-8 strings to hex -function toHex (str) { - return new Buffer(str).toString('hex') -} -``` - -***But what happens if `toHex` is called with a `Number` argument?*** - -### Remote Memory Disclosure - -If an attacker can make your program call the `Buffer` constructor with a `Number` -argument, then they can make it allocate uninitialized memory from the node.js process. -This could potentially disclose TLS private keys, user data, or database passwords. - -When the `Buffer` constructor is passed a `Number` argument, it returns an -**UNINITIALIZED** block of memory of the specified `size`. When you create a `Buffer` like -this, you **MUST** overwrite the contents before returning it to the user. - -From the [node.js docs](https://nodejs.org/api/buffer.html#buffer_new_buffer_size): - -> `new Buffer(size)` -> -> - `size` Number -> -> The underlying memory for `Buffer` instances created in this way is not initialized. -> **The contents of a newly created `Buffer` are unknown and could contain sensitive -> data.** Use `buf.fill(0)` to initialize a Buffer to zeroes. - -(Emphasis our own.) - -Whenever the programmer intended to create an uninitialized `Buffer` you often see code -like this: - -```js -var buf = new Buffer(16) - -// Immediately overwrite the uninitialized buffer with data from another buffer -for (var i = 0; i < buf.length; i++) { - buf[i] = otherBuf[i] -} -``` - - -### Would this ever be a problem in real code? - -Yes. It's surprisingly common to forget to check the type of your variables in a -dynamically-typed language like JavaScript. - -Usually the consequences of assuming the wrong type is that your program crashes with an -uncaught exception. But the failure mode for forgetting to check the type of arguments to -the `Buffer` constructor is more catastrophic. - -Here's an example of a vulnerable service that takes a JSON payload and converts it to -hex: - -```js -// Take a JSON payload {str: "some string"} and convert it to hex -var server = http.createServer(function (req, res) { - var data = '' - req.setEncoding('utf8') - req.on('data', function (chunk) { - data += chunk - }) - req.on('end', function () { - var body = JSON.parse(data) - res.end(new Buffer(body.str).toString('hex')) - }) -}) - -server.listen(8080) -``` - -In this example, an http client just has to send: - -```json -{ - "str": 1000 -} -``` - -and it will get back 1,000 bytes of uninitialized memory from the server. - -This is a very serious bug. It's similar in severity to the -[the Heartbleed bug](http://heartbleed.com/) that allowed disclosure of OpenSSL process -memory by remote attackers. - - -### Which real-world packages were vulnerable? - -#### [`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht) - -[Mathias Buus](https://github.com/mafintosh) and I -([Feross Aboukhadijeh](http://feross.org/)) found this issue in one of our own packages, -[`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht). The bug would allow -anyone on the internet to send a series of messages to a user of `bittorrent-dht` and get -them to reveal 20 bytes at a time of uninitialized memory from the node.js process. - -Here's -[the commit](https://github.com/feross/bittorrent-dht/commit/6c7da04025d5633699800a99ec3fbadf70ad35b8) -that fixed it. We released a new fixed version, created a -[Node Security Project disclosure](https://nodesecurity.io/advisories/68), and deprecated all -vulnerable versions on npm so users will get a warning to upgrade to a newer version. - -#### [`ws`](https://www.npmjs.com/package/ws) - -That got us wondering if there were other vulnerable packages. Sure enough, within a short -period of time, we found the same issue in [`ws`](https://www.npmjs.com/package/ws), the -most popular WebSocket implementation in node.js. - -If certain APIs were called with `Number` parameters instead of `String` or `Buffer` as -expected, then uninitialized server memory would be disclosed to the remote peer. - -These were the vulnerable methods: - -```js -socket.send(number) -socket.ping(number) -socket.pong(number) -``` - -Here's a vulnerable socket server with some echo functionality: - -```js -server.on('connection', function (socket) { - socket.on('message', function (message) { - message = JSON.parse(message) - if (message.type === 'echo') { - socket.send(message.data) // send back the user's message - } - }) -}) -``` - -`socket.send(number)` called on the server, will disclose server memory. - -Here's [the release](https://github.com/websockets/ws/releases/tag/1.0.1) where the issue -was fixed, with a more detailed explanation. Props to -[Arnout Kazemier](https://github.com/3rd-Eden) for the quick fix. Here's the -[Node Security Project disclosure](https://nodesecurity.io/advisories/67). - - -### What's the solution? - -It's important that node.js offers a fast way to get memory otherwise performance-critical -applications would needlessly get a lot slower. - -But we need a better way to *signal our intent* as programmers. **When we want -uninitialized memory, we should request it explicitly.** - -Sensitive functionality should not be packed into a developer-friendly API that loosely -accepts many different types. This type of API encourages the lazy practice of passing -variables in without checking the type very carefully. - -#### A new API: `Buffer.allocUnsafe(number)` - -The functionality of creating buffers with uninitialized memory should be part of another -API. We propose `Buffer.allocUnsafe(number)`. This way, it's not part of an API that -frequently gets user input of all sorts of different types passed into it. - -```js -var buf = Buffer.allocUnsafe(16) // careful, uninitialized memory! - -// Immediately overwrite the uninitialized buffer with data from another buffer -for (var i = 0; i < buf.length; i++) { - buf[i] = otherBuf[i] -} -``` - - -### How do we fix node.js core? - -We sent [a PR to node.js core](https://github.com/nodejs/node/pull/4514) (merged as -`semver-major`) which defends against one case: - -```js -var str = 16 -new Buffer(str, 'utf8') -``` - -In this situation, it's implied that the programmer intended the first argument to be a -string, since they passed an encoding as a second argument. Today, node.js will allocate -uninitialized memory in the case of `new Buffer(number, encoding)`, which is probably not -what the programmer intended. - -But this is only a partial solution, since if the programmer does `new Buffer(variable)` -(without an `encoding` parameter) there's no way to know what they intended. If `variable` -is sometimes a number, then uninitialized memory will sometimes be returned. - -### What's the real long-term fix? - -We could deprecate and remove `new Buffer(number)` and use `Buffer.allocUnsafe(number)` when -we need uninitialized memory. But that would break 1000s of packages. - -~~We believe the best solution is to:~~ - -~~1. Change `new Buffer(number)` to return safe, zeroed-out memory~~ - -~~2. Create a new API for creating uninitialized Buffers. We propose: `Buffer.allocUnsafe(number)`~~ - -#### Update - -We now support adding three new APIs: - -- `Buffer.from(value)` - convert from any type to a buffer -- `Buffer.alloc(size)` - create a zero-filled buffer -- `Buffer.allocUnsafe(size)` - create an uninitialized buffer with given size - -This solves the core problem that affected `ws` and `bittorrent-dht` which is -`Buffer(variable)` getting tricked into taking a number argument. - -This way, existing code continues working and the impact on the npm ecosystem will be -minimal. Over time, npm maintainers can migrate performance-critical code to use -`Buffer.allocUnsafe(number)` instead of `new Buffer(number)`. - - -### Conclusion - -We think there's a serious design issue with the `Buffer` API as it exists today. It -promotes insecure software by putting high-risk functionality into a convenient API -with friendly "developer ergonomics". - -This wasn't merely a theoretical exercise because we found the issue in some of the -most popular npm packages. - -Fortunately, there's an easy fix that can be applied today. Use `safe-buffer` in place of -`buffer`. - -```js -var Buffer = require('safe-buffer').Buffer -``` - -Eventually, we hope that node.js core can switch to this new, safer behavior. We believe -the impact on the ecosystem would be minimal since it's not a breaking change. -Well-maintained, popular packages would be updated to use `Buffer.alloc` quickly, while -older, insecure packages would magically become safe from this attack vector. - - -## links - -- [Node.js PR: buffer: throw if both length and enc are passed](https://github.com/nodejs/node/pull/4514) -- [Node Security Project disclosure for `ws`](https://nodesecurity.io/advisories/67) -- [Node Security Project disclosure for`bittorrent-dht`](https://nodesecurity.io/advisories/68) - - -## credit - -The original issues in `bittorrent-dht` -([disclosure](https://nodesecurity.io/advisories/68)) and -`ws` ([disclosure](https://nodesecurity.io/advisories/67)) were discovered by -[Mathias Buus](https://github.com/mafintosh) and -[Feross Aboukhadijeh](http://feross.org/). - -Thanks to [Adam Baldwin](https://github.com/evilpacket) for helping disclose these issues -and for his work running the [Node Security Project](https://nodesecurity.io/). - -Thanks to [John Hiesey](https://github.com/jhiesey) for proofreading this README and -auditing the code. - - -## license - -MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org) diff --git a/node_modules/safe-buffer/index.d.ts b/node_modules/safe-buffer/index.d.ts deleted file mode 100644 index e9fed80..0000000 --- a/node_modules/safe-buffer/index.d.ts +++ /dev/null @@ -1,187 +0,0 @@ -declare module "safe-buffer" { - export class Buffer { - length: number - write(string: string, offset?: number, length?: number, encoding?: string): number; - toString(encoding?: string, start?: number, end?: number): string; - toJSON(): { type: 'Buffer', data: any[] }; - equals(otherBuffer: Buffer): boolean; - compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; - copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; - slice(start?: number, end?: number): Buffer; - writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; - readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; - readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; - readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; - readUInt8(offset: number, noAssert?: boolean): number; - readUInt16LE(offset: number, noAssert?: boolean): number; - readUInt16BE(offset: number, noAssert?: boolean): number; - readUInt32LE(offset: number, noAssert?: boolean): number; - readUInt32BE(offset: number, noAssert?: boolean): number; - readInt8(offset: number, noAssert?: boolean): number; - readInt16LE(offset: number, noAssert?: boolean): number; - readInt16BE(offset: number, noAssert?: boolean): number; - readInt32LE(offset: number, noAssert?: boolean): number; - readInt32BE(offset: number, noAssert?: boolean): number; - readFloatLE(offset: number, noAssert?: boolean): number; - readFloatBE(offset: number, noAssert?: boolean): number; - readDoubleLE(offset: number, noAssert?: boolean): number; - readDoubleBE(offset: number, noAssert?: boolean): number; - swap16(): Buffer; - swap32(): Buffer; - swap64(): Buffer; - writeUInt8(value: number, offset: number, noAssert?: boolean): number; - writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; - writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; - writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; - writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; - writeInt8(value: number, offset: number, noAssert?: boolean): number; - writeInt16LE(value: number, offset: number, noAssert?: boolean): number; - writeInt16BE(value: number, offset: number, noAssert?: boolean): number; - writeInt32LE(value: number, offset: number, noAssert?: boolean): number; - writeInt32BE(value: number, offset: number, noAssert?: boolean): number; - writeFloatLE(value: number, offset: number, noAssert?: boolean): number; - writeFloatBE(value: number, offset: number, noAssert?: boolean): number; - writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; - writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; - fill(value: any, offset?: number, end?: number): this; - indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; - lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; - includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; - - /** - * Allocates a new buffer containing the given {str}. - * - * @param str String to store in buffer. - * @param encoding encoding to use, optional. Default is 'utf8' - */ - constructor (str: string, encoding?: string); - /** - * Allocates a new buffer of {size} octets. - * - * @param size count of octets to allocate. - */ - constructor (size: number); - /** - * Allocates a new buffer containing the given {array} of octets. - * - * @param array The octets to store. - */ - constructor (array: Uint8Array); - /** - * Produces a Buffer backed by the same allocated memory as - * the given {ArrayBuffer}. - * - * - * @param arrayBuffer The ArrayBuffer with which to share memory. - */ - constructor (arrayBuffer: ArrayBuffer); - /** - * Allocates a new buffer containing the given {array} of octets. - * - * @param array The octets to store. - */ - constructor (array: any[]); - /** - * Copies the passed {buffer} data onto a new {Buffer} instance. - * - * @param buffer The buffer to copy. - */ - constructor (buffer: Buffer); - prototype: Buffer; - /** - * Allocates a new Buffer using an {array} of octets. - * - * @param array - */ - static from(array: any[]): Buffer; - /** - * When passed a reference to the .buffer property of a TypedArray instance, - * the newly created Buffer will share the same allocated memory as the TypedArray. - * The optional {byteOffset} and {length} arguments specify a memory range - * within the {arrayBuffer} that will be shared by the Buffer. - * - * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer() - * @param byteOffset - * @param length - */ - static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; - /** - * Copies the passed {buffer} data onto a new Buffer instance. - * - * @param buffer - */ - static from(buffer: Buffer): Buffer; - /** - * Creates a new Buffer containing the given JavaScript string {str}. - * If provided, the {encoding} parameter identifies the character encoding. - * If not provided, {encoding} defaults to 'utf8'. - * - * @param str - */ - static from(str: string, encoding?: string): Buffer; - /** - * Returns true if {obj} is a Buffer - * - * @param obj object to test. - */ - static isBuffer(obj: any): obj is Buffer; - /** - * Returns true if {encoding} is a valid encoding argument. - * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' - * - * @param encoding string to test. - */ - static isEncoding(encoding: string): boolean; - /** - * Gives the actual byte length of a string. encoding defaults to 'utf8'. - * This is not the same as String.prototype.length since that returns the number of characters in a string. - * - * @param string string to test. - * @param encoding encoding used to evaluate (defaults to 'utf8') - */ - static byteLength(string: string, encoding?: string): number; - /** - * Returns a buffer which is the result of concatenating all the buffers in the list together. - * - * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer. - * If the list has exactly one item, then the first item of the list is returned. - * If the list has more than one item, then a new Buffer is created. - * - * @param list An array of Buffer objects to concatenate - * @param totalLength Total length of the buffers when concatenated. - * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. - */ - static concat(list: Buffer[], totalLength?: number): Buffer; - /** - * The same as buf1.compare(buf2). - */ - static compare(buf1: Buffer, buf2: Buffer): number; - /** - * Allocates a new buffer of {size} octets. - * - * @param size count of octets to allocate. - * @param fill if specified, buffer will be initialized by calling buf.fill(fill). - * If parameter is omitted, buffer will be filled with zeros. - * @param encoding encoding used for call to buf.fill while initalizing - */ - static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; - /** - * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents - * of the newly created Buffer are unknown and may contain sensitive data. - * - * @param size count of octets to allocate - */ - static allocUnsafe(size: number): Buffer; - /** - * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents - * of the newly created Buffer are unknown and may contain sensitive data. - * - * @param size count of octets to allocate - */ - static allocUnsafeSlow(size: number): Buffer; - } -} \ No newline at end of file diff --git a/node_modules/safe-buffer/index.js b/node_modules/safe-buffer/index.js deleted file mode 100644 index f8d3ec9..0000000 --- a/node_modules/safe-buffer/index.js +++ /dev/null @@ -1,65 +0,0 @@ -/*! safe-buffer. MIT License. Feross Aboukhadijeh */ -/* eslint-disable node/no-deprecated-api */ -var buffer = require('buffer') -var Buffer = buffer.Buffer - -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key] - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports) - exports.Buffer = SafeBuffer -} - -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.prototype = Object.create(Buffer.prototype) - -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer) - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size) - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - } else { - buf.fill(0) - } - return buf -} - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -} - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer.SlowBuffer(size) -} diff --git a/node_modules/safe-buffer/package.json b/node_modules/safe-buffer/package.json deleted file mode 100644 index 8471d3c..0000000 --- a/node_modules/safe-buffer/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_from": "safe-buffer@^5.1.2", - "_id": "safe-buffer@5.2.1", - "_inBundle": false, - "_integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "_location": "/safe-buffer", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "safe-buffer@^5.1.2", - "name": "safe-buffer", - "escapedName": "safe-buffer", - "rawSpec": "^5.1.2", - "saveSpec": null, - "fetchSpec": "^5.1.2" - }, - "_requiredBy": [ - "/request", - "/tunnel-agent" - ], - "_resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "_shasum": "1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "_spec": "safe-buffer@^5.1.2", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/request", - "author": { - "name": "Feross Aboukhadijeh", - "email": "feross@feross.org", - "url": "https://feross.org" - }, - "bugs": { - "url": "https://github.com/feross/safe-buffer/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Safer Node.js Buffer API", - "devDependencies": { - "standard": "*", - "tape": "^5.0.0" - }, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "homepage": "https://github.com/feross/safe-buffer", - "keywords": [ - "buffer", - "buffer allocate", - "node security", - "safe", - "safe-buffer", - "security", - "uninitialized" - ], - "license": "MIT", - "main": "index.js", - "name": "safe-buffer", - "repository": { - "type": "git", - "url": "git://github.com/feross/safe-buffer.git" - }, - "scripts": { - "test": "standard && tape test/*.js" - }, - "types": "index.d.ts", - "version": "5.2.1" -} diff --git a/node_modules/safer-buffer/LICENSE b/node_modules/safer-buffer/LICENSE deleted file mode 100644 index 4fe9e6f..0000000 --- a/node_modules/safer-buffer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 Nikita Skovoroda - -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. diff --git a/node_modules/safer-buffer/Porting-Buffer.md b/node_modules/safer-buffer/Porting-Buffer.md deleted file mode 100644 index 68d86ba..0000000 --- a/node_modules/safer-buffer/Porting-Buffer.md +++ /dev/null @@ -1,268 +0,0 @@ -# Porting to the Buffer.from/Buffer.alloc API - - -## Overview - -- [Variant 1: Drop support for Node.js ≤ 4.4.x and 5.0.0 — 5.9.x.](#variant-1) (*recommended*) -- [Variant 2: Use a polyfill](#variant-2) -- [Variant 3: manual detection, with safeguards](#variant-3) - -### Finding problematic bits of code using grep - -Just run `grep -nrE '[^a-zA-Z](Slow)?Buffer\s*\(' --exclude-dir node_modules`. - -It will find all the potentially unsafe places in your own code (with some considerably unlikely -exceptions). - -### Finding problematic bits of code using Node.js 8 - -If you’re using Node.js ≥ 8.0.0 (which is recommended), Node.js exposes multiple options that help with finding the relevant pieces of code: - -- `--trace-warnings` will make Node.js show a stack trace for this warning and other warnings that are printed by Node.js. -- `--trace-deprecation` does the same thing, but only for deprecation warnings. -- `--pending-deprecation` will show more types of deprecation warnings. In particular, it will show the `Buffer()` deprecation warning, even on Node.js 8. - -You can set these flags using an environment variable: - -```console -$ export NODE_OPTIONS='--trace-warnings --pending-deprecation' -$ cat example.js -'use strict'; -const foo = new Buffer('foo'); -$ node example.js -(node:7147) [DEP0005] DeprecationWarning: The Buffer() and new Buffer() constructors are not recommended for use due to security and usability concerns. Please use the new Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() construction methods instead. - at showFlaggedDeprecation (buffer.js:127:13) - at new Buffer (buffer.js:148:3) - at Object. (/path/to/example.js:2:13) - [... more stack trace lines ...] -``` - -### Finding problematic bits of code using linters - -Eslint rules [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) -or -[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) -also find calls to deprecated `Buffer()` API. Those rules are included in some pre-sets. - -There is a drawback, though, that it doesn't always -[work correctly](https://github.com/chalker/safer-buffer#why-not-safe-buffer) when `Buffer` is -overriden e.g. with a polyfill, so recommended is a combination of this and some other method -described above. - - -## Variant 1: Drop support for Node.js ≤ 4.4.x and 5.0.0 — 5.9.x. - -This is the recommended solution nowadays that would imply only minimal overhead. - -The Node.js 5.x release line has been unsupported since July 2016, and the Node.js 4.x release line reaches its End of Life in April 2018 (→ [Schedule](https://github.com/nodejs/Release#release-schedule)). This means that these versions of Node.js will *not* receive any updates, even in case of security issues, so using these release lines should be avoided, if at all possible. - -What you would do in this case is to convert all `new Buffer()` or `Buffer()` calls to use `Buffer.alloc()` or `Buffer.from()`, in the following way: - -- For `new Buffer(number)`, replace it with `Buffer.alloc(number)`. -- For `new Buffer(string)` (or `new Buffer(string, encoding)`), replace it with `Buffer.from(string)` (or `Buffer.from(string, encoding)`). -- For all other combinations of arguments (these are much rarer), also replace `new Buffer(...arguments)` with `Buffer.from(...arguments)`. - -Note that `Buffer.alloc()` is also _faster_ on the current Node.js versions than -`new Buffer(size).fill(0)`, which is what you would otherwise need to ensure zero-filling. - -Enabling eslint rule [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) -or -[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) -is recommended to avoid accidential unsafe Buffer API usage. - -There is also a [JSCodeshift codemod](https://github.com/joyeecheung/node-dep-codemod#dep005) -for automatically migrating Buffer constructors to `Buffer.alloc()` or `Buffer.from()`. -Note that it currently only works with cases where the arguments are literals or where the -constructor is invoked with two arguments. - -_If you currently support those older Node.js versions and dropping them would be a semver-major change -for you, or if you support older branches of your packages, consider using [Variant 2](#variant-2) -or [Variant 3](#variant-3) on older branches, so people using those older branches will also receive -the fix. That way, you will eradicate potential issues caused by unguarded Buffer API usage and -your users will not observe a runtime deprecation warning when running your code on Node.js 10._ - - -## Variant 2: Use a polyfill - -Utilize [safer-buffer](https://www.npmjs.com/package/safer-buffer) as a polyfill to support older -Node.js versions. - -You would take exacly the same steps as in [Variant 1](#variant-1), but with a polyfill -`const Buffer = require('safer-buffer').Buffer` in all files where you use the new `Buffer` api. - -Make sure that you do not use old `new Buffer` API — in any files where the line above is added, -using old `new Buffer()` API will _throw_. It will be easy to notice that in CI, though. - -Alternatively, you could use [buffer-from](https://www.npmjs.com/package/buffer-from) and/or -[buffer-alloc](https://www.npmjs.com/package/buffer-alloc) [ponyfills](https://ponyfill.com/) — -those are great, the only downsides being 4 deps in the tree and slightly more code changes to -migrate off them (as you would be using e.g. `Buffer.from` under a different name). If you need only -`Buffer.from` polyfilled — `buffer-from` alone which comes with no extra dependencies. - -_Alternatively, you could use [safe-buffer](https://www.npmjs.com/package/safe-buffer) — it also -provides a polyfill, but takes a different approach which has -[it's drawbacks](https://github.com/chalker/safer-buffer#why-not-safe-buffer). It will allow you -to also use the older `new Buffer()` API in your code, though — but that's arguably a benefit, as -it is problematic, can cause issues in your code, and will start emitting runtime deprecation -warnings starting with Node.js 10._ - -Note that in either case, it is important that you also remove all calls to the old Buffer -API manually — just throwing in `safe-buffer` doesn't fix the problem by itself, it just provides -a polyfill for the new API. I have seen people doing that mistake. - -Enabling eslint rule [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) -or -[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) -is recommended. - -_Don't forget to drop the polyfill usage once you drop support for Node.js < 4.5.0._ - - -## Variant 3 — manual detection, with safeguards - -This is useful if you create Buffer instances in only a few places (e.g. one), or you have your own -wrapper around them. - -### Buffer(0) - -This special case for creating empty buffers can be safely replaced with `Buffer.concat([])`, which -returns the same result all the way down to Node.js 0.8.x. - -### Buffer(notNumber) - -Before: - -```js -var buf = new Buffer(notNumber, encoding); -``` - -After: - -```js -var buf; -if (Buffer.from && Buffer.from !== Uint8Array.from) { - buf = Buffer.from(notNumber, encoding); -} else { - if (typeof notNumber === 'number') - throw new Error('The "size" argument must be of type number.'); - buf = new Buffer(notNumber, encoding); -} -``` - -`encoding` is optional. - -Note that the `typeof notNumber` before `new Buffer` is required (for cases when `notNumber` argument is not -hard-coded) and _is not caused by the deprecation of Buffer constructor_ — it's exactly _why_ the -Buffer constructor is deprecated. Ecosystem packages lacking this type-check caused numereous -security issues — situations when unsanitized user input could end up in the `Buffer(arg)` create -problems ranging from DoS to leaking sensitive information to the attacker from the process memory. - -When `notNumber` argument is hardcoded (e.g. literal `"abc"` or `[0,1,2]`), the `typeof` check can -be omitted. - -Also note that using TypeScript does not fix this problem for you — when libs written in -`TypeScript` are used from JS, or when user input ends up there — it behaves exactly as pure JS, as -all type checks are translation-time only and are not present in the actual JS code which TS -compiles to. - -### Buffer(number) - -For Node.js 0.10.x (and below) support: - -```js -var buf; -if (Buffer.alloc) { - buf = Buffer.alloc(number); -} else { - buf = new Buffer(number); - buf.fill(0); -} -``` - -Otherwise (Node.js ≥ 0.12.x): - -```js -const buf = Buffer.alloc ? Buffer.alloc(number) : new Buffer(number).fill(0); -``` - -## Regarding Buffer.allocUnsafe - -Be extra cautious when using `Buffer.allocUnsafe`: - * Don't use it if you don't have a good reason to - * e.g. you probably won't ever see a performance difference for small buffers, in fact, those - might be even faster with `Buffer.alloc()`, - * if your code is not in the hot code path — you also probably won't notice a difference, - * keep in mind that zero-filling minimizes the potential risks. - * If you use it, make sure that you never return the buffer in a partially-filled state, - * if you are writing to it sequentially — always truncate it to the actuall written length - -Errors in handling buffers allocated with `Buffer.allocUnsafe` could result in various issues, -ranged from undefined behaviour of your code to sensitive data (user input, passwords, certs) -leaking to the remote attacker. - -_Note that the same applies to `new Buffer` usage without zero-filling, depending on the Node.js -version (and lacking type checks also adds DoS to the list of potential problems)._ - - -## FAQ - - -### What is wrong with the `Buffer` constructor? - -The `Buffer` constructor could be used to create a buffer in many different ways: - -- `new Buffer(42)` creates a `Buffer` of 42 bytes. Before Node.js 8, this buffer contained - *arbitrary memory* for performance reasons, which could include anything ranging from - program source code to passwords and encryption keys. -- `new Buffer('abc')` creates a `Buffer` that contains the UTF-8-encoded version of - the string `'abc'`. A second argument could specify another encoding: For example, - `new Buffer(string, 'base64')` could be used to convert a Base64 string into the original - sequence of bytes that it represents. -- There are several other combinations of arguments. - -This meant that, in code like `var buffer = new Buffer(foo);`, *it is not possible to tell -what exactly the contents of the generated buffer are* without knowing the type of `foo`. - -Sometimes, the value of `foo` comes from an external source. For example, this function -could be exposed as a service on a web server, converting a UTF-8 string into its Base64 form: - -``` -function stringToBase64(req, res) { - // The request body should have the format of `{ string: 'foobar' }` - const rawBytes = new Buffer(req.body.string) - const encoded = rawBytes.toString('base64') - res.end({ encoded: encoded }) -} -``` - -Note that this code does *not* validate the type of `req.body.string`: - -- `req.body.string` is expected to be a string. If this is the case, all goes well. -- `req.body.string` is controlled by the client that sends the request. -- If `req.body.string` is the *number* `50`, the `rawBytes` would be 50 bytes: - - Before Node.js 8, the content would be uninitialized - - After Node.js 8, the content would be `50` bytes with the value `0` - -Because of the missing type check, an attacker could intentionally send a number -as part of the request. Using this, they can either: - -- Read uninitialized memory. This **will** leak passwords, encryption keys and other - kinds of sensitive information. (Information leak) -- Force the program to allocate a large amount of memory. For example, when specifying - `500000000` as the input value, each request will allocate 500MB of memory. - This can be used to either exhaust the memory available of a program completely - and make it crash, or slow it down significantly. (Denial of Service) - -Both of these scenarios are considered serious security issues in a real-world -web server context. - -when using `Buffer.from(req.body.string)` instead, passing a number will always -throw an exception instead, giving a controlled behaviour that can always be -handled by the program. - - -### The `Buffer()` constructor has been deprecated for a while. Is this really an issue? - -Surveys of code in the `npm` ecosystem have shown that the `Buffer()` constructor is still -widely used. This includes new code, and overall usage of such code has actually been -*increasing*. diff --git a/node_modules/safer-buffer/Readme.md b/node_modules/safer-buffer/Readme.md deleted file mode 100644 index 14b0822..0000000 --- a/node_modules/safer-buffer/Readme.md +++ /dev/null @@ -1,156 +0,0 @@ -# safer-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![javascript style guide][standard-image]][standard-url] [![Security Responsible Disclosure][secuirty-image]][secuirty-url] - -[travis-image]: https://travis-ci.org/ChALkeR/safer-buffer.svg?branch=master -[travis-url]: https://travis-ci.org/ChALkeR/safer-buffer -[npm-image]: https://img.shields.io/npm/v/safer-buffer.svg -[npm-url]: https://npmjs.org/package/safer-buffer -[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg -[standard-url]: https://standardjs.com -[secuirty-image]: https://img.shields.io/badge/Security-Responsible%20Disclosure-green.svg -[secuirty-url]: https://github.com/nodejs/security-wg/blob/master/processes/responsible_disclosure_template.md - -Modern Buffer API polyfill without footguns, working on Node.js from 0.8 to current. - -## How to use? - -First, port all `Buffer()` and `new Buffer()` calls to `Buffer.alloc()` and `Buffer.from()` API. - -Then, to achieve compatibility with outdated Node.js versions (`<4.5.0` and 5.x `<5.9.0`), use -`const Buffer = require('safer-buffer').Buffer` in all files where you make calls to the new -Buffer API. _Use `var` instead of `const` if you need that for your Node.js version range support._ - -Also, see the -[porting Buffer](https://github.com/ChALkeR/safer-buffer/blob/master/Porting-Buffer.md) guide. - -## Do I need it? - -Hopefully, not — dropping support for outdated Node.js versions should be fine nowdays, and that -is the recommended path forward. You _do_ need to port to the `Buffer.alloc()` and `Buffer.from()` -though. - -See the [porting guide](https://github.com/ChALkeR/safer-buffer/blob/master/Porting-Buffer.md) -for a better description. - -## Why not [safe-buffer](https://npmjs.com/safe-buffer)? - -_In short: while `safe-buffer` serves as a polyfill for the new API, it allows old API usage and -itself contains footguns._ - -`safe-buffer` could be used safely to get the new API while still keeping support for older -Node.js versions (like this module), but while analyzing ecosystem usage of the old Buffer API -I found out that `safe-buffer` is itself causing problems in some cases. - -For example, consider the following snippet: - -```console -$ cat example.unsafe.js -console.log(Buffer(20)) -$ ./node-v6.13.0-linux-x64/bin/node example.unsafe.js - -$ standard example.unsafe.js -standard: Use JavaScript Standard Style (https://standardjs.com) - /home/chalker/repo/safer-buffer/example.unsafe.js:2:13: 'Buffer()' was deprecated since v6. Use 'Buffer.alloc()' or 'Buffer.from()' (use 'https://www.npmjs.com/package/safe-buffer' for '<4.5.0') instead. -``` - -This is allocates and writes to console an uninitialized chunk of memory. -[standard](https://www.npmjs.com/package/standard) linter (among others) catch that and warn people -to avoid using unsafe API. - -Let's now throw in `safe-buffer`! - -```console -$ cat example.safe-buffer.js -const Buffer = require('safe-buffer').Buffer -console.log(Buffer(20)) -$ standard example.safe-buffer.js -$ ./node-v6.13.0-linux-x64/bin/node example.safe-buffer.js - -``` - -See the problem? Adding in `safe-buffer` _magically removes the lint warning_, but the behavior -remains identiсal to what we had before, and when launched on Node.js 6.x LTS — this dumps out -chunks of uninitialized memory. -_And this code will still emit runtime warnings on Node.js 10.x and above._ - -That was done by design. I first considered changing `safe-buffer`, prohibiting old API usage or -emitting warnings on it, but that significantly diverges from `safe-buffer` design. After some -discussion, it was decided to move my approach into a separate package, and _this is that separate -package_. - -This footgun is not imaginary — I observed top-downloaded packages doing that kind of thing, -«fixing» the lint warning by blindly including `safe-buffer` without any actual changes. - -Also in some cases, even if the API _was_ migrated to use of safe Buffer API — a random pull request -can bring unsafe Buffer API usage back to the codebase by adding new calls — and that could go -unnoticed even if you have a linter prohibiting that (becase of the reason stated above), and even -pass CI. _I also observed that being done in popular packages._ - -Some examples: - * [webdriverio](https://github.com/webdriverio/webdriverio/commit/05cbd3167c12e4930f09ef7cf93b127ba4effae4#diff-124380949022817b90b622871837d56cR31) - (a module with 548 759 downloads/month), - * [websocket-stream](https://github.com/maxogden/websocket-stream/commit/c9312bd24d08271687d76da0fe3c83493871cf61) - (218 288 d/m, fix in [maxogden/websocket-stream#142](https://github.com/maxogden/websocket-stream/pull/142)), - * [node-serialport](https://github.com/node-serialport/node-serialport/commit/e8d9d2b16c664224920ce1c895199b1ce2def48c) - (113 138 d/m, fix in [node-serialport/node-serialport#1510](https://github.com/node-serialport/node-serialport/pull/1510)), - * [karma](https://github.com/karma-runner/karma/commit/3d94b8cf18c695104ca195334dc75ff054c74eec) - (3 973 193 d/m, fix in [karma-runner/karma#2947](https://github.com/karma-runner/karma/pull/2947)), - * [spdy-transport](https://github.com/spdy-http2/spdy-transport/commit/5375ac33f4a62a4f65bcfc2827447d42a5dbe8b1) - (5 970 727 d/m, fix in [spdy-http2/spdy-transport#53](https://github.com/spdy-http2/spdy-transport/pull/53)). - * And there are a lot more over the ecosystem. - -I filed a PR at -[mysticatea/eslint-plugin-node#110](https://github.com/mysticatea/eslint-plugin-node/pull/110) to -partially fix that (for cases when that lint rule is used), but it is a semver-major change for -linter rules and presets, so it would take significant time for that to reach actual setups. -_It also hasn't been released yet (2018-03-20)._ - -Also, `safer-buffer` discourages the usage of `.allocUnsafe()`, which is often done by a mistake. -It still supports it with an explicit concern barier, by placing it under -`require('safer-buffer/dangereous')`. - -## But isn't throwing bad? - -Not really. It's an error that could be noticed and fixed early, instead of causing havoc later like -unguarded `new Buffer()` calls that end up receiving user input can do. - -This package affects only the files where `var Buffer = require('safer-buffer').Buffer` was done, so -it is really simple to keep track of things and make sure that you don't mix old API usage with that. -Also, CI should hint anything that you might have missed. - -New commits, if tested, won't land new usage of unsafe Buffer API this way. -_Node.js 10.x also deals with that by printing a runtime depecation warning._ - -### Would it affect third-party modules? - -No, unless you explicitly do an awful thing like monkey-patching or overriding the built-in `Buffer`. -Don't do that. - -### But I don't want throwing… - -That is also fine! - -Also, it could be better in some cases when you don't comprehensive enough test coverage. - -In that case — just don't override `Buffer` and use -`var SaferBuffer = require('safer-buffer').Buffer` instead. - -That way, everything using `Buffer` natively would still work, but there would be two drawbacks: - -* `Buffer.from`/`Buffer.alloc` won't be polyfilled — use `SaferBuffer.from` and - `SaferBuffer.alloc` instead. -* You are still open to accidentally using the insecure deprecated API — use a linter to catch that. - -Note that using a linter to catch accidential `Buffer` constructor usage in this case is strongly -recommended. `Buffer` is not overriden in this usecase, so linters won't get confused. - -## «Without footguns»? - -Well, it is still possible to do _some_ things with `Buffer` API, e.g. accessing `.buffer` property -on older versions and duping things from there. You shouldn't do that in your code, probabably. - -The intention is to remove the most significant footguns that affect lots of packages in the -ecosystem, and to do it in the proper way. - -Also, this package doesn't protect against security issues affecting some Node.js versions, so for -usage in your own production code, it is still recommended to update to a Node.js version -[supported by upstream](https://github.com/nodejs/release#release-schedule). diff --git a/node_modules/safer-buffer/dangerous.js b/node_modules/safer-buffer/dangerous.js deleted file mode 100644 index ca41fdc..0000000 --- a/node_modules/safer-buffer/dangerous.js +++ /dev/null @@ -1,58 +0,0 @@ -/* eslint-disable node/no-deprecated-api */ - -'use strict' - -var buffer = require('buffer') -var Buffer = buffer.Buffer -var safer = require('./safer.js') -var Safer = safer.Buffer - -var dangerous = {} - -var key - -for (key in safer) { - if (!safer.hasOwnProperty(key)) continue - dangerous[key] = safer[key] -} - -var Dangereous = dangerous.Buffer = {} - -// Copy Safer API -for (key in Safer) { - if (!Safer.hasOwnProperty(key)) continue - Dangereous[key] = Safer[key] -} - -// Copy those missing unsafe methods, if they are present -for (key in Buffer) { - if (!Buffer.hasOwnProperty(key)) continue - if (Dangereous.hasOwnProperty(key)) continue - Dangereous[key] = Buffer[key] -} - -if (!Dangereous.allocUnsafe) { - Dangereous.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) - } - if (size < 0 || size >= 2 * (1 << 30)) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } - return Buffer(size) - } -} - -if (!Dangereous.allocUnsafeSlow) { - Dangereous.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) - } - if (size < 0 || size >= 2 * (1 << 30)) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } - return buffer.SlowBuffer(size) - } -} - -module.exports = dangerous diff --git a/node_modules/safer-buffer/package.json b/node_modules/safer-buffer/package.json deleted file mode 100644 index 3e16420..0000000 --- a/node_modules/safer-buffer/package.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "_from": "safer-buffer@^2.0.2", - "_id": "safer-buffer@2.1.2", - "_inBundle": false, - "_integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "_location": "/safer-buffer", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "safer-buffer@^2.0.2", - "name": "safer-buffer", - "escapedName": "safer-buffer", - "rawSpec": "^2.0.2", - "saveSpec": null, - "fetchSpec": "^2.0.2" - }, - "_requiredBy": [ - "/asn1", - "/ecc-jsbn", - "/sshpk" - ], - "_resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "_shasum": "44fa161b0187b9549dd84bb91802f9bd8385cd6a", - "_spec": "safer-buffer@^2.0.2", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/sshpk", - "author": { - "name": "Nikita Skovoroda", - "email": "chalkerx@gmail.com", - "url": "https://github.com/ChALkeR" - }, - "bugs": { - "url": "https://github.com/ChALkeR/safer-buffer/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Modern Buffer API polyfill without footguns", - "devDependencies": { - "standard": "^11.0.1", - "tape": "^4.9.0" - }, - "files": [ - "Porting-Buffer.md", - "Readme.md", - "tests.js", - "dangerous.js", - "safer.js" - ], - "homepage": "https://github.com/ChALkeR/safer-buffer#readme", - "license": "MIT", - "main": "safer.js", - "name": "safer-buffer", - "repository": { - "type": "git", - "url": "git+https://github.com/ChALkeR/safer-buffer.git" - }, - "scripts": { - "browserify-test": "browserify --external tape tests.js > browserify-tests.js && tape browserify-tests.js", - "test": "standard && tape tests.js" - }, - "version": "2.1.2" -} diff --git a/node_modules/safer-buffer/safer.js b/node_modules/safer-buffer/safer.js deleted file mode 100644 index 37c7e1a..0000000 --- a/node_modules/safer-buffer/safer.js +++ /dev/null @@ -1,77 +0,0 @@ -/* eslint-disable node/no-deprecated-api */ - -'use strict' - -var buffer = require('buffer') -var Buffer = buffer.Buffer - -var safer = {} - -var key - -for (key in buffer) { - if (!buffer.hasOwnProperty(key)) continue - if (key === 'SlowBuffer' || key === 'Buffer') continue - safer[key] = buffer[key] -} - -var Safer = safer.Buffer = {} -for (key in Buffer) { - if (!Buffer.hasOwnProperty(key)) continue - if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue - Safer[key] = Buffer[key] -} - -safer.Buffer.prototype = Buffer.prototype - -if (!Safer.from || Safer.from === Uint8Array.from) { - Safer.from = function (value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value) - } - if (value && typeof value.length === 'undefined') { - throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value) - } - return Buffer(value, encodingOrOffset, length) - } -} - -if (!Safer.alloc) { - Safer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) - } - if (size < 0 || size >= 2 * (1 << 30)) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } - var buf = Buffer(size) - if (!fill || fill.length === 0) { - buf.fill(0) - } else if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - return buf - } -} - -if (!safer.kStringMaxLength) { - try { - safer.kStringMaxLength = process.binding('buffer').kStringMaxLength - } catch (e) { - // we can't determine kStringMaxLength in environments where process.binding - // is unsupported, so let's not set it - } -} - -if (!safer.constants) { - safer.constants = { - MAX_LENGTH: safer.kMaxLength - } - if (safer.kStringMaxLength) { - safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength - } -} - -module.exports = safer diff --git a/node_modules/safer-buffer/tests.js b/node_modules/safer-buffer/tests.js deleted file mode 100644 index 7ed2777..0000000 --- a/node_modules/safer-buffer/tests.js +++ /dev/null @@ -1,406 +0,0 @@ -/* eslint-disable node/no-deprecated-api */ - -'use strict' - -var test = require('tape') - -var buffer = require('buffer') - -var index = require('./') -var safer = require('./safer') -var dangerous = require('./dangerous') - -/* Inheritance tests */ - -test('Default is Safer', function (t) { - t.equal(index, safer) - t.notEqual(safer, dangerous) - t.notEqual(index, dangerous) - t.end() -}) - -test('Is not a function', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(typeof impl, 'object') - t.equal(typeof impl.Buffer, 'object') - }); - [buffer].forEach(function (impl) { - t.equal(typeof impl, 'object') - t.equal(typeof impl.Buffer, 'function') - }) - t.end() -}) - -test('Constructor throws', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.throws(function () { impl.Buffer() }) - t.throws(function () { impl.Buffer(0) }) - t.throws(function () { impl.Buffer('a') }) - t.throws(function () { impl.Buffer('a', 'utf-8') }) - t.throws(function () { return new impl.Buffer() }) - t.throws(function () { return new impl.Buffer(0) }) - t.throws(function () { return new impl.Buffer('a') }) - t.throws(function () { return new impl.Buffer('a', 'utf-8') }) - }) - t.end() -}) - -test('Safe methods exist', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(typeof impl.Buffer.alloc, 'function', 'alloc') - t.equal(typeof impl.Buffer.from, 'function', 'from') - }) - t.end() -}) - -test('Unsafe methods exist only in Dangerous', function (t) { - [index, safer].forEach(function (impl) { - t.equal(typeof impl.Buffer.allocUnsafe, 'undefined') - t.equal(typeof impl.Buffer.allocUnsafeSlow, 'undefined') - }); - [dangerous].forEach(function (impl) { - t.equal(typeof impl.Buffer.allocUnsafe, 'function') - t.equal(typeof impl.Buffer.allocUnsafeSlow, 'function') - }) - t.end() -}) - -test('Generic methods/properties are defined and equal', function (t) { - ['poolSize', 'isBuffer', 'concat', 'byteLength'].forEach(function (method) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer[method], buffer.Buffer[method], method) - t.notEqual(typeof impl.Buffer[method], 'undefined', method) - }) - }) - t.end() -}) - -test('Built-in buffer static methods/properties are inherited', function (t) { - Object.keys(buffer).forEach(function (method) { - if (method === 'SlowBuffer' || method === 'Buffer') return; - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl[method], buffer[method], method) - t.notEqual(typeof impl[method], 'undefined', method) - }) - }) - t.end() -}) - -test('Built-in Buffer static methods/properties are inherited', function (t) { - Object.keys(buffer.Buffer).forEach(function (method) { - if (method === 'allocUnsafe' || method === 'allocUnsafeSlow') return; - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer[method], buffer.Buffer[method], method) - t.notEqual(typeof impl.Buffer[method], 'undefined', method) - }) - }) - t.end() -}) - -test('.prototype property of Buffer is inherited', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer.prototype, buffer.Buffer.prototype, 'prototype') - t.notEqual(typeof impl.Buffer.prototype, 'undefined', 'prototype') - }) - t.end() -}) - -test('All Safer methods are present in Dangerous', function (t) { - Object.keys(safer).forEach(function (method) { - if (method === 'Buffer') return; - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl[method], safer[method], method) - if (method !== 'kStringMaxLength') { - t.notEqual(typeof impl[method], 'undefined', method) - } - }) - }) - Object.keys(safer.Buffer).forEach(function (method) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer[method], safer.Buffer[method], method) - t.notEqual(typeof impl.Buffer[method], 'undefined', method) - }) - }) - t.end() -}) - -test('Safe methods from Dangerous methods are present in Safer', function (t) { - Object.keys(dangerous).forEach(function (method) { - if (method === 'Buffer') return; - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl[method], dangerous[method], method) - if (method !== 'kStringMaxLength') { - t.notEqual(typeof impl[method], 'undefined', method) - } - }) - }) - Object.keys(dangerous.Buffer).forEach(function (method) { - if (method === 'allocUnsafe' || method === 'allocUnsafeSlow') return; - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer[method], dangerous.Buffer[method], method) - t.notEqual(typeof impl.Buffer[method], 'undefined', method) - }) - }) - t.end() -}) - -/* Behaviour tests */ - -test('Methods return Buffers', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(0))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(0, 10))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(0, 'a'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(10))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(10, 'x'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(9, 'ab'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from(''))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from('string'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from('string', 'utf-8'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from([0, 42, 3]))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from(new Uint8Array([0, 42, 3])))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from([]))) - }); - ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { - t.ok(buffer.Buffer.isBuffer(dangerous.Buffer[method](0))) - t.ok(buffer.Buffer.isBuffer(dangerous.Buffer[method](10))) - }) - t.end() -}) - -test('Constructor is buffer.Buffer', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer.alloc(0).constructor, buffer.Buffer) - t.equal(impl.Buffer.alloc(0, 10).constructor, buffer.Buffer) - t.equal(impl.Buffer.alloc(0, 'a').constructor, buffer.Buffer) - t.equal(impl.Buffer.alloc(10).constructor, buffer.Buffer) - t.equal(impl.Buffer.alloc(10, 'x').constructor, buffer.Buffer) - t.equal(impl.Buffer.alloc(9, 'ab').constructor, buffer.Buffer) - t.equal(impl.Buffer.from('').constructor, buffer.Buffer) - t.equal(impl.Buffer.from('string').constructor, buffer.Buffer) - t.equal(impl.Buffer.from('string', 'utf-8').constructor, buffer.Buffer) - t.equal(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64').constructor, buffer.Buffer) - t.equal(impl.Buffer.from([0, 42, 3]).constructor, buffer.Buffer) - t.equal(impl.Buffer.from(new Uint8Array([0, 42, 3])).constructor, buffer.Buffer) - t.equal(impl.Buffer.from([]).constructor, buffer.Buffer) - }); - [0, 10, 100].forEach(function (arg) { - t.equal(dangerous.Buffer.allocUnsafe(arg).constructor, buffer.Buffer) - t.equal(dangerous.Buffer.allocUnsafeSlow(arg).constructor, buffer.SlowBuffer(0).constructor) - }) - t.end() -}) - -test('Invalid calls throw', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.throws(function () { impl.Buffer.from(0) }) - t.throws(function () { impl.Buffer.from(10) }) - t.throws(function () { impl.Buffer.from(10, 'utf-8') }) - t.throws(function () { impl.Buffer.from('string', 'invalid encoding') }) - t.throws(function () { impl.Buffer.from(-10) }) - t.throws(function () { impl.Buffer.from(1e90) }) - t.throws(function () { impl.Buffer.from(Infinity) }) - t.throws(function () { impl.Buffer.from(-Infinity) }) - t.throws(function () { impl.Buffer.from(NaN) }) - t.throws(function () { impl.Buffer.from(null) }) - t.throws(function () { impl.Buffer.from(undefined) }) - t.throws(function () { impl.Buffer.from() }) - t.throws(function () { impl.Buffer.from({}) }) - t.throws(function () { impl.Buffer.alloc('') }) - t.throws(function () { impl.Buffer.alloc('string') }) - t.throws(function () { impl.Buffer.alloc('string', 'utf-8') }) - t.throws(function () { impl.Buffer.alloc('b25ldHdvdGhyZWU=', 'base64') }) - t.throws(function () { impl.Buffer.alloc(-10) }) - t.throws(function () { impl.Buffer.alloc(1e90) }) - t.throws(function () { impl.Buffer.alloc(2 * (1 << 30)) }) - t.throws(function () { impl.Buffer.alloc(Infinity) }) - t.throws(function () { impl.Buffer.alloc(-Infinity) }) - t.throws(function () { impl.Buffer.alloc(null) }) - t.throws(function () { impl.Buffer.alloc(undefined) }) - t.throws(function () { impl.Buffer.alloc() }) - t.throws(function () { impl.Buffer.alloc([]) }) - t.throws(function () { impl.Buffer.alloc([0, 42, 3]) }) - t.throws(function () { impl.Buffer.alloc({}) }) - }); - ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { - t.throws(function () { dangerous.Buffer[method]('') }) - t.throws(function () { dangerous.Buffer[method]('string') }) - t.throws(function () { dangerous.Buffer[method]('string', 'utf-8') }) - t.throws(function () { dangerous.Buffer[method](2 * (1 << 30)) }) - t.throws(function () { dangerous.Buffer[method](Infinity) }) - if (dangerous.Buffer[method] === buffer.Buffer.allocUnsafe) { - t.skip('Skipping, older impl of allocUnsafe coerced negative sizes to 0') - } else { - t.throws(function () { dangerous.Buffer[method](-10) }) - t.throws(function () { dangerous.Buffer[method](-1e90) }) - t.throws(function () { dangerous.Buffer[method](-Infinity) }) - } - t.throws(function () { dangerous.Buffer[method](null) }) - t.throws(function () { dangerous.Buffer[method](undefined) }) - t.throws(function () { dangerous.Buffer[method]() }) - t.throws(function () { dangerous.Buffer[method]([]) }) - t.throws(function () { dangerous.Buffer[method]([0, 42, 3]) }) - t.throws(function () { dangerous.Buffer[method]({}) }) - }) - t.end() -}) - -test('Buffers have appropriate lengths', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer.alloc(0).length, 0) - t.equal(impl.Buffer.alloc(10).length, 10) - t.equal(impl.Buffer.from('').length, 0) - t.equal(impl.Buffer.from('string').length, 6) - t.equal(impl.Buffer.from('string', 'utf-8').length, 6) - t.equal(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64').length, 11) - t.equal(impl.Buffer.from([0, 42, 3]).length, 3) - t.equal(impl.Buffer.from(new Uint8Array([0, 42, 3])).length, 3) - t.equal(impl.Buffer.from([]).length, 0) - }); - ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { - t.equal(dangerous.Buffer[method](0).length, 0) - t.equal(dangerous.Buffer[method](10).length, 10) - }) - t.end() -}) - -test('Buffers have appropriate lengths (2)', function (t) { - t.equal(index.Buffer.alloc, safer.Buffer.alloc) - t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) - var ok = true; - [ safer.Buffer.alloc, - dangerous.Buffer.allocUnsafe, - dangerous.Buffer.allocUnsafeSlow - ].forEach(function (method) { - for (var i = 0; i < 1e2; i++) { - var length = Math.round(Math.random() * 1e5) - var buf = method(length) - if (!buffer.Buffer.isBuffer(buf)) ok = false - if (buf.length !== length) ok = false - } - }) - t.ok(ok) - t.end() -}) - -test('.alloc(size) is zero-filled and has correct length', function (t) { - t.equal(index.Buffer.alloc, safer.Buffer.alloc) - t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) - var ok = true - for (var i = 0; i < 1e2; i++) { - var length = Math.round(Math.random() * 2e6) - var buf = index.Buffer.alloc(length) - if (!buffer.Buffer.isBuffer(buf)) ok = false - if (buf.length !== length) ok = false - var j - for (j = 0; j < length; j++) { - if (buf[j] !== 0) ok = false - } - buf.fill(1) - for (j = 0; j < length; j++) { - if (buf[j] !== 1) ok = false - } - } - t.ok(ok) - t.end() -}) - -test('.allocUnsafe / .allocUnsafeSlow are fillable and have correct lengths', function (t) { - ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { - var ok = true - for (var i = 0; i < 1e2; i++) { - var length = Math.round(Math.random() * 2e6) - var buf = dangerous.Buffer[method](length) - if (!buffer.Buffer.isBuffer(buf)) ok = false - if (buf.length !== length) ok = false - buf.fill(0, 0, length) - var j - for (j = 0; j < length; j++) { - if (buf[j] !== 0) ok = false - } - buf.fill(1, 0, length) - for (j = 0; j < length; j++) { - if (buf[j] !== 1) ok = false - } - } - t.ok(ok, method) - }) - t.end() -}) - -test('.alloc(size, fill) is `fill`-filled', function (t) { - t.equal(index.Buffer.alloc, safer.Buffer.alloc) - t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) - var ok = true - for (var i = 0; i < 1e2; i++) { - var length = Math.round(Math.random() * 2e6) - var fill = Math.round(Math.random() * 255) - var buf = index.Buffer.alloc(length, fill) - if (!buffer.Buffer.isBuffer(buf)) ok = false - if (buf.length !== length) ok = false - for (var j = 0; j < length; j++) { - if (buf[j] !== fill) ok = false - } - } - t.ok(ok) - t.end() -}) - -test('.alloc(size, fill) is `fill`-filled', function (t) { - t.equal(index.Buffer.alloc, safer.Buffer.alloc) - t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) - var ok = true - for (var i = 0; i < 1e2; i++) { - var length = Math.round(Math.random() * 2e6) - var fill = Math.round(Math.random() * 255) - var buf = index.Buffer.alloc(length, fill) - if (!buffer.Buffer.isBuffer(buf)) ok = false - if (buf.length !== length) ok = false - for (var j = 0; j < length; j++) { - if (buf[j] !== fill) ok = false - } - } - t.ok(ok) - t.deepEqual(index.Buffer.alloc(9, 'a'), index.Buffer.alloc(9, 97)) - t.notDeepEqual(index.Buffer.alloc(9, 'a'), index.Buffer.alloc(9, 98)) - - var tmp = new buffer.Buffer(2) - tmp.fill('ok') - if (tmp[1] === tmp[0]) { - // Outdated Node.js - t.deepEqual(index.Buffer.alloc(5, 'ok'), index.Buffer.from('ooooo')) - } else { - t.deepEqual(index.Buffer.alloc(5, 'ok'), index.Buffer.from('okoko')) - } - t.notDeepEqual(index.Buffer.alloc(5, 'ok'), index.Buffer.from('kokok')) - - t.end() -}) - -test('safer.Buffer.from returns results same as Buffer constructor', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.deepEqual(impl.Buffer.from(''), new buffer.Buffer('')) - t.deepEqual(impl.Buffer.from('string'), new buffer.Buffer('string')) - t.deepEqual(impl.Buffer.from('string', 'utf-8'), new buffer.Buffer('string', 'utf-8')) - t.deepEqual(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64'), new buffer.Buffer('b25ldHdvdGhyZWU=', 'base64')) - t.deepEqual(impl.Buffer.from([0, 42, 3]), new buffer.Buffer([0, 42, 3])) - t.deepEqual(impl.Buffer.from(new Uint8Array([0, 42, 3])), new buffer.Buffer(new Uint8Array([0, 42, 3]))) - t.deepEqual(impl.Buffer.from([]), new buffer.Buffer([])) - }) - t.end() -}) - -test('safer.Buffer.from returns consistent results', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.deepEqual(impl.Buffer.from(''), impl.Buffer.alloc(0)) - t.deepEqual(impl.Buffer.from([]), impl.Buffer.alloc(0)) - t.deepEqual(impl.Buffer.from(new Uint8Array([])), impl.Buffer.alloc(0)) - t.deepEqual(impl.Buffer.from('string', 'utf-8'), impl.Buffer.from('string')) - t.deepEqual(impl.Buffer.from('string'), impl.Buffer.from([115, 116, 114, 105, 110, 103])) - t.deepEqual(impl.Buffer.from('string'), impl.Buffer.from(impl.Buffer.from('string'))) - t.deepEqual(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64'), impl.Buffer.from('onetwothree')) - t.notDeepEqual(impl.Buffer.from('b25ldHdvdGhyZWU='), impl.Buffer.from('onetwothree')) - }) - t.end() -}) diff --git a/node_modules/sshpk/.npmignore b/node_modules/sshpk/.npmignore deleted file mode 100644 index 8000b59..0000000 --- a/node_modules/sshpk/.npmignore +++ /dev/null @@ -1,9 +0,0 @@ -.gitmodules -deps -docs -Makefile -node_modules -test -tools -coverage -man/src diff --git a/node_modules/sshpk/.travis.yml b/node_modules/sshpk/.travis.yml deleted file mode 100644 index c3394c2..0000000 --- a/node_modules/sshpk/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -language: node_js -node_js: - - "5.10" - - "4.4" - - "4.1" - - "0.12" - - "0.10" -before_install: - - "make check" -after_success: - - '[ "${TRAVIS_NODE_VERSION}" = "4.4" ] && make codecovio' diff --git a/node_modules/sshpk/LICENSE b/node_modules/sshpk/LICENSE deleted file mode 100644 index f6d947d..0000000 --- a/node_modules/sshpk/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright Joyent, Inc. All rights reserved. -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. diff --git a/node_modules/sshpk/README.md b/node_modules/sshpk/README.md deleted file mode 100644 index 5740f74..0000000 --- a/node_modules/sshpk/README.md +++ /dev/null @@ -1,804 +0,0 @@ -sshpk -========= - -Parse, convert, fingerprint and use SSH keys (both public and private) in pure -node -- no `ssh-keygen` or other external dependencies. - -Supports RSA, DSA, ECDSA (nistp-\*) and ED25519 key types, in PEM (PKCS#1, -PKCS#8) and OpenSSH formats. - -This library has been extracted from -[`node-http-signature`](https://github.com/joyent/node-http-signature) -(work by [Mark Cavage](https://github.com/mcavage) and -[Dave Eddy](https://github.com/bahamas10)) and -[`node-ssh-fingerprint`](https://github.com/bahamas10/node-ssh-fingerprint) -(work by Dave Eddy), with additions (including ECDSA support) by -[Alex Wilson](https://github.com/arekinath). - -Install -------- - -``` -npm install sshpk -``` - -Examples --------- - -```js -var sshpk = require('sshpk'); - -var fs = require('fs'); - -/* Read in an OpenSSH-format public key */ -var keyPub = fs.readFileSync('id_rsa.pub'); -var key = sshpk.parseKey(keyPub, 'ssh'); - -/* Get metadata about the key */ -console.log('type => %s', key.type); -console.log('size => %d bits', key.size); -console.log('comment => %s', key.comment); - -/* Compute key fingerprints, in new OpenSSH (>6.7) format, and old MD5 */ -console.log('fingerprint => %s', key.fingerprint().toString()); -console.log('old-style fingerprint => %s', key.fingerprint('md5').toString()); -``` - -Example output: - -``` -type => rsa -size => 2048 bits -comment => foo@foo.com -fingerprint => SHA256:PYC9kPVC6J873CSIbfp0LwYeczP/W4ffObNCuDJ1u5w -old-style fingerprint => a0:c8:ad:6c:32:9a:32:fa:59:cc:a9:8c:0a:0d:6e:bd -``` - -More examples: converting between formats: - -```js -/* Read in a PEM public key */ -var keyPem = fs.readFileSync('id_rsa.pem'); -var key = sshpk.parseKey(keyPem, 'pem'); - -/* Convert to PEM PKCS#8 public key format */ -var pemBuf = key.toBuffer('pkcs8'); - -/* Convert to SSH public key format (and return as a string) */ -var sshKey = key.toString('ssh'); -``` - -Signing and verifying: - -```js -/* Read in an OpenSSH/PEM *private* key */ -var keyPriv = fs.readFileSync('id_ecdsa'); -var key = sshpk.parsePrivateKey(keyPriv, 'pem'); - -var data = 'some data'; - -/* Sign some data with the key */ -var s = key.createSign('sha1'); -s.update(data); -var signature = s.sign(); - -/* Now load the public key (could also use just key.toPublic()) */ -var keyPub = fs.readFileSync('id_ecdsa.pub'); -key = sshpk.parseKey(keyPub, 'ssh'); - -/* Make a crypto.Verifier with this key */ -var v = key.createVerify('sha1'); -v.update(data); -var valid = v.verify(signature); -/* => true! */ -``` - -Matching fingerprints with keys: - -```js -var fp = sshpk.parseFingerprint('SHA256:PYC9kPVC6J873CSIbfp0LwYeczP/W4ffObNCuDJ1u5w'); - -var keys = [sshpk.parseKey(...), sshpk.parseKey(...), ...]; - -keys.forEach(function (key) { - if (fp.matches(key)) - console.log('found it!'); -}); -``` - -Usage ------ - -## Public keys - -### `parseKey(data[, format = 'auto'[, options]])` - -Parses a key from a given data format and returns a new `Key` object. - -Parameters - -- `data` -- Either a Buffer or String, containing the key -- `format` -- String name of format to use, valid options are: - - `auto`: choose automatically from all below - - `pem`: supports both PKCS#1 and PKCS#8 - - `ssh`: standard OpenSSH format, - - `pkcs1`, `pkcs8`: variants of `pem` - - `rfc4253`: raw OpenSSH wire format - - `openssh`: new post-OpenSSH 6.5 internal format, produced by - `ssh-keygen -o` - - `dnssec`: `.key` file format output by `dnssec-keygen` etc - - `putty`: the PuTTY `.ppk` file format (supports truncated variant without - all the lines from `Private-Lines:` onwards) -- `options` -- Optional Object, extra options, with keys: - - `filename` -- Optional String, name for the key being parsed - (eg. the filename that was opened). Used to generate - Error messages - - `passphrase` -- Optional String, encryption passphrase used to decrypt an - encrypted PEM file - -### `Key.isKey(obj)` - -Returns `true` if the given object is a valid `Key` object created by a version -of `sshpk` compatible with this one. - -Parameters - -- `obj` -- Object to identify - -### `Key#type` - -String, the type of key. Valid options are `rsa`, `dsa`, `ecdsa`. - -### `Key#size` - -Integer, "size" of the key in bits. For RSA/DSA this is the size of the modulus; -for ECDSA this is the bit size of the curve in use. - -### `Key#comment` - -Optional string, a key comment used by some formats (eg the `ssh` format). - -### `Key#curve` - -Only present if `this.type === 'ecdsa'`, string containing the name of the -named curve used with this key. Possible values include `nistp256`, `nistp384` -and `nistp521`. - -### `Key#toBuffer([format = 'ssh'])` - -Convert the key into a given data format and return the serialized key as -a Buffer. - -Parameters - -- `format` -- String name of format to use, for valid options see `parseKey()` - -### `Key#toString([format = 'ssh])` - -Same as `this.toBuffer(format).toString()`. - -### `Key#fingerprint([algorithm = 'sha256'[, hashType = 'ssh']])` - -Creates a new `Fingerprint` object representing this Key's fingerprint. - -Parameters - -- `algorithm` -- String name of hash algorithm to use, valid options are `md5`, - `sha1`, `sha256`, `sha384`, `sha512` -- `hashType` -- String name of fingerprint hash type to use, valid options are - `ssh` (the type of fingerprint used by OpenSSH, e.g. in - `ssh-keygen`), `spki` (used by HPKP, some OpenSSL applications) - -### `Key#createVerify([hashAlgorithm])` - -Creates a `crypto.Verifier` specialized to use this Key (and the correct public -key algorithm to match it). The returned Verifier has the same API as a regular -one, except that the `verify()` function takes only the target signature as an -argument. - -Parameters - -- `hashAlgorithm` -- optional String name of hash algorithm to use, any - supported by OpenSSL are valid, usually including - `sha1`, `sha256`. - -`v.verify(signature[, format])` Parameters - -- `signature` -- either a Signature object, or a Buffer or String -- `format` -- optional String, name of format to interpret given String with. - Not valid if `signature` is a Signature or Buffer. - -### `Key#createDiffieHellman()` -### `Key#createDH()` - -Creates a Diffie-Hellman key exchange object initialized with this key and all -necessary parameters. This has the same API as a `crypto.DiffieHellman` -instance, except that functions take `Key` and `PrivateKey` objects as -arguments, and return them where indicated for. - -This is only valid for keys belonging to a cryptosystem that supports DHE -or a close analogue (i.e. `dsa`, `ecdsa` and `curve25519` keys). An attempt -to call this function on other keys will yield an `Error`. - -## Private keys - -### `parsePrivateKey(data[, format = 'auto'[, options]])` - -Parses a private key from a given data format and returns a new -`PrivateKey` object. - -Parameters - -- `data` -- Either a Buffer or String, containing the key -- `format` -- String name of format to use, valid options are: - - `auto`: choose automatically from all below - - `pem`: supports both PKCS#1 and PKCS#8 - - `ssh`, `openssh`: new post-OpenSSH 6.5 internal format, produced by - `ssh-keygen -o` - - `pkcs1`, `pkcs8`: variants of `pem` - - `rfc4253`: raw OpenSSH wire format - - `dnssec`: `.private` format output by `dnssec-keygen` etc. -- `options` -- Optional Object, extra options, with keys: - - `filename` -- Optional String, name for the key being parsed - (eg. the filename that was opened). Used to generate - Error messages - - `passphrase` -- Optional String, encryption passphrase used to decrypt an - encrypted PEM file - -### `generatePrivateKey(type[, options])` - -Generates a new private key of a certain key type, from random data. - -Parameters - -- `type` -- String, type of key to generate. Currently supported are `'ecdsa'` - and `'ed25519'` -- `options` -- optional Object, with keys: - - `curve` -- optional String, for `'ecdsa'` keys, specifies the curve to use. - If ECDSA is specified and this option is not given, defaults to - using `'nistp256'`. - -### `PrivateKey.isPrivateKey(obj)` - -Returns `true` if the given object is a valid `PrivateKey` object created by a -version of `sshpk` compatible with this one. - -Parameters - -- `obj` -- Object to identify - -### `PrivateKey#type` - -String, the type of key. Valid options are `rsa`, `dsa`, `ecdsa`. - -### `PrivateKey#size` - -Integer, "size" of the key in bits. For RSA/DSA this is the size of the modulus; -for ECDSA this is the bit size of the curve in use. - -### `PrivateKey#curve` - -Only present if `this.type === 'ecdsa'`, string containing the name of the -named curve used with this key. Possible values include `nistp256`, `nistp384` -and `nistp521`. - -### `PrivateKey#toBuffer([format = 'pkcs1'])` - -Convert the key into a given data format and return the serialized key as -a Buffer. - -Parameters - -- `format` -- String name of format to use, valid options are listed under - `parsePrivateKey`. Note that ED25519 keys default to `openssh` - format instead (as they have no `pkcs1` representation). - -### `PrivateKey#toString([format = 'pkcs1'])` - -Same as `this.toBuffer(format).toString()`. - -### `PrivateKey#toPublic()` - -Extract just the public part of this private key, and return it as a `Key` -object. - -### `PrivateKey#fingerprint([algorithm = 'sha256'])` - -Same as `this.toPublic().fingerprint()`. - -### `PrivateKey#createVerify([hashAlgorithm])` - -Same as `this.toPublic().createVerify()`. - -### `PrivateKey#createSign([hashAlgorithm])` - -Creates a `crypto.Sign` specialized to use this PrivateKey (and the correct -key algorithm to match it). The returned Signer has the same API as a regular -one, except that the `sign()` function takes no arguments, and returns a -`Signature` object. - -Parameters - -- `hashAlgorithm` -- optional String name of hash algorithm to use, any - supported by OpenSSL are valid, usually including - `sha1`, `sha256`. - -`v.sign()` Parameters - -- none - -### `PrivateKey#derive(newType)` - -Derives a related key of type `newType` from this key. Currently this is -only supported to change between `ed25519` and `curve25519` keys which are -stored with the same private key (but usually distinct public keys in order -to avoid degenerate keys that lead to a weak Diffie-Hellman exchange). - -Parameters - -- `newType` -- String, type of key to derive, either `ed25519` or `curve25519` - -## Fingerprints - -### `parseFingerprint(fingerprint[, options])` - -Pre-parses a fingerprint, creating a `Fingerprint` object that can be used to -quickly locate a key by using the `Fingerprint#matches` function. - -Parameters - -- `fingerprint` -- String, the fingerprint value, in any supported format -- `options` -- Optional Object, with properties: - - `algorithms` -- Array of strings, names of hash algorithms to limit - support to. If `fingerprint` uses a hash algorithm not on - this list, throws `InvalidAlgorithmError`. - - `hashType` -- String, the type of hash the fingerprint uses, either `ssh` - or `spki` (normally auto-detected based on the format, but - can be overridden) - - `type` -- String, the entity this fingerprint identifies, either `key` or - `certificate` - -### `Fingerprint.isFingerprint(obj)` - -Returns `true` if the given object is a valid `Fingerprint` object created by a -version of `sshpk` compatible with this one. - -Parameters - -- `obj` -- Object to identify - -### `Fingerprint#toString([format])` - -Returns a fingerprint as a string, in the given format. - -Parameters - -- `format` -- Optional String, format to use, valid options are `hex` and - `base64`. If this `Fingerprint` uses the `md5` algorithm, the - default format is `hex`. Otherwise, the default is `base64`. - -### `Fingerprint#matches(keyOrCertificate)` - -Verifies whether or not this `Fingerprint` matches a given `Key` or -`Certificate`. This function uses double-hashing to avoid leaking timing -information. Returns a boolean. - -Note that a `Key`-type Fingerprint will always return `false` if asked to match -a `Certificate` and vice versa. - -Parameters - -- `keyOrCertificate` -- a `Key` object or `Certificate` object, the entity to - match this fingerprint against - -## Signatures - -### `parseSignature(signature, algorithm, format)` - -Parses a signature in a given format, creating a `Signature` object. Useful -for converting between the SSH and ASN.1 (PKCS/OpenSSL) signature formats, and -also returned as output from `PrivateKey#createSign().sign()`. - -A Signature object can also be passed to a verifier produced by -`Key#createVerify()` and it will automatically be converted internally into the -correct format for verification. - -Parameters - -- `signature` -- a Buffer (binary) or String (base64), data of the actual - signature in the given format -- `algorithm` -- a String, name of the algorithm to be used, possible values - are `rsa`, `dsa`, `ecdsa` -- `format` -- a String, either `asn1` or `ssh` - -### `Signature.isSignature(obj)` - -Returns `true` if the given object is a valid `Signature` object created by a -version of `sshpk` compatible with this one. - -Parameters - -- `obj` -- Object to identify - -### `Signature#toBuffer([format = 'asn1'])` - -Converts a Signature to the given format and returns it as a Buffer. - -Parameters - -- `format` -- a String, either `asn1` or `ssh` - -### `Signature#toString([format = 'asn1'])` - -Same as `this.toBuffer(format).toString('base64')`. - -## Certificates - -`sshpk` includes basic support for parsing certificates in X.509 (PEM) format -and the OpenSSH certificate format. This feature is intended to be used mainly -to access basic metadata about certificates, extract public keys from them, and -also to generate simple self-signed certificates from an existing key. - -Notably, there is no implementation of CA chain-of-trust verification, and only -very minimal support for key usage restrictions. Please do the security world -a favour, and DO NOT use this code for certificate verification in the -traditional X.509 CA chain style. - -### `parseCertificate(data, format)` - -Parameters - - - `data` -- a Buffer or String - - `format` -- a String, format to use, one of `'openssh'`, `'pem'` (X.509 in a - PEM wrapper), or `'x509'` (raw DER encoded) - -### `createSelfSignedCertificate(subject, privateKey[, options])` - -Parameters - - - `subject` -- an Identity, the subject of the certificate - - `privateKey` -- a PrivateKey, the key of the subject: will be used both to be - placed in the certificate and also to sign it (since this is - a self-signed certificate) - - `options` -- optional Object, with keys: - - `lifetime` -- optional Number, lifetime of the certificate from now in - seconds - - `validFrom`, `validUntil` -- optional Dates, beginning and end of - certificate validity period. If given - `lifetime` will be ignored - - `serial` -- optional Buffer, the serial number of the certificate - - `purposes` -- optional Array of String, X.509 key usage restrictions - -### `createCertificate(subject, key, issuer, issuerKey[, options])` - -Parameters - - - `subject` -- an Identity, the subject of the certificate - - `key` -- a Key, the public key of the subject - - `issuer` -- an Identity, the issuer of the certificate who will sign it - - `issuerKey` -- a PrivateKey, the issuer's private key for signing - - `options` -- optional Object, with keys: - - `lifetime` -- optional Number, lifetime of the certificate from now in - seconds - - `validFrom`, `validUntil` -- optional Dates, beginning and end of - certificate validity period. If given - `lifetime` will be ignored - - `serial` -- optional Buffer, the serial number of the certificate - - `purposes` -- optional Array of String, X.509 key usage restrictions - -### `Certificate#subjects` - -Array of `Identity` instances describing the subject of this certificate. - -### `Certificate#issuer` - -The `Identity` of the Certificate's issuer (signer). - -### `Certificate#subjectKey` - -The public key of the subject of the certificate, as a `Key` instance. - -### `Certificate#issuerKey` - -The public key of the signing issuer of this certificate, as a `Key` instance. -May be `undefined` if the issuer's key is unknown (e.g. on an X509 certificate). - -### `Certificate#serial` - -The serial number of the certificate. As this is normally a 64-bit or wider -integer, it is returned as a Buffer. - -### `Certificate#purposes` - -Array of Strings indicating the X.509 key usage purposes that this certificate -is valid for. The possible strings at the moment are: - - * `'signature'` -- key can be used for digital signatures - * `'identity'` -- key can be used to attest about the identity of the signer - (X.509 calls this `nonRepudiation`) - * `'codeSigning'` -- key can be used to sign executable code - * `'keyEncryption'` -- key can be used to encrypt other keys - * `'encryption'` -- key can be used to encrypt data (only applies for RSA) - * `'keyAgreement'` -- key can be used for key exchange protocols such as - Diffie-Hellman - * `'ca'` -- key can be used to sign other certificates (is a Certificate - Authority) - * `'crl'` -- key can be used to sign Certificate Revocation Lists (CRLs) - -### `Certificate#getExtension(nameOrOid)` - -Retrieves information about a certificate extension, if present, or returns -`undefined` if not. The string argument `nameOrOid` should be either the OID -(for X509 extensions) or the name (for OpenSSH extensions) of the extension -to retrieve. - -The object returned will have the following properties: - - * `format` -- String, set to either `'x509'` or `'openssh'` - * `name` or `oid` -- String, only one set based on value of `format` - * `data` -- Buffer, the raw data inside the extension - -### `Certificate#getExtensions()` - -Returns an Array of all present certificate extensions, in the same manner and -format as `getExtension()`. - -### `Certificate#isExpired([when])` - -Tests whether the Certificate is currently expired (i.e. the `validFrom` and -`validUntil` dates specify a range of time that does not include the current -time). - -Parameters - - - `when` -- optional Date, if specified, tests whether the Certificate was or - will be expired at the specified time instead of now - -Returns a Boolean. - -### `Certificate#isSignedByKey(key)` - -Tests whether the Certificate was validly signed by the given (public) Key. - -Parameters - - - `key` -- a Key instance - -Returns a Boolean. - -### `Certificate#isSignedBy(certificate)` - -Tests whether this Certificate was validly signed by the subject of the given -certificate. Also tests that the issuer Identity of this Certificate and the -subject Identity of the other Certificate are equivalent. - -Parameters - - - `certificate` -- another Certificate instance - -Returns a Boolean. - -### `Certificate#fingerprint([hashAlgo])` - -Returns the X509-style fingerprint of the entire certificate (as a Fingerprint -instance). This matches what a web-browser or similar would display as the -certificate fingerprint and should not be confused with the fingerprint of the -subject's public key. - -Parameters - - - `hashAlgo` -- an optional String, any hash function name - -### `Certificate#toBuffer([format])` - -Serializes the Certificate to a Buffer and returns it. - -Parameters - - - `format` -- an optional String, output format, one of `'openssh'`, `'pem'` or - `'x509'`. Defaults to `'x509'`. - -Returns a Buffer. - -### `Certificate#toString([format])` - - - `format` -- an optional String, output format, one of `'openssh'`, `'pem'` or - `'x509'`. Defaults to `'pem'`. - -Returns a String. - -## Certificate identities - -### `identityForHost(hostname)` - -Constructs a host-type Identity for a given hostname. - -Parameters - - - `hostname` -- the fully qualified DNS name of the host - -Returns an Identity instance. - -### `identityForUser(uid)` - -Constructs a user-type Identity for a given UID. - -Parameters - - - `uid` -- a String, user identifier (login name) - -Returns an Identity instance. - -### `identityForEmail(email)` - -Constructs an email-type Identity for a given email address. - -Parameters - - - `email` -- a String, email address - -Returns an Identity instance. - -### `identityFromDN(dn)` - -Parses an LDAP-style DN string (e.g. `'CN=foo, C=US'`) and turns it into an -Identity instance. - -Parameters - - - `dn` -- a String - -Returns an Identity instance. - -### `identityFromArray(arr)` - -Constructs an Identity from an array of DN components (see `Identity#toArray()` -for the format). - -Parameters - - - `arr` -- an Array of Objects, DN components with `name` and `value` - -Returns an Identity instance. - - -Supported attributes in DNs: - -| Attribute name | OID | -| -------------- | --- | -| `cn` | `2.5.4.3` | -| `o` | `2.5.4.10` | -| `ou` | `2.5.4.11` | -| `l` | `2.5.4.7` | -| `s` | `2.5.4.8` | -| `c` | `2.5.4.6` | -| `sn` | `2.5.4.4` | -| `postalCode` | `2.5.4.17` | -| `serialNumber` | `2.5.4.5` | -| `street` | `2.5.4.9` | -| `x500UniqueIdentifier` | `2.5.4.45` | -| `role` | `2.5.4.72` | -| `telephoneNumber` | `2.5.4.20` | -| `description` | `2.5.4.13` | -| `dc` | `0.9.2342.19200300.100.1.25` | -| `uid` | `0.9.2342.19200300.100.1.1` | -| `mail` | `0.9.2342.19200300.100.1.3` | -| `title` | `2.5.4.12` | -| `gn` | `2.5.4.42` | -| `initials` | `2.5.4.43` | -| `pseudonym` | `2.5.4.65` | - -### `Identity#toString()` - -Returns the identity as an LDAP-style DN string. -e.g. `'CN=foo, O=bar corp, C=us'` - -### `Identity#type` - -The type of identity. One of `'host'`, `'user'`, `'email'` or `'unknown'` - -### `Identity#hostname` -### `Identity#uid` -### `Identity#email` - -Set when `type` is `'host'`, `'user'`, or `'email'`, respectively. Strings. - -### `Identity#cn` - -The value of the first `CN=` in the DN, if any. It's probably better to use -the `#get()` method instead of this property. - -### `Identity#get(name[, asArray])` - -Returns the value of a named attribute in the Identity DN. If there is no -attribute of the given name, returns `undefined`. If multiple components -of the DN contain an attribute of this name, an exception is thrown unless -the `asArray` argument is given as `true` -- then they will be returned as -an Array in the same order they appear in the DN. - -Parameters - - - `name` -- a String - - `asArray` -- an optional Boolean - -### `Identity#toArray()` - -Returns the Identity as an Array of DN component objects. This looks like: - -```js -[ { - "name": "cn", - "value": "Joe Bloggs" -}, -{ - "name": "o", - "value": "Organisation Ltd" -} ] -``` - -Each object has a `name` and a `value` property. The returned objects may be -safely modified. - -Errors ------- - -### `InvalidAlgorithmError` - -The specified algorithm is not valid, either because it is not supported, or -because it was not included on a list of allowed algorithms. - -Thrown by `Fingerprint.parse`, `Key#fingerprint`. - -Properties - -- `algorithm` -- the algorithm that could not be validated - -### `FingerprintFormatError` - -The fingerprint string given could not be parsed as a supported fingerprint -format, or the specified fingerprint format is invalid. - -Thrown by `Fingerprint.parse`, `Fingerprint#toString`. - -Properties - -- `fingerprint` -- if caused by a fingerprint, the string value given -- `format` -- if caused by an invalid format specification, the string value given - -### `KeyParseError` - -The key data given could not be parsed as a valid key. - -Properties - -- `keyName` -- `filename` that was given to `parseKey` -- `format` -- the `format` that was trying to parse the key (see `parseKey`) -- `innerErr` -- the inner Error thrown by the format parser - -### `KeyEncryptedError` - -The key is encrypted with a symmetric key (ie, it is password protected). The -parsing operation would succeed if it was given the `passphrase` option. - -Properties - -- `keyName` -- `filename` that was given to `parseKey` -- `format` -- the `format` that was trying to parse the key (currently can only - be `"pem"`) - -### `CertificateParseError` - -The certificate data given could not be parsed as a valid certificate. - -Properties - -- `certName` -- `filename` that was given to `parseCertificate` -- `format` -- the `format` that was trying to parse the key - (see `parseCertificate`) -- `innerErr` -- the inner Error thrown by the format parser - -Friends of sshpk ----------------- - - * [`sshpk-agent`](https://github.com/arekinath/node-sshpk-agent) is a library - for speaking the `ssh-agent` protocol from node.js, which uses `sshpk` diff --git a/node_modules/sshpk/bin/sshpk-conv b/node_modules/sshpk/bin/sshpk-conv deleted file mode 100755 index e839ede..0000000 --- a/node_modules/sshpk/bin/sshpk-conv +++ /dev/null @@ -1,243 +0,0 @@ -#!/usr/bin/env node -// -*- mode: js -*- -// vim: set filetype=javascript : -// Copyright 2018 Joyent, Inc. All rights reserved. - -var dashdash = require('dashdash'); -var sshpk = require('../lib/index'); -var fs = require('fs'); -var path = require('path'); -var tty = require('tty'); -var readline = require('readline'); -var getPassword = require('getpass').getPass; - -var options = [ - { - names: ['outformat', 't'], - type: 'string', - help: 'Output format' - }, - { - names: ['informat', 'T'], - type: 'string', - help: 'Input format' - }, - { - names: ['file', 'f'], - type: 'string', - help: 'Input file name (default stdin)' - }, - { - names: ['out', 'o'], - type: 'string', - help: 'Output file name (default stdout)' - }, - { - names: ['private', 'p'], - type: 'bool', - help: 'Produce a private key as output' - }, - { - names: ['derive', 'd'], - type: 'string', - help: 'Output a new key derived from this one, with given algo' - }, - { - names: ['identify', 'i'], - type: 'bool', - help: 'Print key metadata instead of converting' - }, - { - names: ['fingerprint', 'F'], - type: 'bool', - help: 'Output key fingerprint' - }, - { - names: ['hash', 'H'], - type: 'string', - help: 'Hash function to use for key fingeprint with -F' - }, - { - names: ['spki', 's'], - type: 'bool', - help: 'With -F, generates an SPKI fingerprint instead of SSH' - }, - { - names: ['comment', 'c'], - type: 'string', - help: 'Set key comment, if output format supports' - }, - { - names: ['help', 'h'], - type: 'bool', - help: 'Shows this help text' - } -]; - -if (require.main === module) { - var parser = dashdash.createParser({ - options: options - }); - - try { - var opts = parser.parse(process.argv); - } catch (e) { - console.error('sshpk-conv: error: %s', e.message); - process.exit(1); - } - - if (opts.help || opts._args.length > 1) { - var help = parser.help({}).trimRight(); - console.error('sshpk-conv: converts between SSH key formats\n'); - console.error(help); - console.error('\navailable key formats:'); - console.error(' - pem, pkcs1 eg id_rsa'); - console.error(' - ssh eg id_rsa.pub'); - console.error(' - pkcs8 format you want for openssl'); - console.error(' - openssh like output of ssh-keygen -o'); - console.error(' - rfc4253 raw OpenSSH wire format'); - console.error(' - dnssec dnssec-keygen format'); - console.error(' - putty PuTTY ppk format'); - console.error('\navailable fingerprint formats:'); - console.error(' - hex colon-separated hex for SSH'); - console.error(' straight hex for SPKI'); - console.error(' - base64 SHA256:* format from OpenSSH'); - process.exit(1); - } - - /* - * Key derivation can only be done on private keys, so use of the -d - * option necessarily implies -p. - */ - if (opts.derive) - opts.private = true; - - var inFile = process.stdin; - var inFileName = 'stdin'; - - var inFilePath; - if (opts.file) { - inFilePath = opts.file; - } else if (opts._args.length === 1) { - inFilePath = opts._args[0]; - } - - if (inFilePath) - inFileName = path.basename(inFilePath); - - try { - if (inFilePath) { - fs.accessSync(inFilePath, fs.R_OK); - inFile = fs.createReadStream(inFilePath); - } - } catch (e) { - ifError(e, 'error opening input file'); - } - - var outFile = process.stdout; - - try { - if (opts.out && !opts.identify) { - fs.accessSync(path.dirname(opts.out), fs.W_OK); - outFile = fs.createWriteStream(opts.out); - } - } catch (e) { - ifError(e, 'error opening output file'); - } - - var bufs = []; - inFile.on('readable', function () { - var data; - while ((data = inFile.read())) - bufs.push(data); - }); - var parseOpts = {}; - parseOpts.filename = inFileName; - inFile.on('end', function processKey() { - var buf = Buffer.concat(bufs); - var fmt = 'auto'; - if (opts.informat) - fmt = opts.informat; - var f = sshpk.parseKey; - if (opts.private) - f = sshpk.parsePrivateKey; - try { - var key = f(buf, fmt, parseOpts); - } catch (e) { - if (e.name === 'KeyEncryptedError') { - getPassword(function (err, pw) { - if (err) - ifError(err); - parseOpts.passphrase = pw; - processKey(); - }); - return; - } - ifError(e); - } - - if (opts.derive) - key = key.derive(opts.derive); - - if (opts.comment) - key.comment = opts.comment; - - if (opts.identify) { - var kind = 'public'; - if (sshpk.PrivateKey.isPrivateKey(key)) - kind = 'private'; - console.log('%s: a %d bit %s %s key', inFileName, - key.size, key.type.toUpperCase(), kind); - if (key.type === 'ecdsa') - console.log('ECDSA curve: %s', key.curve); - if (key.comment) - console.log('Comment: %s', key.comment); - console.log('SHA256 fingerprint: ' + - key.fingerprint('sha256').toString()); - console.log('MD5 fingerprint: ' + - key.fingerprint('md5').toString()); - console.log('SPKI-SHA256 fingerprint: ' + - key.fingerprint('sha256', 'spki').toString()); - process.exit(0); - return; - } - - if (opts.fingerprint) { - var hash = opts.hash; - var type = opts.spki ? 'spki' : 'ssh'; - var format = opts.outformat; - var fp = key.fingerprint(hash, type).toString(format); - outFile.write(fp); - outFile.write('\n'); - outFile.once('drain', function () { - process.exit(0); - }); - return; - } - - fmt = undefined; - if (opts.outformat) - fmt = opts.outformat; - outFile.write(key.toBuffer(fmt)); - if (fmt === 'ssh' || - (!opts.private && fmt === undefined)) - outFile.write('\n'); - outFile.once('drain', function () { - process.exit(0); - }); - }); -} - -function ifError(e, txt) { - if (txt) - txt = txt + ': '; - else - txt = ''; - console.error('sshpk-conv: ' + txt + e.name + ': ' + e.message); - if (process.env['DEBUG'] || process.env['V']) { - console.error(e.stack); - if (e.innerErr) - console.error(e.innerErr.stack); - } - process.exit(1); -} diff --git a/node_modules/sshpk/bin/sshpk-sign b/node_modules/sshpk/bin/sshpk-sign deleted file mode 100755 index 673fc98..0000000 --- a/node_modules/sshpk/bin/sshpk-sign +++ /dev/null @@ -1,191 +0,0 @@ -#!/usr/bin/env node -// -*- mode: js -*- -// vim: set filetype=javascript : -// Copyright 2015 Joyent, Inc. All rights reserved. - -var dashdash = require('dashdash'); -var sshpk = require('../lib/index'); -var fs = require('fs'); -var path = require('path'); -var getPassword = require('getpass').getPass; - -var options = [ - { - names: ['hash', 'H'], - type: 'string', - help: 'Hash algorithm (sha1, sha256, sha384, sha512)' - }, - { - names: ['verbose', 'v'], - type: 'bool', - help: 'Display verbose info about key and hash used' - }, - { - names: ['identity', 'i'], - type: 'string', - help: 'Path to key to use' - }, - { - names: ['file', 'f'], - type: 'string', - help: 'Input filename' - }, - { - names: ['out', 'o'], - type: 'string', - help: 'Output filename' - }, - { - names: ['format', 't'], - type: 'string', - help: 'Signature format (asn1, ssh, raw)' - }, - { - names: ['binary', 'b'], - type: 'bool', - help: 'Output raw binary instead of base64' - }, - { - names: ['help', 'h'], - type: 'bool', - help: 'Shows this help text' - } -]; - -var parseOpts = {}; - -if (require.main === module) { - var parser = dashdash.createParser({ - options: options - }); - - try { - var opts = parser.parse(process.argv); - } catch (e) { - console.error('sshpk-sign: error: %s', e.message); - process.exit(1); - } - - if (opts.help || opts._args.length > 1) { - var help = parser.help({}).trimRight(); - console.error('sshpk-sign: sign data using an SSH key\n'); - console.error(help); - process.exit(1); - } - - if (!opts.identity) { - var help = parser.help({}).trimRight(); - console.error('sshpk-sign: the -i or --identity option ' + - 'is required\n'); - console.error(help); - process.exit(1); - } - - var keyData = fs.readFileSync(opts.identity); - parseOpts.filename = opts.identity; - - run(); -} - -function run() { - var key; - try { - key = sshpk.parsePrivateKey(keyData, 'auto', parseOpts); - } catch (e) { - if (e.name === 'KeyEncryptedError') { - getPassword(function (err, pw) { - parseOpts.passphrase = pw; - run(); - }); - return; - } - console.error('sshpk-sign: error loading private key "' + - opts.identity + '": ' + e.name + ': ' + e.message); - process.exit(1); - } - - var hash = opts.hash || key.defaultHashAlgorithm(); - - var signer; - try { - signer = key.createSign(hash); - } catch (e) { - console.error('sshpk-sign: error creating signer: ' + - e.name + ': ' + e.message); - process.exit(1); - } - - if (opts.verbose) { - console.error('sshpk-sign: using %s-%s with a %d bit key', - key.type, hash, key.size); - } - - var inFile = process.stdin; - var inFileName = 'stdin'; - - var inFilePath; - if (opts.file) { - inFilePath = opts.file; - } else if (opts._args.length === 1) { - inFilePath = opts._args[0]; - } - - if (inFilePath) - inFileName = path.basename(inFilePath); - - try { - if (inFilePath) { - fs.accessSync(inFilePath, fs.R_OK); - inFile = fs.createReadStream(inFilePath); - } - } catch (e) { - console.error('sshpk-sign: error opening input file' + - ': ' + e.name + ': ' + e.message); - process.exit(1); - } - - var outFile = process.stdout; - - try { - if (opts.out && !opts.identify) { - fs.accessSync(path.dirname(opts.out), fs.W_OK); - outFile = fs.createWriteStream(opts.out); - } - } catch (e) { - console.error('sshpk-sign: error opening output file' + - ': ' + e.name + ': ' + e.message); - process.exit(1); - } - - inFile.pipe(signer); - inFile.on('end', function () { - var sig; - try { - sig = signer.sign(); - } catch (e) { - console.error('sshpk-sign: error signing data: ' + - e.name + ': ' + e.message); - process.exit(1); - } - - var fmt = opts.format || 'asn1'; - var output; - try { - output = sig.toBuffer(fmt); - if (!opts.binary) - output = output.toString('base64'); - } catch (e) { - console.error('sshpk-sign: error converting signature' + - ' to ' + fmt + ' format: ' + e.name + ': ' + - e.message); - process.exit(1); - } - - outFile.write(output); - if (!opts.binary) - outFile.write('\n'); - outFile.once('drain', function () { - process.exit(0); - }); - }); -} diff --git a/node_modules/sshpk/bin/sshpk-verify b/node_modules/sshpk/bin/sshpk-verify deleted file mode 100755 index fc71a82..0000000 --- a/node_modules/sshpk/bin/sshpk-verify +++ /dev/null @@ -1,167 +0,0 @@ -#!/usr/bin/env node -// -*- mode: js -*- -// vim: set filetype=javascript : -// Copyright 2015 Joyent, Inc. All rights reserved. - -var dashdash = require('dashdash'); -var sshpk = require('../lib/index'); -var fs = require('fs'); -var path = require('path'); -var Buffer = require('safer-buffer').Buffer; - -var options = [ - { - names: ['hash', 'H'], - type: 'string', - help: 'Hash algorithm (sha1, sha256, sha384, sha512)' - }, - { - names: ['verbose', 'v'], - type: 'bool', - help: 'Display verbose info about key and hash used' - }, - { - names: ['identity', 'i'], - type: 'string', - help: 'Path to (public) key to use' - }, - { - names: ['file', 'f'], - type: 'string', - help: 'Input filename' - }, - { - names: ['format', 't'], - type: 'string', - help: 'Signature format (asn1, ssh, raw)' - }, - { - names: ['signature', 's'], - type: 'string', - help: 'base64-encoded signature data' - }, - { - names: ['help', 'h'], - type: 'bool', - help: 'Shows this help text' - } -]; - -if (require.main === module) { - var parser = dashdash.createParser({ - options: options - }); - - try { - var opts = parser.parse(process.argv); - } catch (e) { - console.error('sshpk-verify: error: %s', e.message); - process.exit(3); - } - - if (opts.help || opts._args.length > 1) { - var help = parser.help({}).trimRight(); - console.error('sshpk-verify: sign data using an SSH key\n'); - console.error(help); - process.exit(3); - } - - if (!opts.identity) { - var help = parser.help({}).trimRight(); - console.error('sshpk-verify: the -i or --identity option ' + - 'is required\n'); - console.error(help); - process.exit(3); - } - - if (!opts.signature) { - var help = parser.help({}).trimRight(); - console.error('sshpk-verify: the -s or --signature option ' + - 'is required\n'); - console.error(help); - process.exit(3); - } - - var keyData = fs.readFileSync(opts.identity); - - var key; - try { - key = sshpk.parseKey(keyData); - } catch (e) { - console.error('sshpk-verify: error loading key "' + - opts.identity + '": ' + e.name + ': ' + e.message); - process.exit(2); - } - - var fmt = opts.format || 'asn1'; - var sigData = Buffer.from(opts.signature, 'base64'); - - var sig; - try { - sig = sshpk.parseSignature(sigData, key.type, fmt); - } catch (e) { - console.error('sshpk-verify: error parsing signature: ' + - e.name + ': ' + e.message); - process.exit(2); - } - - var hash = opts.hash || key.defaultHashAlgorithm(); - - var verifier; - try { - verifier = key.createVerify(hash); - } catch (e) { - console.error('sshpk-verify: error creating verifier: ' + - e.name + ': ' + e.message); - process.exit(2); - } - - if (opts.verbose) { - console.error('sshpk-verify: using %s-%s with a %d bit key', - key.type, hash, key.size); - } - - var inFile = process.stdin; - var inFileName = 'stdin'; - - var inFilePath; - if (opts.file) { - inFilePath = opts.file; - } else if (opts._args.length === 1) { - inFilePath = opts._args[0]; - } - - if (inFilePath) - inFileName = path.basename(inFilePath); - - try { - if (inFilePath) { - fs.accessSync(inFilePath, fs.R_OK); - inFile = fs.createReadStream(inFilePath); - } - } catch (e) { - console.error('sshpk-verify: error opening input file' + - ': ' + e.name + ': ' + e.message); - process.exit(2); - } - - inFile.pipe(verifier); - inFile.on('end', function () { - var ret; - try { - ret = verifier.verify(sig); - } catch (e) { - console.error('sshpk-verify: error verifying data: ' + - e.name + ': ' + e.message); - process.exit(1); - } - - if (ret) { - console.error('OK'); - process.exit(0); - } - - console.error('NOT OK'); - process.exit(1); - }); -} diff --git a/node_modules/sshpk/lib/algs.js b/node_modules/sshpk/lib/algs.js deleted file mode 100644 index 3b01e7d..0000000 --- a/node_modules/sshpk/lib/algs.js +++ /dev/null @@ -1,168 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -var Buffer = require('safer-buffer').Buffer; - -var algInfo = { - 'dsa': { - parts: ['p', 'q', 'g', 'y'], - sizePart: 'p' - }, - 'rsa': { - parts: ['e', 'n'], - sizePart: 'n' - }, - 'ecdsa': { - parts: ['curve', 'Q'], - sizePart: 'Q' - }, - 'ed25519': { - parts: ['A'], - sizePart: 'A' - } -}; -algInfo['curve25519'] = algInfo['ed25519']; - -var algPrivInfo = { - 'dsa': { - parts: ['p', 'q', 'g', 'y', 'x'] - }, - 'rsa': { - parts: ['n', 'e', 'd', 'iqmp', 'p', 'q'] - }, - 'ecdsa': { - parts: ['curve', 'Q', 'd'] - }, - 'ed25519': { - parts: ['A', 'k'] - } -}; -algPrivInfo['curve25519'] = algPrivInfo['ed25519']; - -var hashAlgs = { - 'md5': true, - 'sha1': true, - 'sha256': true, - 'sha384': true, - 'sha512': true -}; - -/* - * Taken from - * http://csrc.nist.gov/groups/ST/toolkit/documents/dss/NISTReCur.pdf - */ -var curves = { - 'nistp256': { - size: 256, - pkcs8oid: '1.2.840.10045.3.1.7', - p: Buffer.from(('00' + - 'ffffffff 00000001 00000000 00000000' + - '00000000 ffffffff ffffffff ffffffff'). - replace(/ /g, ''), 'hex'), - a: Buffer.from(('00' + - 'FFFFFFFF 00000001 00000000 00000000' + - '00000000 FFFFFFFF FFFFFFFF FFFFFFFC'). - replace(/ /g, ''), 'hex'), - b: Buffer.from(( - '5ac635d8 aa3a93e7 b3ebbd55 769886bc' + - '651d06b0 cc53b0f6 3bce3c3e 27d2604b'). - replace(/ /g, ''), 'hex'), - s: Buffer.from(('00' + - 'c49d3608 86e70493 6a6678e1 139d26b7' + - '819f7e90'). - replace(/ /g, ''), 'hex'), - n: Buffer.from(('00' + - 'ffffffff 00000000 ffffffff ffffffff' + - 'bce6faad a7179e84 f3b9cac2 fc632551'). - replace(/ /g, ''), 'hex'), - G: Buffer.from(('04' + - '6b17d1f2 e12c4247 f8bce6e5 63a440f2' + - '77037d81 2deb33a0 f4a13945 d898c296' + - '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16' + - '2bce3357 6b315ece cbb64068 37bf51f5'). - replace(/ /g, ''), 'hex') - }, - 'nistp384': { - size: 384, - pkcs8oid: '1.3.132.0.34', - p: Buffer.from(('00' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff fffffffe' + - 'ffffffff 00000000 00000000 ffffffff'). - replace(/ /g, ''), 'hex'), - a: Buffer.from(('00' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE' + - 'FFFFFFFF 00000000 00000000 FFFFFFFC'). - replace(/ /g, ''), 'hex'), - b: Buffer.from(( - 'b3312fa7 e23ee7e4 988e056b e3f82d19' + - '181d9c6e fe814112 0314088f 5013875a' + - 'c656398d 8a2ed19d 2a85c8ed d3ec2aef'). - replace(/ /g, ''), 'hex'), - s: Buffer.from(('00' + - 'a335926a a319a27a 1d00896a 6773a482' + - '7acdac73'). - replace(/ /g, ''), 'hex'), - n: Buffer.from(('00' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff c7634d81 f4372ddf' + - '581a0db2 48b0a77a ecec196a ccc52973'). - replace(/ /g, ''), 'hex'), - G: Buffer.from(('04' + - 'aa87ca22 be8b0537 8eb1c71e f320ad74' + - '6e1d3b62 8ba79b98 59f741e0 82542a38' + - '5502f25d bf55296c 3a545e38 72760ab7' + - '3617de4a 96262c6f 5d9e98bf 9292dc29' + - 'f8f41dbd 289a147c e9da3113 b5f0b8c0' + - '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'). - replace(/ /g, ''), 'hex') - }, - 'nistp521': { - size: 521, - pkcs8oid: '1.3.132.0.35', - p: Buffer.from(( - '01ffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffff').replace(/ /g, ''), 'hex'), - a: Buffer.from(('01FF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFC'). - replace(/ /g, ''), 'hex'), - b: Buffer.from(('51' + - '953eb961 8e1c9a1f 929a21a0 b68540ee' + - 'a2da725b 99b315f3 b8b48991 8ef109e1' + - '56193951 ec7e937b 1652c0bd 3bb1bf07' + - '3573df88 3d2c34f1 ef451fd4 6b503f00'). - replace(/ /g, ''), 'hex'), - s: Buffer.from(('00' + - 'd09e8800 291cb853 96cc6717 393284aa' + - 'a0da64ba').replace(/ /g, ''), 'hex'), - n: Buffer.from(('01ff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff fffffffa' + - '51868783 bf2f966b 7fcc0148 f709a5d0' + - '3bb5c9b8 899c47ae bb6fb71e 91386409'). - replace(/ /g, ''), 'hex'), - G: Buffer.from(('04' + - '00c6 858e06b7 0404e9cd 9e3ecb66 2395b442' + - '9c648139 053fb521 f828af60 6b4d3dba' + - 'a14b5e77 efe75928 fe1dc127 a2ffa8de' + - '3348b3c1 856a429b f97e7e31 c2e5bd66' + - '0118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9' + - '98f54449 579b4468 17afbd17 273e662c' + - '97ee7299 5ef42640 c550b901 3fad0761' + - '353c7086 a272c240 88be9476 9fd16650'). - replace(/ /g, ''), 'hex') - } -}; - -module.exports = { - info: algInfo, - privInfo: algPrivInfo, - hashAlgs: hashAlgs, - curves: curves -}; diff --git a/node_modules/sshpk/lib/certificate.js b/node_modules/sshpk/lib/certificate.js deleted file mode 100644 index 6932357..0000000 --- a/node_modules/sshpk/lib/certificate.js +++ /dev/null @@ -1,410 +0,0 @@ -// Copyright 2016 Joyent, Inc. - -module.exports = Certificate; - -var assert = require('assert-plus'); -var Buffer = require('safer-buffer').Buffer; -var algs = require('./algs'); -var crypto = require('crypto'); -var Fingerprint = require('./fingerprint'); -var Signature = require('./signature'); -var errs = require('./errors'); -var util = require('util'); -var utils = require('./utils'); -var Key = require('./key'); -var PrivateKey = require('./private-key'); -var Identity = require('./identity'); - -var formats = {}; -formats['openssh'] = require('./formats/openssh-cert'); -formats['x509'] = require('./formats/x509'); -formats['pem'] = require('./formats/x509-pem'); - -var CertificateParseError = errs.CertificateParseError; -var InvalidAlgorithmError = errs.InvalidAlgorithmError; - -function Certificate(opts) { - assert.object(opts, 'options'); - assert.arrayOfObject(opts.subjects, 'options.subjects'); - utils.assertCompatible(opts.subjects[0], Identity, [1, 0], - 'options.subjects'); - utils.assertCompatible(opts.subjectKey, Key, [1, 0], - 'options.subjectKey'); - utils.assertCompatible(opts.issuer, Identity, [1, 0], 'options.issuer'); - if (opts.issuerKey !== undefined) { - utils.assertCompatible(opts.issuerKey, Key, [1, 0], - 'options.issuerKey'); - } - assert.object(opts.signatures, 'options.signatures'); - assert.buffer(opts.serial, 'options.serial'); - assert.date(opts.validFrom, 'options.validFrom'); - assert.date(opts.validUntil, 'optons.validUntil'); - - assert.optionalArrayOfString(opts.purposes, 'options.purposes'); - - this._hashCache = {}; - - this.subjects = opts.subjects; - this.issuer = opts.issuer; - this.subjectKey = opts.subjectKey; - this.issuerKey = opts.issuerKey; - this.signatures = opts.signatures; - this.serial = opts.serial; - this.validFrom = opts.validFrom; - this.validUntil = opts.validUntil; - this.purposes = opts.purposes; -} - -Certificate.formats = formats; - -Certificate.prototype.toBuffer = function (format, options) { - if (format === undefined) - format = 'x509'; - assert.string(format, 'format'); - assert.object(formats[format], 'formats[format]'); - assert.optionalObject(options, 'options'); - - return (formats[format].write(this, options)); -}; - -Certificate.prototype.toString = function (format, options) { - if (format === undefined) - format = 'pem'; - return (this.toBuffer(format, options).toString()); -}; - -Certificate.prototype.fingerprint = function (algo) { - if (algo === undefined) - algo = 'sha256'; - assert.string(algo, 'algorithm'); - var opts = { - type: 'certificate', - hash: this.hash(algo), - algorithm: algo - }; - return (new Fingerprint(opts)); -}; - -Certificate.prototype.hash = function (algo) { - assert.string(algo, 'algorithm'); - algo = algo.toLowerCase(); - if (algs.hashAlgs[algo] === undefined) - throw (new InvalidAlgorithmError(algo)); - - if (this._hashCache[algo]) - return (this._hashCache[algo]); - - var hash = crypto.createHash(algo). - update(this.toBuffer('x509')).digest(); - this._hashCache[algo] = hash; - return (hash); -}; - -Certificate.prototype.isExpired = function (when) { - if (when === undefined) - when = new Date(); - return (!((when.getTime() >= this.validFrom.getTime()) && - (when.getTime() < this.validUntil.getTime()))); -}; - -Certificate.prototype.isSignedBy = function (issuerCert) { - utils.assertCompatible(issuerCert, Certificate, [1, 0], 'issuer'); - - if (!this.issuer.equals(issuerCert.subjects[0])) - return (false); - if (this.issuer.purposes && this.issuer.purposes.length > 0 && - this.issuer.purposes.indexOf('ca') === -1) { - return (false); - } - - return (this.isSignedByKey(issuerCert.subjectKey)); -}; - -Certificate.prototype.getExtension = function (keyOrOid) { - assert.string(keyOrOid, 'keyOrOid'); - var ext = this.getExtensions().filter(function (maybeExt) { - if (maybeExt.format === 'x509') - return (maybeExt.oid === keyOrOid); - if (maybeExt.format === 'openssh') - return (maybeExt.name === keyOrOid); - return (false); - })[0]; - return (ext); -}; - -Certificate.prototype.getExtensions = function () { - var exts = []; - var x509 = this.signatures.x509; - if (x509 && x509.extras && x509.extras.exts) { - x509.extras.exts.forEach(function (ext) { - ext.format = 'x509'; - exts.push(ext); - }); - } - var openssh = this.signatures.openssh; - if (openssh && openssh.exts) { - openssh.exts.forEach(function (ext) { - ext.format = 'openssh'; - exts.push(ext); - }); - } - return (exts); -}; - -Certificate.prototype.isSignedByKey = function (issuerKey) { - utils.assertCompatible(issuerKey, Key, [1, 2], 'issuerKey'); - - if (this.issuerKey !== undefined) { - return (this.issuerKey. - fingerprint('sha512').matches(issuerKey)); - } - - var fmt = Object.keys(this.signatures)[0]; - var valid = formats[fmt].verify(this, issuerKey); - if (valid) - this.issuerKey = issuerKey; - return (valid); -}; - -Certificate.prototype.signWith = function (key) { - utils.assertCompatible(key, PrivateKey, [1, 2], 'key'); - var fmts = Object.keys(formats); - var didOne = false; - for (var i = 0; i < fmts.length; ++i) { - if (fmts[i] !== 'pem') { - var ret = formats[fmts[i]].sign(this, key); - if (ret === true) - didOne = true; - } - } - if (!didOne) { - throw (new Error('Failed to sign the certificate for any ' + - 'available certificate formats')); - } -}; - -Certificate.createSelfSigned = function (subjectOrSubjects, key, options) { - var subjects; - if (Array.isArray(subjectOrSubjects)) - subjects = subjectOrSubjects; - else - subjects = [subjectOrSubjects]; - - assert.arrayOfObject(subjects); - subjects.forEach(function (subject) { - utils.assertCompatible(subject, Identity, [1, 0], 'subject'); - }); - - utils.assertCompatible(key, PrivateKey, [1, 2], 'private key'); - - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalObject(options.validFrom, 'options.validFrom'); - assert.optionalObject(options.validUntil, 'options.validUntil'); - var validFrom = options.validFrom; - var validUntil = options.validUntil; - if (validFrom === undefined) - validFrom = new Date(); - if (validUntil === undefined) { - assert.optionalNumber(options.lifetime, 'options.lifetime'); - var lifetime = options.lifetime; - if (lifetime === undefined) - lifetime = 10*365*24*3600; - validUntil = new Date(); - validUntil.setTime(validUntil.getTime() + lifetime*1000); - } - assert.optionalBuffer(options.serial, 'options.serial'); - var serial = options.serial; - if (serial === undefined) - serial = Buffer.from('0000000000000001', 'hex'); - - var purposes = options.purposes; - if (purposes === undefined) - purposes = []; - - if (purposes.indexOf('signature') === -1) - purposes.push('signature'); - - /* Self-signed certs are always CAs. */ - if (purposes.indexOf('ca') === -1) - purposes.push('ca'); - if (purposes.indexOf('crl') === -1) - purposes.push('crl'); - - /* - * If we weren't explicitly given any other purposes, do the sensible - * thing and add some basic ones depending on the subject type. - */ - if (purposes.length <= 3) { - var hostSubjects = subjects.filter(function (subject) { - return (subject.type === 'host'); - }); - var userSubjects = subjects.filter(function (subject) { - return (subject.type === 'user'); - }); - if (hostSubjects.length > 0) { - if (purposes.indexOf('serverAuth') === -1) - purposes.push('serverAuth'); - } - if (userSubjects.length > 0) { - if (purposes.indexOf('clientAuth') === -1) - purposes.push('clientAuth'); - } - if (userSubjects.length > 0 || hostSubjects.length > 0) { - if (purposes.indexOf('keyAgreement') === -1) - purposes.push('keyAgreement'); - if (key.type === 'rsa' && - purposes.indexOf('encryption') === -1) - purposes.push('encryption'); - } - } - - var cert = new Certificate({ - subjects: subjects, - issuer: subjects[0], - subjectKey: key.toPublic(), - issuerKey: key.toPublic(), - signatures: {}, - serial: serial, - validFrom: validFrom, - validUntil: validUntil, - purposes: purposes - }); - cert.signWith(key); - - return (cert); -}; - -Certificate.create = - function (subjectOrSubjects, key, issuer, issuerKey, options) { - var subjects; - if (Array.isArray(subjectOrSubjects)) - subjects = subjectOrSubjects; - else - subjects = [subjectOrSubjects]; - - assert.arrayOfObject(subjects); - subjects.forEach(function (subject) { - utils.assertCompatible(subject, Identity, [1, 0], 'subject'); - }); - - utils.assertCompatible(key, Key, [1, 0], 'key'); - if (PrivateKey.isPrivateKey(key)) - key = key.toPublic(); - utils.assertCompatible(issuer, Identity, [1, 0], 'issuer'); - utils.assertCompatible(issuerKey, PrivateKey, [1, 2], 'issuer key'); - - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalObject(options.validFrom, 'options.validFrom'); - assert.optionalObject(options.validUntil, 'options.validUntil'); - var validFrom = options.validFrom; - var validUntil = options.validUntil; - if (validFrom === undefined) - validFrom = new Date(); - if (validUntil === undefined) { - assert.optionalNumber(options.lifetime, 'options.lifetime'); - var lifetime = options.lifetime; - if (lifetime === undefined) - lifetime = 10*365*24*3600; - validUntil = new Date(); - validUntil.setTime(validUntil.getTime() + lifetime*1000); - } - assert.optionalBuffer(options.serial, 'options.serial'); - var serial = options.serial; - if (serial === undefined) - serial = Buffer.from('0000000000000001', 'hex'); - - var purposes = options.purposes; - if (purposes === undefined) - purposes = []; - - if (purposes.indexOf('signature') === -1) - purposes.push('signature'); - - if (options.ca === true) { - if (purposes.indexOf('ca') === -1) - purposes.push('ca'); - if (purposes.indexOf('crl') === -1) - purposes.push('crl'); - } - - var hostSubjects = subjects.filter(function (subject) { - return (subject.type === 'host'); - }); - var userSubjects = subjects.filter(function (subject) { - return (subject.type === 'user'); - }); - if (hostSubjects.length > 0) { - if (purposes.indexOf('serverAuth') === -1) - purposes.push('serverAuth'); - } - if (userSubjects.length > 0) { - if (purposes.indexOf('clientAuth') === -1) - purposes.push('clientAuth'); - } - if (userSubjects.length > 0 || hostSubjects.length > 0) { - if (purposes.indexOf('keyAgreement') === -1) - purposes.push('keyAgreement'); - if (key.type === 'rsa' && - purposes.indexOf('encryption') === -1) - purposes.push('encryption'); - } - - var cert = new Certificate({ - subjects: subjects, - issuer: issuer, - subjectKey: key, - issuerKey: issuerKey.toPublic(), - signatures: {}, - serial: serial, - validFrom: validFrom, - validUntil: validUntil, - purposes: purposes - }); - cert.signWith(issuerKey); - - return (cert); -}; - -Certificate.parse = function (data, format, options) { - if (typeof (data) !== 'string') - assert.buffer(data, 'data'); - if (format === undefined) - format = 'auto'; - assert.string(format, 'format'); - if (typeof (options) === 'string') - options = { filename: options }; - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalString(options.filename, 'options.filename'); - if (options.filename === undefined) - options.filename = '(unnamed)'; - - assert.object(formats[format], 'formats[format]'); - - try { - var k = formats[format].read(data, options); - return (k); - } catch (e) { - throw (new CertificateParseError(options.filename, format, e)); - } -}; - -Certificate.isCertificate = function (obj, ver) { - return (utils.isCompatible(obj, Certificate, ver)); -}; - -/* - * API versions for Certificate: - * [1,0] -- initial ver - * [1,1] -- openssh format now unpacks extensions - */ -Certificate.prototype._sshpkApiVersion = [1, 1]; - -Certificate._oldVersionDetect = function (obj) { - return ([1, 0]); -}; diff --git a/node_modules/sshpk/lib/dhe.js b/node_modules/sshpk/lib/dhe.js deleted file mode 100644 index a3c8032..0000000 --- a/node_modules/sshpk/lib/dhe.js +++ /dev/null @@ -1,397 +0,0 @@ -// Copyright 2017 Joyent, Inc. - -module.exports = { - DiffieHellman: DiffieHellman, - generateECDSA: generateECDSA, - generateED25519: generateED25519 -}; - -var assert = require('assert-plus'); -var crypto = require('crypto'); -var Buffer = require('safer-buffer').Buffer; -var algs = require('./algs'); -var utils = require('./utils'); -var nacl = require('tweetnacl'); - -var Key = require('./key'); -var PrivateKey = require('./private-key'); - -var CRYPTO_HAVE_ECDH = (crypto.createECDH !== undefined); - -var ecdh = require('ecc-jsbn'); -var ec = require('ecc-jsbn/lib/ec'); -var jsbn = require('jsbn').BigInteger; - -function DiffieHellman(key) { - utils.assertCompatible(key, Key, [1, 4], 'key'); - this._isPriv = PrivateKey.isPrivateKey(key, [1, 3]); - this._algo = key.type; - this._curve = key.curve; - this._key = key; - if (key.type === 'dsa') { - if (!CRYPTO_HAVE_ECDH) { - throw (new Error('Due to bugs in the node 0.10 ' + - 'crypto API, node 0.12.x or later is required ' + - 'to use DH')); - } - this._dh = crypto.createDiffieHellman( - key.part.p.data, undefined, - key.part.g.data, undefined); - this._p = key.part.p; - this._g = key.part.g; - if (this._isPriv) - this._dh.setPrivateKey(key.part.x.data); - this._dh.setPublicKey(key.part.y.data); - - } else if (key.type === 'ecdsa') { - if (!CRYPTO_HAVE_ECDH) { - this._ecParams = new X9ECParameters(this._curve); - - if (this._isPriv) { - this._priv = new ECPrivate( - this._ecParams, key.part.d.data); - } - return; - } - - var curve = { - 'nistp256': 'prime256v1', - 'nistp384': 'secp384r1', - 'nistp521': 'secp521r1' - }[key.curve]; - this._dh = crypto.createECDH(curve); - if (typeof (this._dh) !== 'object' || - typeof (this._dh.setPrivateKey) !== 'function') { - CRYPTO_HAVE_ECDH = false; - DiffieHellman.call(this, key); - return; - } - if (this._isPriv) - this._dh.setPrivateKey(key.part.d.data); - this._dh.setPublicKey(key.part.Q.data); - - } else if (key.type === 'curve25519') { - if (this._isPriv) { - utils.assertCompatible(key, PrivateKey, [1, 5], 'key'); - this._priv = key.part.k.data; - } - - } else { - throw (new Error('DH not supported for ' + key.type + ' keys')); - } -} - -DiffieHellman.prototype.getPublicKey = function () { - if (this._isPriv) - return (this._key.toPublic()); - return (this._key); -}; - -DiffieHellman.prototype.getPrivateKey = function () { - if (this._isPriv) - return (this._key); - else - return (undefined); -}; -DiffieHellman.prototype.getKey = DiffieHellman.prototype.getPrivateKey; - -DiffieHellman.prototype._keyCheck = function (pk, isPub) { - assert.object(pk, 'key'); - if (!isPub) - utils.assertCompatible(pk, PrivateKey, [1, 3], 'key'); - utils.assertCompatible(pk, Key, [1, 4], 'key'); - - if (pk.type !== this._algo) { - throw (new Error('A ' + pk.type + ' key cannot be used in ' + - this._algo + ' Diffie-Hellman')); - } - - if (pk.curve !== this._curve) { - throw (new Error('A key from the ' + pk.curve + ' curve ' + - 'cannot be used with a ' + this._curve + - ' Diffie-Hellman')); - } - - if (pk.type === 'dsa') { - assert.deepEqual(pk.part.p, this._p, - 'DSA key prime does not match'); - assert.deepEqual(pk.part.g, this._g, - 'DSA key generator does not match'); - } -}; - -DiffieHellman.prototype.setKey = function (pk) { - this._keyCheck(pk); - - if (pk.type === 'dsa') { - this._dh.setPrivateKey(pk.part.x.data); - this._dh.setPublicKey(pk.part.y.data); - - } else if (pk.type === 'ecdsa') { - if (CRYPTO_HAVE_ECDH) { - this._dh.setPrivateKey(pk.part.d.data); - this._dh.setPublicKey(pk.part.Q.data); - } else { - this._priv = new ECPrivate( - this._ecParams, pk.part.d.data); - } - - } else if (pk.type === 'curve25519') { - var k = pk.part.k; - if (!pk.part.k) - k = pk.part.r; - this._priv = k.data; - if (this._priv[0] === 0x00) - this._priv = this._priv.slice(1); - this._priv = this._priv.slice(0, 32); - } - this._key = pk; - this._isPriv = true; -}; -DiffieHellman.prototype.setPrivateKey = DiffieHellman.prototype.setKey; - -DiffieHellman.prototype.computeSecret = function (otherpk) { - this._keyCheck(otherpk, true); - if (!this._isPriv) - throw (new Error('DH exchange has not been initialized with ' + - 'a private key yet')); - - var pub; - if (this._algo === 'dsa') { - return (this._dh.computeSecret( - otherpk.part.y.data)); - - } else if (this._algo === 'ecdsa') { - if (CRYPTO_HAVE_ECDH) { - return (this._dh.computeSecret( - otherpk.part.Q.data)); - } else { - pub = new ECPublic( - this._ecParams, otherpk.part.Q.data); - return (this._priv.deriveSharedSecret(pub)); - } - - } else if (this._algo === 'curve25519') { - pub = otherpk.part.A.data; - while (pub[0] === 0x00 && pub.length > 32) - pub = pub.slice(1); - var priv = this._priv; - assert.strictEqual(pub.length, 32); - assert.strictEqual(priv.length, 32); - - var secret = nacl.box.before(new Uint8Array(pub), - new Uint8Array(priv)); - - return (Buffer.from(secret)); - } - - throw (new Error('Invalid algorithm: ' + this._algo)); -}; - -DiffieHellman.prototype.generateKey = function () { - var parts = []; - var priv, pub; - if (this._algo === 'dsa') { - this._dh.generateKeys(); - - parts.push({name: 'p', data: this._p.data}); - parts.push({name: 'q', data: this._key.part.q.data}); - parts.push({name: 'g', data: this._g.data}); - parts.push({name: 'y', data: this._dh.getPublicKey()}); - parts.push({name: 'x', data: this._dh.getPrivateKey()}); - this._key = new PrivateKey({ - type: 'dsa', - parts: parts - }); - this._isPriv = true; - return (this._key); - - } else if (this._algo === 'ecdsa') { - if (CRYPTO_HAVE_ECDH) { - this._dh.generateKeys(); - - parts.push({name: 'curve', - data: Buffer.from(this._curve)}); - parts.push({name: 'Q', data: this._dh.getPublicKey()}); - parts.push({name: 'd', data: this._dh.getPrivateKey()}); - this._key = new PrivateKey({ - type: 'ecdsa', - curve: this._curve, - parts: parts - }); - this._isPriv = true; - return (this._key); - - } else { - var n = this._ecParams.getN(); - var r = new jsbn(crypto.randomBytes(n.bitLength())); - var n1 = n.subtract(jsbn.ONE); - priv = r.mod(n1).add(jsbn.ONE); - pub = this._ecParams.getG().multiply(priv); - - priv = Buffer.from(priv.toByteArray()); - pub = Buffer.from(this._ecParams.getCurve(). - encodePointHex(pub), 'hex'); - - this._priv = new ECPrivate(this._ecParams, priv); - - parts.push({name: 'curve', - data: Buffer.from(this._curve)}); - parts.push({name: 'Q', data: pub}); - parts.push({name: 'd', data: priv}); - - this._key = new PrivateKey({ - type: 'ecdsa', - curve: this._curve, - parts: parts - }); - this._isPriv = true; - return (this._key); - } - - } else if (this._algo === 'curve25519') { - var pair = nacl.box.keyPair(); - priv = Buffer.from(pair.secretKey); - pub = Buffer.from(pair.publicKey); - priv = Buffer.concat([priv, pub]); - assert.strictEqual(priv.length, 64); - assert.strictEqual(pub.length, 32); - - parts.push({name: 'A', data: pub}); - parts.push({name: 'k', data: priv}); - this._key = new PrivateKey({ - type: 'curve25519', - parts: parts - }); - this._isPriv = true; - return (this._key); - } - - throw (new Error('Invalid algorithm: ' + this._algo)); -}; -DiffieHellman.prototype.generateKeys = DiffieHellman.prototype.generateKey; - -/* These are helpers for using ecc-jsbn (for node 0.10 compatibility). */ - -function X9ECParameters(name) { - var params = algs.curves[name]; - assert.object(params); - - var p = new jsbn(params.p); - var a = new jsbn(params.a); - var b = new jsbn(params.b); - var n = new jsbn(params.n); - var h = jsbn.ONE; - var curve = new ec.ECCurveFp(p, a, b); - var G = curve.decodePointHex(params.G.toString('hex')); - - this.curve = curve; - this.g = G; - this.n = n; - this.h = h; -} -X9ECParameters.prototype.getCurve = function () { return (this.curve); }; -X9ECParameters.prototype.getG = function () { return (this.g); }; -X9ECParameters.prototype.getN = function () { return (this.n); }; -X9ECParameters.prototype.getH = function () { return (this.h); }; - -function ECPublic(params, buffer) { - this._params = params; - if (buffer[0] === 0x00) - buffer = buffer.slice(1); - this._pub = params.getCurve().decodePointHex(buffer.toString('hex')); -} - -function ECPrivate(params, buffer) { - this._params = params; - this._priv = new jsbn(utils.mpNormalize(buffer)); -} -ECPrivate.prototype.deriveSharedSecret = function (pubKey) { - assert.ok(pubKey instanceof ECPublic); - var S = pubKey._pub.multiply(this._priv); - return (Buffer.from(S.getX().toBigInteger().toByteArray())); -}; - -function generateED25519() { - var pair = nacl.sign.keyPair(); - var priv = Buffer.from(pair.secretKey); - var pub = Buffer.from(pair.publicKey); - assert.strictEqual(priv.length, 64); - assert.strictEqual(pub.length, 32); - - var parts = []; - parts.push({name: 'A', data: pub}); - parts.push({name: 'k', data: priv.slice(0, 32)}); - var key = new PrivateKey({ - type: 'ed25519', - parts: parts - }); - return (key); -} - -/* Generates a new ECDSA private key on a given curve. */ -function generateECDSA(curve) { - var parts = []; - var key; - - if (CRYPTO_HAVE_ECDH) { - /* - * Node crypto doesn't expose key generation directly, but the - * ECDH instances can generate keys. It turns out this just - * calls into the OpenSSL generic key generator, and we can - * read its output happily without doing an actual DH. So we - * use that here. - */ - var osCurve = { - 'nistp256': 'prime256v1', - 'nistp384': 'secp384r1', - 'nistp521': 'secp521r1' - }[curve]; - - var dh = crypto.createECDH(osCurve); - dh.generateKeys(); - - parts.push({name: 'curve', - data: Buffer.from(curve)}); - parts.push({name: 'Q', data: dh.getPublicKey()}); - parts.push({name: 'd', data: dh.getPrivateKey()}); - - key = new PrivateKey({ - type: 'ecdsa', - curve: curve, - parts: parts - }); - return (key); - } else { - - var ecParams = new X9ECParameters(curve); - - /* This algorithm taken from FIPS PUB 186-4 (section B.4.1) */ - var n = ecParams.getN(); - /* - * The crypto.randomBytes() function can only give us whole - * bytes, so taking a nod from X9.62, we round up. - */ - var cByteLen = Math.ceil((n.bitLength() + 64) / 8); - var c = new jsbn(crypto.randomBytes(cByteLen)); - - var n1 = n.subtract(jsbn.ONE); - var priv = c.mod(n1).add(jsbn.ONE); - var pub = ecParams.getG().multiply(priv); - - priv = Buffer.from(priv.toByteArray()); - pub = Buffer.from(ecParams.getCurve(). - encodePointHex(pub), 'hex'); - - parts.push({name: 'curve', data: Buffer.from(curve)}); - parts.push({name: 'Q', data: pub}); - parts.push({name: 'd', data: priv}); - - key = new PrivateKey({ - type: 'ecdsa', - curve: curve, - parts: parts - }); - return (key); - } -} diff --git a/node_modules/sshpk/lib/ed-compat.js b/node_modules/sshpk/lib/ed-compat.js deleted file mode 100644 index 70732e1..0000000 --- a/node_modules/sshpk/lib/ed-compat.js +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = { - Verifier: Verifier, - Signer: Signer -}; - -var nacl = require('tweetnacl'); -var stream = require('stream'); -var util = require('util'); -var assert = require('assert-plus'); -var Buffer = require('safer-buffer').Buffer; -var Signature = require('./signature'); - -function Verifier(key, hashAlgo) { - if (hashAlgo.toLowerCase() !== 'sha512') - throw (new Error('ED25519 only supports the use of ' + - 'SHA-512 hashes')); - - this.key = key; - this.chunks = []; - - stream.Writable.call(this, {}); -} -util.inherits(Verifier, stream.Writable); - -Verifier.prototype._write = function (chunk, enc, cb) { - this.chunks.push(chunk); - cb(); -}; - -Verifier.prototype.update = function (chunk) { - if (typeof (chunk) === 'string') - chunk = Buffer.from(chunk, 'binary'); - this.chunks.push(chunk); -}; - -Verifier.prototype.verify = function (signature, fmt) { - var sig; - if (Signature.isSignature(signature, [2, 0])) { - if (signature.type !== 'ed25519') - return (false); - sig = signature.toBuffer('raw'); - - } else if (typeof (signature) === 'string') { - sig = Buffer.from(signature, 'base64'); - - } else if (Signature.isSignature(signature, [1, 0])) { - throw (new Error('signature was created by too old ' + - 'a version of sshpk and cannot be verified')); - } - - assert.buffer(sig); - return (nacl.sign.detached.verify( - new Uint8Array(Buffer.concat(this.chunks)), - new Uint8Array(sig), - new Uint8Array(this.key.part.A.data))); -}; - -function Signer(key, hashAlgo) { - if (hashAlgo.toLowerCase() !== 'sha512') - throw (new Error('ED25519 only supports the use of ' + - 'SHA-512 hashes')); - - this.key = key; - this.chunks = []; - - stream.Writable.call(this, {}); -} -util.inherits(Signer, stream.Writable); - -Signer.prototype._write = function (chunk, enc, cb) { - this.chunks.push(chunk); - cb(); -}; - -Signer.prototype.update = function (chunk) { - if (typeof (chunk) === 'string') - chunk = Buffer.from(chunk, 'binary'); - this.chunks.push(chunk); -}; - -Signer.prototype.sign = function () { - var sig = nacl.sign.detached( - new Uint8Array(Buffer.concat(this.chunks)), - new Uint8Array(Buffer.concat([ - this.key.part.k.data, this.key.part.A.data]))); - var sigBuf = Buffer.from(sig); - var sigObj = Signature.parse(sigBuf, 'ed25519', 'raw'); - sigObj.hashAlgorithm = 'sha512'; - return (sigObj); -}; diff --git a/node_modules/sshpk/lib/errors.js b/node_modules/sshpk/lib/errors.js deleted file mode 100644 index 1cc09ec..0000000 --- a/node_modules/sshpk/lib/errors.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -var assert = require('assert-plus'); -var util = require('util'); - -function FingerprintFormatError(fp, format) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, FingerprintFormatError); - this.name = 'FingerprintFormatError'; - this.fingerprint = fp; - this.format = format; - this.message = 'Fingerprint format is not supported, or is invalid: '; - if (fp !== undefined) - this.message += ' fingerprint = ' + fp; - if (format !== undefined) - this.message += ' format = ' + format; -} -util.inherits(FingerprintFormatError, Error); - -function InvalidAlgorithmError(alg) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, InvalidAlgorithmError); - this.name = 'InvalidAlgorithmError'; - this.algorithm = alg; - this.message = 'Algorithm "' + alg + '" is not supported'; -} -util.inherits(InvalidAlgorithmError, Error); - -function KeyParseError(name, format, innerErr) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, KeyParseError); - this.name = 'KeyParseError'; - this.format = format; - this.keyName = name; - this.innerErr = innerErr; - this.message = 'Failed to parse ' + name + ' as a valid ' + format + - ' format key: ' + innerErr.message; -} -util.inherits(KeyParseError, Error); - -function SignatureParseError(type, format, innerErr) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, SignatureParseError); - this.name = 'SignatureParseError'; - this.type = type; - this.format = format; - this.innerErr = innerErr; - this.message = 'Failed to parse the given data as a ' + type + - ' signature in ' + format + ' format: ' + innerErr.message; -} -util.inherits(SignatureParseError, Error); - -function CertificateParseError(name, format, innerErr) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, CertificateParseError); - this.name = 'CertificateParseError'; - this.format = format; - this.certName = name; - this.innerErr = innerErr; - this.message = 'Failed to parse ' + name + ' as a valid ' + format + - ' format certificate: ' + innerErr.message; -} -util.inherits(CertificateParseError, Error); - -function KeyEncryptedError(name, format) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, KeyEncryptedError); - this.name = 'KeyEncryptedError'; - this.format = format; - this.keyName = name; - this.message = 'The ' + format + ' format key ' + name + ' is ' + - 'encrypted (password-protected), and no passphrase was ' + - 'provided in `options`'; -} -util.inherits(KeyEncryptedError, Error); - -module.exports = { - FingerprintFormatError: FingerprintFormatError, - InvalidAlgorithmError: InvalidAlgorithmError, - KeyParseError: KeyParseError, - SignatureParseError: SignatureParseError, - KeyEncryptedError: KeyEncryptedError, - CertificateParseError: CertificateParseError -}; diff --git a/node_modules/sshpk/lib/fingerprint.js b/node_modules/sshpk/lib/fingerprint.js deleted file mode 100644 index 0004b37..0000000 --- a/node_modules/sshpk/lib/fingerprint.js +++ /dev/null @@ -1,220 +0,0 @@ -// Copyright 2018 Joyent, Inc. - -module.exports = Fingerprint; - -var assert = require('assert-plus'); -var Buffer = require('safer-buffer').Buffer; -var algs = require('./algs'); -var crypto = require('crypto'); -var errs = require('./errors'); -var Key = require('./key'); -var PrivateKey = require('./private-key'); -var Certificate = require('./certificate'); -var utils = require('./utils'); - -var FingerprintFormatError = errs.FingerprintFormatError; -var InvalidAlgorithmError = errs.InvalidAlgorithmError; - -function Fingerprint(opts) { - assert.object(opts, 'options'); - assert.string(opts.type, 'options.type'); - assert.buffer(opts.hash, 'options.hash'); - assert.string(opts.algorithm, 'options.algorithm'); - - this.algorithm = opts.algorithm.toLowerCase(); - if (algs.hashAlgs[this.algorithm] !== true) - throw (new InvalidAlgorithmError(this.algorithm)); - - this.hash = opts.hash; - this.type = opts.type; - this.hashType = opts.hashType; -} - -Fingerprint.prototype.toString = function (format) { - if (format === undefined) { - if (this.algorithm === 'md5' || this.hashType === 'spki') - format = 'hex'; - else - format = 'base64'; - } - assert.string(format); - - switch (format) { - case 'hex': - if (this.hashType === 'spki') - return (this.hash.toString('hex')); - return (addColons(this.hash.toString('hex'))); - case 'base64': - if (this.hashType === 'spki') - return (this.hash.toString('base64')); - return (sshBase64Format(this.algorithm, - this.hash.toString('base64'))); - default: - throw (new FingerprintFormatError(undefined, format)); - } -}; - -Fingerprint.prototype.matches = function (other) { - assert.object(other, 'key or certificate'); - if (this.type === 'key' && this.hashType !== 'ssh') { - utils.assertCompatible(other, Key, [1, 7], 'key with spki'); - if (PrivateKey.isPrivateKey(other)) { - utils.assertCompatible(other, PrivateKey, [1, 6], - 'privatekey with spki support'); - } - } else if (this.type === 'key') { - utils.assertCompatible(other, Key, [1, 0], 'key'); - } else { - utils.assertCompatible(other, Certificate, [1, 0], - 'certificate'); - } - - var theirHash = other.hash(this.algorithm, this.hashType); - var theirHash2 = crypto.createHash(this.algorithm). - update(theirHash).digest('base64'); - - if (this.hash2 === undefined) - this.hash2 = crypto.createHash(this.algorithm). - update(this.hash).digest('base64'); - - return (this.hash2 === theirHash2); -}; - -/*JSSTYLED*/ -var base64RE = /^[A-Za-z0-9+\/=]+$/; -/*JSSTYLED*/ -var hexRE = /^[a-fA-F0-9]+$/; - -Fingerprint.parse = function (fp, options) { - assert.string(fp, 'fingerprint'); - - var alg, hash, enAlgs; - if (Array.isArray(options)) { - enAlgs = options; - options = {}; - } - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - if (options.enAlgs !== undefined) - enAlgs = options.enAlgs; - if (options.algorithms !== undefined) - enAlgs = options.algorithms; - assert.optionalArrayOfString(enAlgs, 'algorithms'); - - var hashType = 'ssh'; - if (options.hashType !== undefined) - hashType = options.hashType; - assert.string(hashType, 'options.hashType'); - - var parts = fp.split(':'); - if (parts.length == 2) { - alg = parts[0].toLowerCase(); - if (!base64RE.test(parts[1])) - throw (new FingerprintFormatError(fp)); - try { - hash = Buffer.from(parts[1], 'base64'); - } catch (e) { - throw (new FingerprintFormatError(fp)); - } - } else if (parts.length > 2) { - alg = 'md5'; - if (parts[0].toLowerCase() === 'md5') - parts = parts.slice(1); - parts = parts.map(function (p) { - while (p.length < 2) - p = '0' + p; - if (p.length > 2) - throw (new FingerprintFormatError(fp)); - return (p); - }); - parts = parts.join(''); - if (!hexRE.test(parts) || parts.length % 2 !== 0) - throw (new FingerprintFormatError(fp)); - try { - hash = Buffer.from(parts, 'hex'); - } catch (e) { - throw (new FingerprintFormatError(fp)); - } - } else { - if (hexRE.test(fp)) { - hash = Buffer.from(fp, 'hex'); - } else if (base64RE.test(fp)) { - hash = Buffer.from(fp, 'base64'); - } else { - throw (new FingerprintFormatError(fp)); - } - - switch (hash.length) { - case 32: - alg = 'sha256'; - break; - case 16: - alg = 'md5'; - break; - case 20: - alg = 'sha1'; - break; - case 64: - alg = 'sha512'; - break; - default: - throw (new FingerprintFormatError(fp)); - } - - /* Plain hex/base64: guess it's probably SPKI unless told. */ - if (options.hashType === undefined) - hashType = 'spki'; - } - - if (alg === undefined) - throw (new FingerprintFormatError(fp)); - - if (algs.hashAlgs[alg] === undefined) - throw (new InvalidAlgorithmError(alg)); - - if (enAlgs !== undefined) { - enAlgs = enAlgs.map(function (a) { return a.toLowerCase(); }); - if (enAlgs.indexOf(alg) === -1) - throw (new InvalidAlgorithmError(alg)); - } - - return (new Fingerprint({ - algorithm: alg, - hash: hash, - type: options.type || 'key', - hashType: hashType - })); -}; - -function addColons(s) { - /*JSSTYLED*/ - return (s.replace(/(.{2})(?=.)/g, '$1:')); -} - -function base64Strip(s) { - /*JSSTYLED*/ - return (s.replace(/=*$/, '')); -} - -function sshBase64Format(alg, h) { - return (alg.toUpperCase() + ':' + base64Strip(h)); -} - -Fingerprint.isFingerprint = function (obj, ver) { - return (utils.isCompatible(obj, Fingerprint, ver)); -}; - -/* - * API versions for Fingerprint: - * [1,0] -- initial ver - * [1,1] -- first tagged ver - * [1,2] -- hashType and spki support - */ -Fingerprint.prototype._sshpkApiVersion = [1, 2]; - -Fingerprint._oldVersionDetect = function (obj) { - assert.func(obj.toString); - assert.func(obj.matches); - return ([1, 0]); -}; diff --git a/node_modules/sshpk/lib/formats/auto.js b/node_modules/sshpk/lib/formats/auto.js deleted file mode 100644 index f32cd96..0000000 --- a/node_modules/sshpk/lib/formats/auto.js +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright 2018 Joyent, Inc. - -module.exports = { - read: read, - write: write -}; - -var assert = require('assert-plus'); -var Buffer = require('safer-buffer').Buffer; -var utils = require('../utils'); -var Key = require('../key'); -var PrivateKey = require('../private-key'); - -var pem = require('./pem'); -var ssh = require('./ssh'); -var rfc4253 = require('./rfc4253'); -var dnssec = require('./dnssec'); -var putty = require('./putty'); - -var DNSSEC_PRIVKEY_HEADER_PREFIX = 'Private-key-format: v1'; - -function read(buf, options) { - if (typeof (buf) === 'string') { - if (buf.trim().match(/^[-]+[ ]*BEGIN/)) - return (pem.read(buf, options)); - if (buf.match(/^\s*ssh-[a-z]/)) - return (ssh.read(buf, options)); - if (buf.match(/^\s*ecdsa-/)) - return (ssh.read(buf, options)); - if (buf.match(/^putty-user-key-file-2:/i)) - return (putty.read(buf, options)); - if (findDNSSECHeader(buf)) - return (dnssec.read(buf, options)); - buf = Buffer.from(buf, 'binary'); - } else { - assert.buffer(buf); - if (findPEMHeader(buf)) - return (pem.read(buf, options)); - if (findSSHHeader(buf)) - return (ssh.read(buf, options)); - if (findPuTTYHeader(buf)) - return (putty.read(buf, options)); - if (findDNSSECHeader(buf)) - return (dnssec.read(buf, options)); - } - if (buf.readUInt32BE(0) < buf.length) - return (rfc4253.read(buf, options)); - throw (new Error('Failed to auto-detect format of key')); -} - -function findPuTTYHeader(buf) { - var offset = 0; - while (offset < buf.length && - (buf[offset] === 32 || buf[offset] === 10 || buf[offset] === 9)) - ++offset; - if (offset + 22 <= buf.length && - buf.slice(offset, offset + 22).toString('ascii').toLowerCase() === - 'putty-user-key-file-2:') - return (true); - return (false); -} - -function findSSHHeader(buf) { - var offset = 0; - while (offset < buf.length && - (buf[offset] === 32 || buf[offset] === 10 || buf[offset] === 9)) - ++offset; - if (offset + 4 <= buf.length && - buf.slice(offset, offset + 4).toString('ascii') === 'ssh-') - return (true); - if (offset + 6 <= buf.length && - buf.slice(offset, offset + 6).toString('ascii') === 'ecdsa-') - return (true); - return (false); -} - -function findPEMHeader(buf) { - var offset = 0; - while (offset < buf.length && - (buf[offset] === 32 || buf[offset] === 10)) - ++offset; - if (buf[offset] !== 45) - return (false); - while (offset < buf.length && - (buf[offset] === 45)) - ++offset; - while (offset < buf.length && - (buf[offset] === 32)) - ++offset; - if (offset + 5 > buf.length || - buf.slice(offset, offset + 5).toString('ascii') !== 'BEGIN') - return (false); - return (true); -} - -function findDNSSECHeader(buf) { - // private case first - if (buf.length <= DNSSEC_PRIVKEY_HEADER_PREFIX.length) - return (false); - var headerCheck = buf.slice(0, DNSSEC_PRIVKEY_HEADER_PREFIX.length); - if (headerCheck.toString('ascii') === DNSSEC_PRIVKEY_HEADER_PREFIX) - return (true); - - // public-key RFC3110 ? - // 'domain.com. IN KEY ...' or 'domain.com. IN DNSKEY ...' - // skip any comment-lines - if (typeof (buf) !== 'string') { - buf = buf.toString('ascii'); - } - var lines = buf.split('\n'); - var line = 0; - /* JSSTYLED */ - while (lines[line].match(/^\;/)) - line++; - if (lines[line].toString('ascii').match(/\. IN KEY /)) - return (true); - if (lines[line].toString('ascii').match(/\. IN DNSKEY /)) - return (true); - return (false); -} - -function write(key, options) { - throw (new Error('"auto" format cannot be used for writing')); -} diff --git a/node_modules/sshpk/lib/formats/dnssec.js b/node_modules/sshpk/lib/formats/dnssec.js deleted file mode 100644 index a74ea9c..0000000 --- a/node_modules/sshpk/lib/formats/dnssec.js +++ /dev/null @@ -1,287 +0,0 @@ -// Copyright 2017 Joyent, Inc. - -module.exports = { - read: read, - write: write -}; - -var assert = require('assert-plus'); -var Buffer = require('safer-buffer').Buffer; -var Key = require('../key'); -var PrivateKey = require('../private-key'); -var utils = require('../utils'); -var SSHBuffer = require('../ssh-buffer'); -var Dhe = require('../dhe'); - -var supportedAlgos = { - 'rsa-sha1' : 5, - 'rsa-sha256' : 8, - 'rsa-sha512' : 10, - 'ecdsa-p256-sha256' : 13, - 'ecdsa-p384-sha384' : 14 - /* - * ed25519 is hypothetically supported with id 15 - * but the common tools available don't appear to be - * capable of generating/using ed25519 keys - */ -}; - -var supportedAlgosById = {}; -Object.keys(supportedAlgos).forEach(function (k) { - supportedAlgosById[supportedAlgos[k]] = k.toUpperCase(); -}); - -function read(buf, options) { - if (typeof (buf) !== 'string') { - assert.buffer(buf, 'buf'); - buf = buf.toString('ascii'); - } - var lines = buf.split('\n'); - if (lines[0].match(/^Private-key-format\: v1/)) { - var algElems = lines[1].split(' '); - var algoNum = parseInt(algElems[1], 10); - var algoName = algElems[2]; - if (!supportedAlgosById[algoNum]) - throw (new Error('Unsupported algorithm: ' + algoName)); - return (readDNSSECPrivateKey(algoNum, lines.slice(2))); - } - - // skip any comment-lines - var line = 0; - /* JSSTYLED */ - while (lines[line].match(/^\;/)) - line++; - // we should now have *one single* line left with our KEY on it. - if ((lines[line].match(/\. IN KEY /) || - lines[line].match(/\. IN DNSKEY /)) && lines[line+1].length === 0) { - return (readRFC3110(lines[line])); - } - throw (new Error('Cannot parse dnssec key')); -} - -function readRFC3110(keyString) { - var elems = keyString.split(' '); - //unused var flags = parseInt(elems[3], 10); - //unused var protocol = parseInt(elems[4], 10); - var algorithm = parseInt(elems[5], 10); - if (!supportedAlgosById[algorithm]) - throw (new Error('Unsupported algorithm: ' + algorithm)); - var base64key = elems.slice(6, elems.length).join(); - var keyBuffer = Buffer.from(base64key, 'base64'); - if (supportedAlgosById[algorithm].match(/^RSA-/)) { - // join the rest of the body into a single base64-blob - var publicExponentLen = keyBuffer.readUInt8(0); - if (publicExponentLen != 3 && publicExponentLen != 1) - throw (new Error('Cannot parse dnssec key: ' + - 'unsupported exponent length')); - - var publicExponent = keyBuffer.slice(1, publicExponentLen+1); - publicExponent = utils.mpNormalize(publicExponent); - var modulus = keyBuffer.slice(1+publicExponentLen); - modulus = utils.mpNormalize(modulus); - // now, make the key - var rsaKey = { - type: 'rsa', - parts: [] - }; - rsaKey.parts.push({ name: 'e', data: publicExponent}); - rsaKey.parts.push({ name: 'n', data: modulus}); - return (new Key(rsaKey)); - } - if (supportedAlgosById[algorithm] === 'ECDSA-P384-SHA384' || - supportedAlgosById[algorithm] === 'ECDSA-P256-SHA256') { - var curve = 'nistp384'; - var size = 384; - if (supportedAlgosById[algorithm].match(/^ECDSA-P256-SHA256/)) { - curve = 'nistp256'; - size = 256; - } - - var ecdsaKey = { - type: 'ecdsa', - curve: curve, - size: size, - parts: [ - {name: 'curve', data: Buffer.from(curve) }, - {name: 'Q', data: utils.ecNormalize(keyBuffer) } - ] - }; - return (new Key(ecdsaKey)); - } - throw (new Error('Unsupported algorithm: ' + - supportedAlgosById[algorithm])); -} - -function elementToBuf(e) { - return (Buffer.from(e.split(' ')[1], 'base64')); -} - -function readDNSSECRSAPrivateKey(elements) { - var rsaParams = {}; - elements.forEach(function (element) { - if (element.split(' ')[0] === 'Modulus:') - rsaParams['n'] = elementToBuf(element); - else if (element.split(' ')[0] === 'PublicExponent:') - rsaParams['e'] = elementToBuf(element); - else if (element.split(' ')[0] === 'PrivateExponent:') - rsaParams['d'] = elementToBuf(element); - else if (element.split(' ')[0] === 'Prime1:') - rsaParams['p'] = elementToBuf(element); - else if (element.split(' ')[0] === 'Prime2:') - rsaParams['q'] = elementToBuf(element); - else if (element.split(' ')[0] === 'Exponent1:') - rsaParams['dmodp'] = elementToBuf(element); - else if (element.split(' ')[0] === 'Exponent2:') - rsaParams['dmodq'] = elementToBuf(element); - else if (element.split(' ')[0] === 'Coefficient:') - rsaParams['iqmp'] = elementToBuf(element); - }); - // now, make the key - var key = { - type: 'rsa', - parts: [ - { name: 'e', data: utils.mpNormalize(rsaParams['e'])}, - { name: 'n', data: utils.mpNormalize(rsaParams['n'])}, - { name: 'd', data: utils.mpNormalize(rsaParams['d'])}, - { name: 'p', data: utils.mpNormalize(rsaParams['p'])}, - { name: 'q', data: utils.mpNormalize(rsaParams['q'])}, - { name: 'dmodp', - data: utils.mpNormalize(rsaParams['dmodp'])}, - { name: 'dmodq', - data: utils.mpNormalize(rsaParams['dmodq'])}, - { name: 'iqmp', - data: utils.mpNormalize(rsaParams['iqmp'])} - ] - }; - return (new PrivateKey(key)); -} - -function readDNSSECPrivateKey(alg, elements) { - if (supportedAlgosById[alg].match(/^RSA-/)) { - return (readDNSSECRSAPrivateKey(elements)); - } - if (supportedAlgosById[alg] === 'ECDSA-P384-SHA384' || - supportedAlgosById[alg] === 'ECDSA-P256-SHA256') { - var d = Buffer.from(elements[0].split(' ')[1], 'base64'); - var curve = 'nistp384'; - var size = 384; - if (supportedAlgosById[alg] === 'ECDSA-P256-SHA256') { - curve = 'nistp256'; - size = 256; - } - // DNSSEC generates the public-key on the fly (go calculate it) - var publicKey = utils.publicFromPrivateECDSA(curve, d); - var Q = publicKey.part['Q'].data; - var ecdsaKey = { - type: 'ecdsa', - curve: curve, - size: size, - parts: [ - {name: 'curve', data: Buffer.from(curve) }, - {name: 'd', data: d }, - {name: 'Q', data: Q } - ] - }; - return (new PrivateKey(ecdsaKey)); - } - throw (new Error('Unsupported algorithm: ' + supportedAlgosById[alg])); -} - -function dnssecTimestamp(date) { - var year = date.getFullYear() + ''; //stringify - var month = (date.getMonth() + 1); - var timestampStr = year + month + date.getUTCDate(); - timestampStr += '' + date.getUTCHours() + date.getUTCMinutes(); - timestampStr += date.getUTCSeconds(); - return (timestampStr); -} - -function rsaAlgFromOptions(opts) { - if (!opts || !opts.hashAlgo || opts.hashAlgo === 'sha1') - return ('5 (RSASHA1)'); - else if (opts.hashAlgo === 'sha256') - return ('8 (RSASHA256)'); - else if (opts.hashAlgo === 'sha512') - return ('10 (RSASHA512)'); - else - throw (new Error('Unknown or unsupported hash: ' + - opts.hashAlgo)); -} - -function writeRSA(key, options) { - // if we're missing parts, add them. - if (!key.part.dmodp || !key.part.dmodq) { - utils.addRSAMissing(key); - } - - var out = ''; - out += 'Private-key-format: v1.3\n'; - out += 'Algorithm: ' + rsaAlgFromOptions(options) + '\n'; - var n = utils.mpDenormalize(key.part['n'].data); - out += 'Modulus: ' + n.toString('base64') + '\n'; - var e = utils.mpDenormalize(key.part['e'].data); - out += 'PublicExponent: ' + e.toString('base64') + '\n'; - var d = utils.mpDenormalize(key.part['d'].data); - out += 'PrivateExponent: ' + d.toString('base64') + '\n'; - var p = utils.mpDenormalize(key.part['p'].data); - out += 'Prime1: ' + p.toString('base64') + '\n'; - var q = utils.mpDenormalize(key.part['q'].data); - out += 'Prime2: ' + q.toString('base64') + '\n'; - var dmodp = utils.mpDenormalize(key.part['dmodp'].data); - out += 'Exponent1: ' + dmodp.toString('base64') + '\n'; - var dmodq = utils.mpDenormalize(key.part['dmodq'].data); - out += 'Exponent2: ' + dmodq.toString('base64') + '\n'; - var iqmp = utils.mpDenormalize(key.part['iqmp'].data); - out += 'Coefficient: ' + iqmp.toString('base64') + '\n'; - // Assume that we're valid as-of now - var timestamp = new Date(); - out += 'Created: ' + dnssecTimestamp(timestamp) + '\n'; - out += 'Publish: ' + dnssecTimestamp(timestamp) + '\n'; - out += 'Activate: ' + dnssecTimestamp(timestamp) + '\n'; - return (Buffer.from(out, 'ascii')); -} - -function writeECDSA(key, options) { - var out = ''; - out += 'Private-key-format: v1.3\n'; - - if (key.curve === 'nistp256') { - out += 'Algorithm: 13 (ECDSAP256SHA256)\n'; - } else if (key.curve === 'nistp384') { - out += 'Algorithm: 14 (ECDSAP384SHA384)\n'; - } else { - throw (new Error('Unsupported curve')); - } - var base64Key = key.part['d'].data.toString('base64'); - out += 'PrivateKey: ' + base64Key + '\n'; - - // Assume that we're valid as-of now - var timestamp = new Date(); - out += 'Created: ' + dnssecTimestamp(timestamp) + '\n'; - out += 'Publish: ' + dnssecTimestamp(timestamp) + '\n'; - out += 'Activate: ' + dnssecTimestamp(timestamp) + '\n'; - - return (Buffer.from(out, 'ascii')); -} - -function write(key, options) { - if (PrivateKey.isPrivateKey(key)) { - if (key.type === 'rsa') { - return (writeRSA(key, options)); - } else if (key.type === 'ecdsa') { - return (writeECDSA(key, options)); - } else { - throw (new Error('Unsupported algorithm: ' + key.type)); - } - } else if (Key.isKey(key)) { - /* - * RFC3110 requires a keyname, and a keytype, which we - * don't really have a mechanism for specifying such - * additional metadata. - */ - throw (new Error('Format "dnssec" only supports ' + - 'writing private keys')); - } else { - throw (new Error('key is not a Key or PrivateKey')); - } -} diff --git a/node_modules/sshpk/lib/formats/openssh-cert.js b/node_modules/sshpk/lib/formats/openssh-cert.js deleted file mode 100644 index 766f3d3..0000000 --- a/node_modules/sshpk/lib/formats/openssh-cert.js +++ /dev/null @@ -1,352 +0,0 @@ -// Copyright 2017 Joyent, Inc. - -module.exports = { - read: read, - verify: verify, - sign: sign, - signAsync: signAsync, - write: write, - - /* Internal private API */ - fromBuffer: fromBuffer, - toBuffer: toBuffer -}; - -var assert = require('assert-plus'); -var SSHBuffer = require('../ssh-buffer'); -var crypto = require('crypto'); -var Buffer = require('safer-buffer').Buffer; -var algs = require('../algs'); -var Key = require('../key'); -var PrivateKey = require('../private-key'); -var Identity = require('../identity'); -var rfc4253 = require('./rfc4253'); -var Signature = require('../signature'); -var utils = require('../utils'); -var Certificate = require('../certificate'); - -function verify(cert, key) { - /* - * We always give an issuerKey, so if our verify() is being called then - * there was no signature. Return false. - */ - return (false); -} - -var TYPES = { - 'user': 1, - 'host': 2 -}; -Object.keys(TYPES).forEach(function (k) { TYPES[TYPES[k]] = k; }); - -var ECDSA_ALGO = /^ecdsa-sha2-([^@-]+)-cert-v01@openssh.com$/; - -function read(buf, options) { - if (Buffer.isBuffer(buf)) - buf = buf.toString('ascii'); - var parts = buf.trim().split(/[ \t\n]+/g); - if (parts.length < 2 || parts.length > 3) - throw (new Error('Not a valid SSH certificate line')); - - var algo = parts[0]; - var data = parts[1]; - - data = Buffer.from(data, 'base64'); - return (fromBuffer(data, algo)); -} - -function fromBuffer(data, algo, partial) { - var sshbuf = new SSHBuffer({ buffer: data }); - var innerAlgo = sshbuf.readString(); - if (algo !== undefined && innerAlgo !== algo) - throw (new Error('SSH certificate algorithm mismatch')); - if (algo === undefined) - algo = innerAlgo; - - var cert = {}; - cert.signatures = {}; - cert.signatures.openssh = {}; - - cert.signatures.openssh.nonce = sshbuf.readBuffer(); - - var key = {}; - var parts = (key.parts = []); - key.type = getAlg(algo); - - var partCount = algs.info[key.type].parts.length; - while (parts.length < partCount) - parts.push(sshbuf.readPart()); - assert.ok(parts.length >= 1, 'key must have at least one part'); - - var algInfo = algs.info[key.type]; - if (key.type === 'ecdsa') { - var res = ECDSA_ALGO.exec(algo); - assert.ok(res !== null); - assert.strictEqual(res[1], parts[0].data.toString()); - } - - for (var i = 0; i < algInfo.parts.length; ++i) { - parts[i].name = algInfo.parts[i]; - if (parts[i].name !== 'curve' && - algInfo.normalize !== false) { - var p = parts[i]; - p.data = utils.mpNormalize(p.data); - } - } - - cert.subjectKey = new Key(key); - - cert.serial = sshbuf.readInt64(); - - var type = TYPES[sshbuf.readInt()]; - assert.string(type, 'valid cert type'); - - cert.signatures.openssh.keyId = sshbuf.readString(); - - var principals = []; - var pbuf = sshbuf.readBuffer(); - var psshbuf = new SSHBuffer({ buffer: pbuf }); - while (!psshbuf.atEnd()) - principals.push(psshbuf.readString()); - if (principals.length === 0) - principals = ['*']; - - cert.subjects = principals.map(function (pr) { - if (type === 'user') - return (Identity.forUser(pr)); - else if (type === 'host') - return (Identity.forHost(pr)); - throw (new Error('Unknown identity type ' + type)); - }); - - cert.validFrom = int64ToDate(sshbuf.readInt64()); - cert.validUntil = int64ToDate(sshbuf.readInt64()); - - var exts = []; - var extbuf = new SSHBuffer({ buffer: sshbuf.readBuffer() }); - var ext; - while (!extbuf.atEnd()) { - ext = { critical: true }; - ext.name = extbuf.readString(); - ext.data = extbuf.readBuffer(); - exts.push(ext); - } - extbuf = new SSHBuffer({ buffer: sshbuf.readBuffer() }); - while (!extbuf.atEnd()) { - ext = { critical: false }; - ext.name = extbuf.readString(); - ext.data = extbuf.readBuffer(); - exts.push(ext); - } - cert.signatures.openssh.exts = exts; - - /* reserved */ - sshbuf.readBuffer(); - - var signingKeyBuf = sshbuf.readBuffer(); - cert.issuerKey = rfc4253.read(signingKeyBuf); - - /* - * OpenSSH certs don't give the identity of the issuer, just their - * public key. So, we use an Identity that matches anything. The - * isSignedBy() function will later tell you if the key matches. - */ - cert.issuer = Identity.forHost('**'); - - var sigBuf = sshbuf.readBuffer(); - cert.signatures.openssh.signature = - Signature.parse(sigBuf, cert.issuerKey.type, 'ssh'); - - if (partial !== undefined) { - partial.remainder = sshbuf.remainder(); - partial.consumed = sshbuf._offset; - } - - return (new Certificate(cert)); -} - -function int64ToDate(buf) { - var i = buf.readUInt32BE(0) * 4294967296; - i += buf.readUInt32BE(4); - var d = new Date(); - d.setTime(i * 1000); - d.sourceInt64 = buf; - return (d); -} - -function dateToInt64(date) { - if (date.sourceInt64 !== undefined) - return (date.sourceInt64); - var i = Math.round(date.getTime() / 1000); - var upper = Math.floor(i / 4294967296); - var lower = Math.floor(i % 4294967296); - var buf = Buffer.alloc(8); - buf.writeUInt32BE(upper, 0); - buf.writeUInt32BE(lower, 4); - return (buf); -} - -function sign(cert, key) { - if (cert.signatures.openssh === undefined) - cert.signatures.openssh = {}; - try { - var blob = toBuffer(cert, true); - } catch (e) { - delete (cert.signatures.openssh); - return (false); - } - var sig = cert.signatures.openssh; - var hashAlgo = undefined; - if (key.type === 'rsa' || key.type === 'dsa') - hashAlgo = 'sha1'; - var signer = key.createSign(hashAlgo); - signer.write(blob); - sig.signature = signer.sign(); - return (true); -} - -function signAsync(cert, signer, done) { - if (cert.signatures.openssh === undefined) - cert.signatures.openssh = {}; - try { - var blob = toBuffer(cert, true); - } catch (e) { - delete (cert.signatures.openssh); - done(e); - return; - } - var sig = cert.signatures.openssh; - - signer(blob, function (err, signature) { - if (err) { - done(err); - return; - } - try { - /* - * This will throw if the signature isn't of a - * type/algo that can be used for SSH. - */ - signature.toBuffer('ssh'); - } catch (e) { - done(e); - return; - } - sig.signature = signature; - done(); - }); -} - -function write(cert, options) { - if (options === undefined) - options = {}; - - var blob = toBuffer(cert); - var out = getCertType(cert.subjectKey) + ' ' + blob.toString('base64'); - if (options.comment) - out = out + ' ' + options.comment; - return (out); -} - - -function toBuffer(cert, noSig) { - assert.object(cert.signatures.openssh, 'signature for openssh format'); - var sig = cert.signatures.openssh; - - if (sig.nonce === undefined) - sig.nonce = crypto.randomBytes(16); - var buf = new SSHBuffer({}); - buf.writeString(getCertType(cert.subjectKey)); - buf.writeBuffer(sig.nonce); - - var key = cert.subjectKey; - var algInfo = algs.info[key.type]; - algInfo.parts.forEach(function (part) { - buf.writePart(key.part[part]); - }); - - buf.writeInt64(cert.serial); - - var type = cert.subjects[0].type; - assert.notStrictEqual(type, 'unknown'); - cert.subjects.forEach(function (id) { - assert.strictEqual(id.type, type); - }); - type = TYPES[type]; - buf.writeInt(type); - - if (sig.keyId === undefined) { - sig.keyId = cert.subjects[0].type + '_' + - (cert.subjects[0].uid || cert.subjects[0].hostname); - } - buf.writeString(sig.keyId); - - var sub = new SSHBuffer({}); - cert.subjects.forEach(function (id) { - if (type === TYPES.host) - sub.writeString(id.hostname); - else if (type === TYPES.user) - sub.writeString(id.uid); - }); - buf.writeBuffer(sub.toBuffer()); - - buf.writeInt64(dateToInt64(cert.validFrom)); - buf.writeInt64(dateToInt64(cert.validUntil)); - - var exts = sig.exts; - if (exts === undefined) - exts = []; - - var extbuf = new SSHBuffer({}); - exts.forEach(function (ext) { - if (ext.critical !== true) - return; - extbuf.writeString(ext.name); - extbuf.writeBuffer(ext.data); - }); - buf.writeBuffer(extbuf.toBuffer()); - - extbuf = new SSHBuffer({}); - exts.forEach(function (ext) { - if (ext.critical === true) - return; - extbuf.writeString(ext.name); - extbuf.writeBuffer(ext.data); - }); - buf.writeBuffer(extbuf.toBuffer()); - - /* reserved */ - buf.writeBuffer(Buffer.alloc(0)); - - sub = rfc4253.write(cert.issuerKey); - buf.writeBuffer(sub); - - if (!noSig) - buf.writeBuffer(sig.signature.toBuffer('ssh')); - - return (buf.toBuffer()); -} - -function getAlg(certType) { - if (certType === 'ssh-rsa-cert-v01@openssh.com') - return ('rsa'); - if (certType === 'ssh-dss-cert-v01@openssh.com') - return ('dsa'); - if (certType.match(ECDSA_ALGO)) - return ('ecdsa'); - if (certType === 'ssh-ed25519-cert-v01@openssh.com') - return ('ed25519'); - throw (new Error('Unsupported cert type ' + certType)); -} - -function getCertType(key) { - if (key.type === 'rsa') - return ('ssh-rsa-cert-v01@openssh.com'); - if (key.type === 'dsa') - return ('ssh-dss-cert-v01@openssh.com'); - if (key.type === 'ecdsa') - return ('ecdsa-sha2-' + key.curve + '-cert-v01@openssh.com'); - if (key.type === 'ed25519') - return ('ssh-ed25519-cert-v01@openssh.com'); - throw (new Error('Unsupported key type ' + key.type)); -} diff --git a/node_modules/sshpk/lib/formats/pem.js b/node_modules/sshpk/lib/formats/pem.js deleted file mode 100644 index bbe78fc..0000000 --- a/node_modules/sshpk/lib/formats/pem.js +++ /dev/null @@ -1,290 +0,0 @@ -// Copyright 2018 Joyent, Inc. - -module.exports = { - read: read, - write: write -}; - -var assert = require('assert-plus'); -var asn1 = require('asn1'); -var crypto = require('crypto'); -var Buffer = require('safer-buffer').Buffer; -var algs = require('../algs'); -var utils = require('../utils'); -var Key = require('../key'); -var PrivateKey = require('../private-key'); - -var pkcs1 = require('./pkcs1'); -var pkcs8 = require('./pkcs8'); -var sshpriv = require('./ssh-private'); -var rfc4253 = require('./rfc4253'); - -var errors = require('../errors'); - -var OID_PBES2 = '1.2.840.113549.1.5.13'; -var OID_PBKDF2 = '1.2.840.113549.1.5.12'; - -var OID_TO_CIPHER = { - '1.2.840.113549.3.7': '3des-cbc', - '2.16.840.1.101.3.4.1.2': 'aes128-cbc', - '2.16.840.1.101.3.4.1.42': 'aes256-cbc' -}; -var CIPHER_TO_OID = {}; -Object.keys(OID_TO_CIPHER).forEach(function (k) { - CIPHER_TO_OID[OID_TO_CIPHER[k]] = k; -}); - -var OID_TO_HASH = { - '1.2.840.113549.2.7': 'sha1', - '1.2.840.113549.2.9': 'sha256', - '1.2.840.113549.2.11': 'sha512' -}; -var HASH_TO_OID = {}; -Object.keys(OID_TO_HASH).forEach(function (k) { - HASH_TO_OID[OID_TO_HASH[k]] = k; -}); - -/* - * For reading we support both PKCS#1 and PKCS#8. If we find a private key, - * we just take the public component of it and use that. - */ -function read(buf, options, forceType) { - var input = buf; - if (typeof (buf) !== 'string') { - assert.buffer(buf, 'buf'); - buf = buf.toString('ascii'); - } - - var lines = buf.trim().split(/[\r\n]+/g); - - var m; - var si = -1; - while (!m && si < lines.length) { - m = lines[++si].match(/*JSSTYLED*/ - /[-]+[ ]*BEGIN ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/); - } - assert.ok(m, 'invalid PEM header'); - - var m2; - var ei = lines.length; - while (!m2 && ei > 0) { - m2 = lines[--ei].match(/*JSSTYLED*/ - /[-]+[ ]*END ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/); - } - assert.ok(m2, 'invalid PEM footer'); - - /* Begin and end banners must match key type */ - assert.equal(m[2], m2[2]); - var type = m[2].toLowerCase(); - - var alg; - if (m[1]) { - /* They also must match algorithms, if given */ - assert.equal(m[1], m2[1], 'PEM header and footer mismatch'); - alg = m[1].trim(); - } - - lines = lines.slice(si, ei + 1); - - var headers = {}; - while (true) { - lines = lines.slice(1); - m = lines[0].match(/*JSSTYLED*/ - /^([A-Za-z0-9-]+): (.+)$/); - if (!m) - break; - headers[m[1].toLowerCase()] = m[2]; - } - - /* Chop off the first and last lines */ - lines = lines.slice(0, -1).join(''); - buf = Buffer.from(lines, 'base64'); - - var cipher, key, iv; - if (headers['proc-type']) { - var parts = headers['proc-type'].split(','); - if (parts[0] === '4' && parts[1] === 'ENCRYPTED') { - if (typeof (options.passphrase) === 'string') { - options.passphrase = Buffer.from( - options.passphrase, 'utf-8'); - } - if (!Buffer.isBuffer(options.passphrase)) { - throw (new errors.KeyEncryptedError( - options.filename, 'PEM')); - } else { - parts = headers['dek-info'].split(','); - assert.ok(parts.length === 2); - cipher = parts[0].toLowerCase(); - iv = Buffer.from(parts[1], 'hex'); - key = utils.opensslKeyDeriv(cipher, iv, - options.passphrase, 1).key; - } - } - } - - if (alg && alg.toLowerCase() === 'encrypted') { - var eder = new asn1.BerReader(buf); - var pbesEnd; - eder.readSequence(); - - eder.readSequence(); - pbesEnd = eder.offset + eder.length; - - var method = eder.readOID(); - if (method !== OID_PBES2) { - throw (new Error('Unsupported PEM/PKCS8 encryption ' + - 'scheme: ' + method)); - } - - eder.readSequence(); /* PBES2-params */ - - eder.readSequence(); /* keyDerivationFunc */ - var kdfEnd = eder.offset + eder.length; - var kdfOid = eder.readOID(); - if (kdfOid !== OID_PBKDF2) - throw (new Error('Unsupported PBES2 KDF: ' + kdfOid)); - eder.readSequence(); - var salt = eder.readString(asn1.Ber.OctetString, true); - var iterations = eder.readInt(); - var hashAlg = 'sha1'; - if (eder.offset < kdfEnd) { - eder.readSequence(); - var hashAlgOid = eder.readOID(); - hashAlg = OID_TO_HASH[hashAlgOid]; - if (hashAlg === undefined) { - throw (new Error('Unsupported PBKDF2 hash: ' + - hashAlgOid)); - } - } - eder._offset = kdfEnd; - - eder.readSequence(); /* encryptionScheme */ - var cipherOid = eder.readOID(); - cipher = OID_TO_CIPHER[cipherOid]; - if (cipher === undefined) { - throw (new Error('Unsupported PBES2 cipher: ' + - cipherOid)); - } - iv = eder.readString(asn1.Ber.OctetString, true); - - eder._offset = pbesEnd; - buf = eder.readString(asn1.Ber.OctetString, true); - - if (typeof (options.passphrase) === 'string') { - options.passphrase = Buffer.from( - options.passphrase, 'utf-8'); - } - if (!Buffer.isBuffer(options.passphrase)) { - throw (new errors.KeyEncryptedError( - options.filename, 'PEM')); - } - - var cinfo = utils.opensshCipherInfo(cipher); - - cipher = cinfo.opensslName; - key = utils.pbkdf2(hashAlg, salt, iterations, cinfo.keySize, - options.passphrase); - alg = undefined; - } - - if (cipher && key && iv) { - var cipherStream = crypto.createDecipheriv(cipher, key, iv); - var chunk, chunks = []; - cipherStream.once('error', function (e) { - if (e.toString().indexOf('bad decrypt') !== -1) { - throw (new Error('Incorrect passphrase ' + - 'supplied, could not decrypt key')); - } - throw (e); - }); - cipherStream.write(buf); - cipherStream.end(); - while ((chunk = cipherStream.read()) !== null) - chunks.push(chunk); - buf = Buffer.concat(chunks); - } - - /* The new OpenSSH internal format abuses PEM headers */ - if (alg && alg.toLowerCase() === 'openssh') - return (sshpriv.readSSHPrivate(type, buf, options)); - if (alg && alg.toLowerCase() === 'ssh2') - return (rfc4253.readType(type, buf, options)); - - var der = new asn1.BerReader(buf); - der.originalInput = input; - - /* - * All of the PEM file types start with a sequence tag, so chop it - * off here - */ - der.readSequence(); - - /* PKCS#1 type keys name an algorithm in the banner explicitly */ - if (alg) { - if (forceType) - assert.strictEqual(forceType, 'pkcs1'); - return (pkcs1.readPkcs1(alg, type, der)); - } else { - if (forceType) - assert.strictEqual(forceType, 'pkcs8'); - return (pkcs8.readPkcs8(alg, type, der)); - } -} - -function write(key, options, type) { - assert.object(key); - - var alg = { - 'ecdsa': 'EC', - 'rsa': 'RSA', - 'dsa': 'DSA', - 'ed25519': 'EdDSA' - }[key.type]; - var header; - - var der = new asn1.BerWriter(); - - if (PrivateKey.isPrivateKey(key)) { - if (type && type === 'pkcs8') { - header = 'PRIVATE KEY'; - pkcs8.writePkcs8(der, key); - } else { - if (type) - assert.strictEqual(type, 'pkcs1'); - header = alg + ' PRIVATE KEY'; - pkcs1.writePkcs1(der, key); - } - - } else if (Key.isKey(key)) { - if (type && type === 'pkcs1') { - header = alg + ' PUBLIC KEY'; - pkcs1.writePkcs1(der, key); - } else { - if (type) - assert.strictEqual(type, 'pkcs8'); - header = 'PUBLIC KEY'; - pkcs8.writePkcs8(der, key); - } - - } else { - throw (new Error('key is not a Key or PrivateKey')); - } - - var tmp = der.buffer.toString('base64'); - var len = tmp.length + (tmp.length / 64) + - 18 + 16 + header.length*2 + 10; - var buf = Buffer.alloc(len); - var o = 0; - o += buf.write('-----BEGIN ' + header + '-----\n', o); - for (var i = 0; i < tmp.length; ) { - var limit = i + 64; - if (limit > tmp.length) - limit = tmp.length; - o += buf.write(tmp.slice(i, limit), o); - buf[o++] = 10; - i = limit; - } - o += buf.write('-----END ' + header + '-----\n', o); - - return (buf.slice(0, o)); -} diff --git a/node_modules/sshpk/lib/formats/pkcs1.js b/node_modules/sshpk/lib/formats/pkcs1.js deleted file mode 100644 index bc48550..0000000 --- a/node_modules/sshpk/lib/formats/pkcs1.js +++ /dev/null @@ -1,373 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read, - readPkcs1: readPkcs1, - write: write, - writePkcs1: writePkcs1 -}; - -var assert = require('assert-plus'); -var asn1 = require('asn1'); -var Buffer = require('safer-buffer').Buffer; -var algs = require('../algs'); -var utils = require('../utils'); - -var Key = require('../key'); -var PrivateKey = require('../private-key'); -var pem = require('./pem'); - -var pkcs8 = require('./pkcs8'); -var readECDSACurve = pkcs8.readECDSACurve; - -function read(buf, options) { - return (pem.read(buf, options, 'pkcs1')); -} - -function write(key, options) { - return (pem.write(key, options, 'pkcs1')); -} - -/* Helper to read in a single mpint */ -function readMPInt(der, nm) { - assert.strictEqual(der.peek(), asn1.Ber.Integer, - nm + ' is not an Integer'); - return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true))); -} - -function readPkcs1(alg, type, der) { - switch (alg) { - case 'RSA': - if (type === 'public') - return (readPkcs1RSAPublic(der)); - else if (type === 'private') - return (readPkcs1RSAPrivate(der)); - throw (new Error('Unknown key type: ' + type)); - case 'DSA': - if (type === 'public') - return (readPkcs1DSAPublic(der)); - else if (type === 'private') - return (readPkcs1DSAPrivate(der)); - throw (new Error('Unknown key type: ' + type)); - case 'EC': - case 'ECDSA': - if (type === 'private') - return (readPkcs1ECDSAPrivate(der)); - else if (type === 'public') - return (readPkcs1ECDSAPublic(der)); - throw (new Error('Unknown key type: ' + type)); - case 'EDDSA': - case 'EdDSA': - if (type === 'private') - return (readPkcs1EdDSAPrivate(der)); - throw (new Error(type + ' keys not supported with EdDSA')); - default: - throw (new Error('Unknown key algo: ' + alg)); - } -} - -function readPkcs1RSAPublic(der) { - // modulus and exponent - var n = readMPInt(der, 'modulus'); - var e = readMPInt(der, 'exponent'); - - // now, make the key - var key = { - type: 'rsa', - parts: [ - { name: 'e', data: e }, - { name: 'n', data: n } - ] - }; - - return (new Key(key)); -} - -function readPkcs1RSAPrivate(der) { - var version = readMPInt(der, 'version'); - assert.strictEqual(version[0], 0); - - // modulus then public exponent - var n = readMPInt(der, 'modulus'); - var e = readMPInt(der, 'public exponent'); - var d = readMPInt(der, 'private exponent'); - var p = readMPInt(der, 'prime1'); - var q = readMPInt(der, 'prime2'); - var dmodp = readMPInt(der, 'exponent1'); - var dmodq = readMPInt(der, 'exponent2'); - var iqmp = readMPInt(der, 'iqmp'); - - // now, make the key - var key = { - type: 'rsa', - parts: [ - { name: 'n', data: n }, - { name: 'e', data: e }, - { name: 'd', data: d }, - { name: 'iqmp', data: iqmp }, - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'dmodp', data: dmodp }, - { name: 'dmodq', data: dmodq } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs1DSAPrivate(der) { - var version = readMPInt(der, 'version'); - assert.strictEqual(version.readUInt8(0), 0); - - var p = readMPInt(der, 'p'); - var q = readMPInt(der, 'q'); - var g = readMPInt(der, 'g'); - var y = readMPInt(der, 'y'); - var x = readMPInt(der, 'x'); - - // now, make the key - var key = { - type: 'dsa', - parts: [ - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'g', data: g }, - { name: 'y', data: y }, - { name: 'x', data: x } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs1EdDSAPrivate(der) { - var version = readMPInt(der, 'version'); - assert.strictEqual(version.readUInt8(0), 1); - - // private key - var k = der.readString(asn1.Ber.OctetString, true); - - der.readSequence(0xa0); - var oid = der.readOID(); - assert.strictEqual(oid, '1.3.101.112', 'the ed25519 curve identifier'); - - der.readSequence(0xa1); - var A = utils.readBitString(der); - - var key = { - type: 'ed25519', - parts: [ - { name: 'A', data: utils.zeroPadToLength(A, 32) }, - { name: 'k', data: k } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs1DSAPublic(der) { - var y = readMPInt(der, 'y'); - var p = readMPInt(der, 'p'); - var q = readMPInt(der, 'q'); - var g = readMPInt(der, 'g'); - - var key = { - type: 'dsa', - parts: [ - { name: 'y', data: y }, - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'g', data: g } - ] - }; - - return (new Key(key)); -} - -function readPkcs1ECDSAPublic(der) { - der.readSequence(); - - var oid = der.readOID(); - assert.strictEqual(oid, '1.2.840.10045.2.1', 'must be ecPublicKey'); - - var curveOid = der.readOID(); - - var curve; - var curves = Object.keys(algs.curves); - for (var j = 0; j < curves.length; ++j) { - var c = curves[j]; - var cd = algs.curves[c]; - if (cd.pkcs8oid === curveOid) { - curve = c; - break; - } - } - assert.string(curve, 'a known ECDSA named curve'); - - var Q = der.readString(asn1.Ber.BitString, true); - Q = utils.ecNormalize(Q); - - var key = { - type: 'ecdsa', - parts: [ - { name: 'curve', data: Buffer.from(curve) }, - { name: 'Q', data: Q } - ] - }; - - return (new Key(key)); -} - -function readPkcs1ECDSAPrivate(der) { - var version = readMPInt(der, 'version'); - assert.strictEqual(version.readUInt8(0), 1); - - // private key - var d = der.readString(asn1.Ber.OctetString, true); - - der.readSequence(0xa0); - var curve = readECDSACurve(der); - assert.string(curve, 'a known elliptic curve'); - - der.readSequence(0xa1); - var Q = der.readString(asn1.Ber.BitString, true); - Q = utils.ecNormalize(Q); - - var key = { - type: 'ecdsa', - parts: [ - { name: 'curve', data: Buffer.from(curve) }, - { name: 'Q', data: Q }, - { name: 'd', data: d } - ] - }; - - return (new PrivateKey(key)); -} - -function writePkcs1(der, key) { - der.startSequence(); - - switch (key.type) { - case 'rsa': - if (PrivateKey.isPrivateKey(key)) - writePkcs1RSAPrivate(der, key); - else - writePkcs1RSAPublic(der, key); - break; - case 'dsa': - if (PrivateKey.isPrivateKey(key)) - writePkcs1DSAPrivate(der, key); - else - writePkcs1DSAPublic(der, key); - break; - case 'ecdsa': - if (PrivateKey.isPrivateKey(key)) - writePkcs1ECDSAPrivate(der, key); - else - writePkcs1ECDSAPublic(der, key); - break; - case 'ed25519': - if (PrivateKey.isPrivateKey(key)) - writePkcs1EdDSAPrivate(der, key); - else - writePkcs1EdDSAPublic(der, key); - break; - default: - throw (new Error('Unknown key algo: ' + key.type)); - } - - der.endSequence(); -} - -function writePkcs1RSAPublic(der, key) { - der.writeBuffer(key.part.n.data, asn1.Ber.Integer); - der.writeBuffer(key.part.e.data, asn1.Ber.Integer); -} - -function writePkcs1RSAPrivate(der, key) { - var ver = Buffer.from([0]); - der.writeBuffer(ver, asn1.Ber.Integer); - - der.writeBuffer(key.part.n.data, asn1.Ber.Integer); - der.writeBuffer(key.part.e.data, asn1.Ber.Integer); - der.writeBuffer(key.part.d.data, asn1.Ber.Integer); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - if (!key.part.dmodp || !key.part.dmodq) - utils.addRSAMissing(key); - der.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer); - der.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer); - der.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer); -} - -function writePkcs1DSAPrivate(der, key) { - var ver = Buffer.from([0]); - der.writeBuffer(ver, asn1.Ber.Integer); - - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - der.writeBuffer(key.part.g.data, asn1.Ber.Integer); - der.writeBuffer(key.part.y.data, asn1.Ber.Integer); - der.writeBuffer(key.part.x.data, asn1.Ber.Integer); -} - -function writePkcs1DSAPublic(der, key) { - der.writeBuffer(key.part.y.data, asn1.Ber.Integer); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - der.writeBuffer(key.part.g.data, asn1.Ber.Integer); -} - -function writePkcs1ECDSAPublic(der, key) { - der.startSequence(); - - der.writeOID('1.2.840.10045.2.1'); /* ecPublicKey */ - var curve = key.part.curve.data.toString(); - var curveOid = algs.curves[curve].pkcs8oid; - assert.string(curveOid, 'a known ECDSA named curve'); - der.writeOID(curveOid); - - der.endSequence(); - - var Q = utils.ecNormalize(key.part.Q.data, true); - der.writeBuffer(Q, asn1.Ber.BitString); -} - -function writePkcs1ECDSAPrivate(der, key) { - var ver = Buffer.from([1]); - der.writeBuffer(ver, asn1.Ber.Integer); - - der.writeBuffer(key.part.d.data, asn1.Ber.OctetString); - - der.startSequence(0xa0); - var curve = key.part.curve.data.toString(); - var curveOid = algs.curves[curve].pkcs8oid; - assert.string(curveOid, 'a known ECDSA named curve'); - der.writeOID(curveOid); - der.endSequence(); - - der.startSequence(0xa1); - var Q = utils.ecNormalize(key.part.Q.data, true); - der.writeBuffer(Q, asn1.Ber.BitString); - der.endSequence(); -} - -function writePkcs1EdDSAPrivate(der, key) { - var ver = Buffer.from([1]); - der.writeBuffer(ver, asn1.Ber.Integer); - - der.writeBuffer(key.part.k.data, asn1.Ber.OctetString); - - der.startSequence(0xa0); - der.writeOID('1.3.101.112'); - der.endSequence(); - - der.startSequence(0xa1); - utils.writeBitString(der, key.part.A.data); - der.endSequence(); -} - -function writePkcs1EdDSAPublic(der, key) { - throw (new Error('Public keys are not supported for EdDSA PKCS#1')); -} diff --git a/node_modules/sshpk/lib/formats/pkcs8.js b/node_modules/sshpk/lib/formats/pkcs8.js deleted file mode 100644 index 2ca3ca7..0000000 --- a/node_modules/sshpk/lib/formats/pkcs8.js +++ /dev/null @@ -1,631 +0,0 @@ -// Copyright 2018 Joyent, Inc. - -module.exports = { - read: read, - readPkcs8: readPkcs8, - write: write, - writePkcs8: writePkcs8, - pkcs8ToBuffer: pkcs8ToBuffer, - - readECDSACurve: readECDSACurve, - writeECDSACurve: writeECDSACurve -}; - -var assert = require('assert-plus'); -var asn1 = require('asn1'); -var Buffer = require('safer-buffer').Buffer; -var algs = require('../algs'); -var utils = require('../utils'); -var Key = require('../key'); -var PrivateKey = require('../private-key'); -var pem = require('./pem'); - -function read(buf, options) { - return (pem.read(buf, options, 'pkcs8')); -} - -function write(key, options) { - return (pem.write(key, options, 'pkcs8')); -} - -/* Helper to read in a single mpint */ -function readMPInt(der, nm) { - assert.strictEqual(der.peek(), asn1.Ber.Integer, - nm + ' is not an Integer'); - return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true))); -} - -function readPkcs8(alg, type, der) { - /* Private keys in pkcs#8 format have a weird extra int */ - if (der.peek() === asn1.Ber.Integer) { - assert.strictEqual(type, 'private', - 'unexpected Integer at start of public key'); - der.readString(asn1.Ber.Integer, true); - } - - der.readSequence(); - var next = der.offset + der.length; - - var oid = der.readOID(); - switch (oid) { - case '1.2.840.113549.1.1.1': - der._offset = next; - if (type === 'public') - return (readPkcs8RSAPublic(der)); - else - return (readPkcs8RSAPrivate(der)); - case '1.2.840.10040.4.1': - if (type === 'public') - return (readPkcs8DSAPublic(der)); - else - return (readPkcs8DSAPrivate(der)); - case '1.2.840.10045.2.1': - if (type === 'public') - return (readPkcs8ECDSAPublic(der)); - else - return (readPkcs8ECDSAPrivate(der)); - case '1.3.101.112': - if (type === 'public') { - return (readPkcs8EdDSAPublic(der)); - } else { - return (readPkcs8EdDSAPrivate(der)); - } - case '1.3.101.110': - if (type === 'public') { - return (readPkcs8X25519Public(der)); - } else { - return (readPkcs8X25519Private(der)); - } - default: - throw (new Error('Unknown key type OID ' + oid)); - } -} - -function readPkcs8RSAPublic(der) { - // bit string sequence - der.readSequence(asn1.Ber.BitString); - der.readByte(); - der.readSequence(); - - // modulus - var n = readMPInt(der, 'modulus'); - var e = readMPInt(der, 'exponent'); - - // now, make the key - var key = { - type: 'rsa', - source: der.originalInput, - parts: [ - { name: 'e', data: e }, - { name: 'n', data: n } - ] - }; - - return (new Key(key)); -} - -function readPkcs8RSAPrivate(der) { - der.readSequence(asn1.Ber.OctetString); - der.readSequence(); - - var ver = readMPInt(der, 'version'); - assert.equal(ver[0], 0x0, 'unknown RSA private key version'); - - // modulus then public exponent - var n = readMPInt(der, 'modulus'); - var e = readMPInt(der, 'public exponent'); - var d = readMPInt(der, 'private exponent'); - var p = readMPInt(der, 'prime1'); - var q = readMPInt(der, 'prime2'); - var dmodp = readMPInt(der, 'exponent1'); - var dmodq = readMPInt(der, 'exponent2'); - var iqmp = readMPInt(der, 'iqmp'); - - // now, make the key - var key = { - type: 'rsa', - parts: [ - { name: 'n', data: n }, - { name: 'e', data: e }, - { name: 'd', data: d }, - { name: 'iqmp', data: iqmp }, - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'dmodp', data: dmodp }, - { name: 'dmodq', data: dmodq } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs8DSAPublic(der) { - der.readSequence(); - - var p = readMPInt(der, 'p'); - var q = readMPInt(der, 'q'); - var g = readMPInt(der, 'g'); - - // bit string sequence - der.readSequence(asn1.Ber.BitString); - der.readByte(); - - var y = readMPInt(der, 'y'); - - // now, make the key - var key = { - type: 'dsa', - parts: [ - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'g', data: g }, - { name: 'y', data: y } - ] - }; - - return (new Key(key)); -} - -function readPkcs8DSAPrivate(der) { - der.readSequence(); - - var p = readMPInt(der, 'p'); - var q = readMPInt(der, 'q'); - var g = readMPInt(der, 'g'); - - der.readSequence(asn1.Ber.OctetString); - var x = readMPInt(der, 'x'); - - /* The pkcs#8 format does not include the public key */ - var y = utils.calculateDSAPublic(g, p, x); - - var key = { - type: 'dsa', - parts: [ - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'g', data: g }, - { name: 'y', data: y }, - { name: 'x', data: x } - ] - }; - - return (new PrivateKey(key)); -} - -function readECDSACurve(der) { - var curveName, curveNames; - var j, c, cd; - - if (der.peek() === asn1.Ber.OID) { - var oid = der.readOID(); - - curveNames = Object.keys(algs.curves); - for (j = 0; j < curveNames.length; ++j) { - c = curveNames[j]; - cd = algs.curves[c]; - if (cd.pkcs8oid === oid) { - curveName = c; - break; - } - } - - } else { - // ECParameters sequence - der.readSequence(); - var version = der.readString(asn1.Ber.Integer, true); - assert.strictEqual(version[0], 1, 'ECDSA key not version 1'); - - var curve = {}; - - // FieldID sequence - der.readSequence(); - var fieldTypeOid = der.readOID(); - assert.strictEqual(fieldTypeOid, '1.2.840.10045.1.1', - 'ECDSA key is not from a prime-field'); - var p = curve.p = utils.mpNormalize( - der.readString(asn1.Ber.Integer, true)); - /* - * p always starts with a 1 bit, so count the zeros to get its - * real size. - */ - curve.size = p.length * 8 - utils.countZeros(p); - - // Curve sequence - der.readSequence(); - curve.a = utils.mpNormalize( - der.readString(asn1.Ber.OctetString, true)); - curve.b = utils.mpNormalize( - der.readString(asn1.Ber.OctetString, true)); - if (der.peek() === asn1.Ber.BitString) - curve.s = der.readString(asn1.Ber.BitString, true); - - // Combined Gx and Gy - curve.G = der.readString(asn1.Ber.OctetString, true); - assert.strictEqual(curve.G[0], 0x4, - 'uncompressed G is required'); - - curve.n = utils.mpNormalize( - der.readString(asn1.Ber.Integer, true)); - curve.h = utils.mpNormalize( - der.readString(asn1.Ber.Integer, true)); - assert.strictEqual(curve.h[0], 0x1, 'a cofactor=1 curve is ' + - 'required'); - - curveNames = Object.keys(algs.curves); - var ks = Object.keys(curve); - for (j = 0; j < curveNames.length; ++j) { - c = curveNames[j]; - cd = algs.curves[c]; - var equal = true; - for (var i = 0; i < ks.length; ++i) { - var k = ks[i]; - if (cd[k] === undefined) - continue; - if (typeof (cd[k]) === 'object' && - cd[k].equals !== undefined) { - if (!cd[k].equals(curve[k])) { - equal = false; - break; - } - } else if (Buffer.isBuffer(cd[k])) { - if (cd[k].toString('binary') - !== curve[k].toString('binary')) { - equal = false; - break; - } - } else { - if (cd[k] !== curve[k]) { - equal = false; - break; - } - } - } - if (equal) { - curveName = c; - break; - } - } - } - return (curveName); -} - -function readPkcs8ECDSAPrivate(der) { - var curveName = readECDSACurve(der); - assert.string(curveName, 'a known elliptic curve'); - - der.readSequence(asn1.Ber.OctetString); - der.readSequence(); - - var version = readMPInt(der, 'version'); - assert.equal(version[0], 1, 'unknown version of ECDSA key'); - - var d = der.readString(asn1.Ber.OctetString, true); - var Q; - - if (der.peek() == 0xa0) { - der.readSequence(0xa0); - der._offset += der.length; - } - if (der.peek() == 0xa1) { - der.readSequence(0xa1); - Q = der.readString(asn1.Ber.BitString, true); - Q = utils.ecNormalize(Q); - } - - if (Q === undefined) { - var pub = utils.publicFromPrivateECDSA(curveName, d); - Q = pub.part.Q.data; - } - - var key = { - type: 'ecdsa', - parts: [ - { name: 'curve', data: Buffer.from(curveName) }, - { name: 'Q', data: Q }, - { name: 'd', data: d } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs8ECDSAPublic(der) { - var curveName = readECDSACurve(der); - assert.string(curveName, 'a known elliptic curve'); - - var Q = der.readString(asn1.Ber.BitString, true); - Q = utils.ecNormalize(Q); - - var key = { - type: 'ecdsa', - parts: [ - { name: 'curve', data: Buffer.from(curveName) }, - { name: 'Q', data: Q } - ] - }; - - return (new Key(key)); -} - -function readPkcs8EdDSAPublic(der) { - if (der.peek() === 0x00) - der.readByte(); - - var A = utils.readBitString(der); - - var key = { - type: 'ed25519', - parts: [ - { name: 'A', data: utils.zeroPadToLength(A, 32) } - ] - }; - - return (new Key(key)); -} - -function readPkcs8X25519Public(der) { - var A = utils.readBitString(der); - - var key = { - type: 'curve25519', - parts: [ - { name: 'A', data: utils.zeroPadToLength(A, 32) } - ] - }; - - return (new Key(key)); -} - -function readPkcs8EdDSAPrivate(der) { - if (der.peek() === 0x00) - der.readByte(); - - der.readSequence(asn1.Ber.OctetString); - var k = der.readString(asn1.Ber.OctetString, true); - k = utils.zeroPadToLength(k, 32); - - var A; - if (der.peek() === asn1.Ber.BitString) { - A = utils.readBitString(der); - A = utils.zeroPadToLength(A, 32); - } else { - A = utils.calculateED25519Public(k); - } - - var key = { - type: 'ed25519', - parts: [ - { name: 'A', data: utils.zeroPadToLength(A, 32) }, - { name: 'k', data: utils.zeroPadToLength(k, 32) } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs8X25519Private(der) { - if (der.peek() === 0x00) - der.readByte(); - - der.readSequence(asn1.Ber.OctetString); - var k = der.readString(asn1.Ber.OctetString, true); - k = utils.zeroPadToLength(k, 32); - - var A = utils.calculateX25519Public(k); - - var key = { - type: 'curve25519', - parts: [ - { name: 'A', data: utils.zeroPadToLength(A, 32) }, - { name: 'k', data: utils.zeroPadToLength(k, 32) } - ] - }; - - return (new PrivateKey(key)); -} - -function pkcs8ToBuffer(key) { - var der = new asn1.BerWriter(); - writePkcs8(der, key); - return (der.buffer); -} - -function writePkcs8(der, key) { - der.startSequence(); - - if (PrivateKey.isPrivateKey(key)) { - var sillyInt = Buffer.from([0]); - der.writeBuffer(sillyInt, asn1.Ber.Integer); - } - - der.startSequence(); - switch (key.type) { - case 'rsa': - der.writeOID('1.2.840.113549.1.1.1'); - if (PrivateKey.isPrivateKey(key)) - writePkcs8RSAPrivate(key, der); - else - writePkcs8RSAPublic(key, der); - break; - case 'dsa': - der.writeOID('1.2.840.10040.4.1'); - if (PrivateKey.isPrivateKey(key)) - writePkcs8DSAPrivate(key, der); - else - writePkcs8DSAPublic(key, der); - break; - case 'ecdsa': - der.writeOID('1.2.840.10045.2.1'); - if (PrivateKey.isPrivateKey(key)) - writePkcs8ECDSAPrivate(key, der); - else - writePkcs8ECDSAPublic(key, der); - break; - case 'ed25519': - der.writeOID('1.3.101.112'); - if (PrivateKey.isPrivateKey(key)) - throw (new Error('Ed25519 private keys in pkcs8 ' + - 'format are not supported')); - writePkcs8EdDSAPublic(key, der); - break; - default: - throw (new Error('Unsupported key type: ' + key.type)); - } - - der.endSequence(); -} - -function writePkcs8RSAPrivate(key, der) { - der.writeNull(); - der.endSequence(); - - der.startSequence(asn1.Ber.OctetString); - der.startSequence(); - - var version = Buffer.from([0]); - der.writeBuffer(version, asn1.Ber.Integer); - - der.writeBuffer(key.part.n.data, asn1.Ber.Integer); - der.writeBuffer(key.part.e.data, asn1.Ber.Integer); - der.writeBuffer(key.part.d.data, asn1.Ber.Integer); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - if (!key.part.dmodp || !key.part.dmodq) - utils.addRSAMissing(key); - der.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer); - der.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer); - der.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer); - - der.endSequence(); - der.endSequence(); -} - -function writePkcs8RSAPublic(key, der) { - der.writeNull(); - der.endSequence(); - - der.startSequence(asn1.Ber.BitString); - der.writeByte(0x00); - - der.startSequence(); - der.writeBuffer(key.part.n.data, asn1.Ber.Integer); - der.writeBuffer(key.part.e.data, asn1.Ber.Integer); - der.endSequence(); - - der.endSequence(); -} - -function writePkcs8DSAPrivate(key, der) { - der.startSequence(); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - der.writeBuffer(key.part.g.data, asn1.Ber.Integer); - der.endSequence(); - - der.endSequence(); - - der.startSequence(asn1.Ber.OctetString); - der.writeBuffer(key.part.x.data, asn1.Ber.Integer); - der.endSequence(); -} - -function writePkcs8DSAPublic(key, der) { - der.startSequence(); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - der.writeBuffer(key.part.g.data, asn1.Ber.Integer); - der.endSequence(); - der.endSequence(); - - der.startSequence(asn1.Ber.BitString); - der.writeByte(0x00); - der.writeBuffer(key.part.y.data, asn1.Ber.Integer); - der.endSequence(); -} - -function writeECDSACurve(key, der) { - var curve = algs.curves[key.curve]; - if (curve.pkcs8oid) { - /* This one has a name in pkcs#8, so just write the oid */ - der.writeOID(curve.pkcs8oid); - - } else { - // ECParameters sequence - der.startSequence(); - - var version = Buffer.from([1]); - der.writeBuffer(version, asn1.Ber.Integer); - - // FieldID sequence - der.startSequence(); - der.writeOID('1.2.840.10045.1.1'); // prime-field - der.writeBuffer(curve.p, asn1.Ber.Integer); - der.endSequence(); - - // Curve sequence - der.startSequence(); - var a = curve.p; - if (a[0] === 0x0) - a = a.slice(1); - der.writeBuffer(a, asn1.Ber.OctetString); - der.writeBuffer(curve.b, asn1.Ber.OctetString); - der.writeBuffer(curve.s, asn1.Ber.BitString); - der.endSequence(); - - der.writeBuffer(curve.G, asn1.Ber.OctetString); - der.writeBuffer(curve.n, asn1.Ber.Integer); - var h = curve.h; - if (!h) { - h = Buffer.from([1]); - } - der.writeBuffer(h, asn1.Ber.Integer); - - // ECParameters - der.endSequence(); - } -} - -function writePkcs8ECDSAPublic(key, der) { - writeECDSACurve(key, der); - der.endSequence(); - - var Q = utils.ecNormalize(key.part.Q.data, true); - der.writeBuffer(Q, asn1.Ber.BitString); -} - -function writePkcs8ECDSAPrivate(key, der) { - writeECDSACurve(key, der); - der.endSequence(); - - der.startSequence(asn1.Ber.OctetString); - der.startSequence(); - - var version = Buffer.from([1]); - der.writeBuffer(version, asn1.Ber.Integer); - - der.writeBuffer(key.part.d.data, asn1.Ber.OctetString); - - der.startSequence(0xa1); - var Q = utils.ecNormalize(key.part.Q.data, true); - der.writeBuffer(Q, asn1.Ber.BitString); - der.endSequence(); - - der.endSequence(); - der.endSequence(); -} - -function writePkcs8EdDSAPublic(key, der) { - der.endSequence(); - - utils.writeBitString(der, key.part.A.data); -} - -function writePkcs8EdDSAPrivate(key, der) { - der.endSequence(); - - var k = utils.mpNormalize(key.part.k.data, true); - der.startSequence(asn1.Ber.OctetString); - der.writeBuffer(k, asn1.Ber.OctetString); - der.endSequence(); -} diff --git a/node_modules/sshpk/lib/formats/putty.js b/node_modules/sshpk/lib/formats/putty.js deleted file mode 100644 index 344419f..0000000 --- a/node_modules/sshpk/lib/formats/putty.js +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2018 Joyent, Inc. - -module.exports = { - read: read, - write: write -}; - -var assert = require('assert-plus'); -var Buffer = require('safer-buffer').Buffer; -var rfc4253 = require('./rfc4253'); -var Key = require('../key'); - -var errors = require('../errors'); - -function read(buf, options) { - var lines = buf.toString('ascii').split(/[\r\n]+/); - var found = false; - var parts; - var si = 0; - while (si < lines.length) { - parts = splitHeader(lines[si++]); - if (parts && - parts[0].toLowerCase() === 'putty-user-key-file-2') { - found = true; - break; - } - } - if (!found) { - throw (new Error('No PuTTY format first line found')); - } - var alg = parts[1]; - - parts = splitHeader(lines[si++]); - assert.equal(parts[0].toLowerCase(), 'encryption'); - - parts = splitHeader(lines[si++]); - assert.equal(parts[0].toLowerCase(), 'comment'); - var comment = parts[1]; - - parts = splitHeader(lines[si++]); - assert.equal(parts[0].toLowerCase(), 'public-lines'); - var publicLines = parseInt(parts[1], 10); - if (!isFinite(publicLines) || publicLines < 0 || - publicLines > lines.length) { - throw (new Error('Invalid public-lines count')); - } - - var publicBuf = Buffer.from( - lines.slice(si, si + publicLines).join(''), 'base64'); - var keyType = rfc4253.algToKeyType(alg); - var key = rfc4253.read(publicBuf); - if (key.type !== keyType) { - throw (new Error('Outer key algorithm mismatch')); - } - key.comment = comment; - return (key); -} - -function splitHeader(line) { - var idx = line.indexOf(':'); - if (idx === -1) - return (null); - var header = line.slice(0, idx); - ++idx; - while (line[idx] === ' ') - ++idx; - var rest = line.slice(idx); - return ([header, rest]); -} - -function write(key, options) { - assert.object(key); - if (!Key.isKey(key)) - throw (new Error('Must be a public key')); - - var alg = rfc4253.keyTypeToAlg(key); - var buf = rfc4253.write(key); - var comment = key.comment || ''; - - var b64 = buf.toString('base64'); - var lines = wrap(b64, 64); - - lines.unshift('Public-Lines: ' + lines.length); - lines.unshift('Comment: ' + comment); - lines.unshift('Encryption: none'); - lines.unshift('PuTTY-User-Key-File-2: ' + alg); - - return (Buffer.from(lines.join('\n') + '\n')); -} - -function wrap(txt, len) { - var lines = []; - var pos = 0; - while (pos < txt.length) { - lines.push(txt.slice(pos, pos + 64)); - pos += 64; - } - return (lines); -} diff --git a/node_modules/sshpk/lib/formats/rfc4253.js b/node_modules/sshpk/lib/formats/rfc4253.js deleted file mode 100644 index 52fddcb..0000000 --- a/node_modules/sshpk/lib/formats/rfc4253.js +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read.bind(undefined, false, undefined), - readType: read.bind(undefined, false), - write: write, - /* semi-private api, used by sshpk-agent */ - readPartial: read.bind(undefined, true), - - /* shared with ssh format */ - readInternal: read, - keyTypeToAlg: keyTypeToAlg, - algToKeyType: algToKeyType -}; - -var assert = require('assert-plus'); -var Buffer = require('safer-buffer').Buffer; -var algs = require('../algs'); -var utils = require('../utils'); -var Key = require('../key'); -var PrivateKey = require('../private-key'); -var SSHBuffer = require('../ssh-buffer'); - -function algToKeyType(alg) { - assert.string(alg); - if (alg === 'ssh-dss') - return ('dsa'); - else if (alg === 'ssh-rsa') - return ('rsa'); - else if (alg === 'ssh-ed25519') - return ('ed25519'); - else if (alg === 'ssh-curve25519') - return ('curve25519'); - else if (alg.match(/^ecdsa-sha2-/)) - return ('ecdsa'); - else - throw (new Error('Unknown algorithm ' + alg)); -} - -function keyTypeToAlg(key) { - assert.object(key); - if (key.type === 'dsa') - return ('ssh-dss'); - else if (key.type === 'rsa') - return ('ssh-rsa'); - else if (key.type === 'ed25519') - return ('ssh-ed25519'); - else if (key.type === 'curve25519') - return ('ssh-curve25519'); - else if (key.type === 'ecdsa') - return ('ecdsa-sha2-' + key.part.curve.data.toString()); - else - throw (new Error('Unknown key type ' + key.type)); -} - -function read(partial, type, buf, options) { - if (typeof (buf) === 'string') - buf = Buffer.from(buf); - assert.buffer(buf, 'buf'); - - var key = {}; - - var parts = key.parts = []; - var sshbuf = new SSHBuffer({buffer: buf}); - - var alg = sshbuf.readString(); - assert.ok(!sshbuf.atEnd(), 'key must have at least one part'); - - key.type = algToKeyType(alg); - - var partCount = algs.info[key.type].parts.length; - if (type && type === 'private') - partCount = algs.privInfo[key.type].parts.length; - - while (!sshbuf.atEnd() && parts.length < partCount) - parts.push(sshbuf.readPart()); - while (!partial && !sshbuf.atEnd()) - parts.push(sshbuf.readPart()); - - assert.ok(parts.length >= 1, - 'key must have at least one part'); - assert.ok(partial || sshbuf.atEnd(), - 'leftover bytes at end of key'); - - var Constructor = Key; - var algInfo = algs.info[key.type]; - if (type === 'private' || algInfo.parts.length !== parts.length) { - algInfo = algs.privInfo[key.type]; - Constructor = PrivateKey; - } - assert.strictEqual(algInfo.parts.length, parts.length); - - if (key.type === 'ecdsa') { - var res = /^ecdsa-sha2-(.+)$/.exec(alg); - assert.ok(res !== null); - assert.strictEqual(res[1], parts[0].data.toString()); - } - - var normalized = true; - for (var i = 0; i < algInfo.parts.length; ++i) { - var p = parts[i]; - p.name = algInfo.parts[i]; - /* - * OpenSSH stores ed25519 "private" keys as seed + public key - * concat'd together (k followed by A). We want to keep them - * separate for other formats that don't do this. - */ - if (key.type === 'ed25519' && p.name === 'k') - p.data = p.data.slice(0, 32); - - if (p.name !== 'curve' && algInfo.normalize !== false) { - var nd; - if (key.type === 'ed25519') { - nd = utils.zeroPadToLength(p.data, 32); - } else { - nd = utils.mpNormalize(p.data); - } - if (nd.toString('binary') !== - p.data.toString('binary')) { - p.data = nd; - normalized = false; - } - } - } - - if (normalized) - key._rfc4253Cache = sshbuf.toBuffer(); - - if (partial && typeof (partial) === 'object') { - partial.remainder = sshbuf.remainder(); - partial.consumed = sshbuf._offset; - } - - return (new Constructor(key)); -} - -function write(key, options) { - assert.object(key); - - var alg = keyTypeToAlg(key); - var i; - - var algInfo = algs.info[key.type]; - if (PrivateKey.isPrivateKey(key)) - algInfo = algs.privInfo[key.type]; - var parts = algInfo.parts; - - var buf = new SSHBuffer({}); - - buf.writeString(alg); - - for (i = 0; i < parts.length; ++i) { - var data = key.part[parts[i]].data; - if (algInfo.normalize !== false) { - if (key.type === 'ed25519') - data = utils.zeroPadToLength(data, 32); - else - data = utils.mpNormalize(data); - } - if (key.type === 'ed25519' && parts[i] === 'k') - data = Buffer.concat([data, key.part.A.data]); - buf.writeBuffer(data); - } - - return (buf.toBuffer()); -} diff --git a/node_modules/sshpk/lib/formats/ssh-private.js b/node_modules/sshpk/lib/formats/ssh-private.js deleted file mode 100644 index 5e7eed8..0000000 --- a/node_modules/sshpk/lib/formats/ssh-private.js +++ /dev/null @@ -1,262 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read, - readSSHPrivate: readSSHPrivate, - write: write -}; - -var assert = require('assert-plus'); -var asn1 = require('asn1'); -var Buffer = require('safer-buffer').Buffer; -var algs = require('../algs'); -var utils = require('../utils'); -var crypto = require('crypto'); - -var Key = require('../key'); -var PrivateKey = require('../private-key'); -var pem = require('./pem'); -var rfc4253 = require('./rfc4253'); -var SSHBuffer = require('../ssh-buffer'); -var errors = require('../errors'); - -var bcrypt; - -function read(buf, options) { - return (pem.read(buf, options)); -} - -var MAGIC = 'openssh-key-v1'; - -function readSSHPrivate(type, buf, options) { - buf = new SSHBuffer({buffer: buf}); - - var magic = buf.readCString(); - assert.strictEqual(magic, MAGIC, 'bad magic string'); - - var cipher = buf.readString(); - var kdf = buf.readString(); - var kdfOpts = buf.readBuffer(); - - var nkeys = buf.readInt(); - if (nkeys !== 1) { - throw (new Error('OpenSSH-format key file contains ' + - 'multiple keys: this is unsupported.')); - } - - var pubKey = buf.readBuffer(); - - if (type === 'public') { - assert.ok(buf.atEnd(), 'excess bytes left after key'); - return (rfc4253.read(pubKey)); - } - - var privKeyBlob = buf.readBuffer(); - assert.ok(buf.atEnd(), 'excess bytes left after key'); - - var kdfOptsBuf = new SSHBuffer({ buffer: kdfOpts }); - switch (kdf) { - case 'none': - if (cipher !== 'none') { - throw (new Error('OpenSSH-format key uses KDF "none" ' + - 'but specifies a cipher other than "none"')); - } - break; - case 'bcrypt': - var salt = kdfOptsBuf.readBuffer(); - var rounds = kdfOptsBuf.readInt(); - var cinf = utils.opensshCipherInfo(cipher); - if (bcrypt === undefined) { - bcrypt = require('bcrypt-pbkdf'); - } - - if (typeof (options.passphrase) === 'string') { - options.passphrase = Buffer.from(options.passphrase, - 'utf-8'); - } - if (!Buffer.isBuffer(options.passphrase)) { - throw (new errors.KeyEncryptedError( - options.filename, 'OpenSSH')); - } - - var pass = new Uint8Array(options.passphrase); - var salti = new Uint8Array(salt); - /* Use the pbkdf to derive both the key and the IV. */ - var out = new Uint8Array(cinf.keySize + cinf.blockSize); - var res = bcrypt.pbkdf(pass, pass.length, salti, salti.length, - out, out.length, rounds); - if (res !== 0) { - throw (new Error('bcrypt_pbkdf function returned ' + - 'failure, parameters invalid')); - } - out = Buffer.from(out); - var ckey = out.slice(0, cinf.keySize); - var iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize); - var cipherStream = crypto.createDecipheriv(cinf.opensslName, - ckey, iv); - cipherStream.setAutoPadding(false); - var chunk, chunks = []; - cipherStream.once('error', function (e) { - if (e.toString().indexOf('bad decrypt') !== -1) { - throw (new Error('Incorrect passphrase ' + - 'supplied, could not decrypt key')); - } - throw (e); - }); - cipherStream.write(privKeyBlob); - cipherStream.end(); - while ((chunk = cipherStream.read()) !== null) - chunks.push(chunk); - privKeyBlob = Buffer.concat(chunks); - break; - default: - throw (new Error( - 'OpenSSH-format key uses unknown KDF "' + kdf + '"')); - } - - buf = new SSHBuffer({buffer: privKeyBlob}); - - var checkInt1 = buf.readInt(); - var checkInt2 = buf.readInt(); - if (checkInt1 !== checkInt2) { - throw (new Error('Incorrect passphrase supplied, could not ' + - 'decrypt key')); - } - - var ret = {}; - var key = rfc4253.readInternal(ret, 'private', buf.remainder()); - - buf.skip(ret.consumed); - - var comment = buf.readString(); - key.comment = comment; - - return (key); -} - -function write(key, options) { - var pubKey; - if (PrivateKey.isPrivateKey(key)) - pubKey = key.toPublic(); - else - pubKey = key; - - var cipher = 'none'; - var kdf = 'none'; - var kdfopts = Buffer.alloc(0); - var cinf = { blockSize: 8 }; - var passphrase; - if (options !== undefined) { - passphrase = options.passphrase; - if (typeof (passphrase) === 'string') - passphrase = Buffer.from(passphrase, 'utf-8'); - if (passphrase !== undefined) { - assert.buffer(passphrase, 'options.passphrase'); - assert.optionalString(options.cipher, 'options.cipher'); - cipher = options.cipher; - if (cipher === undefined) - cipher = 'aes128-ctr'; - cinf = utils.opensshCipherInfo(cipher); - kdf = 'bcrypt'; - } - } - - var privBuf; - if (PrivateKey.isPrivateKey(key)) { - privBuf = new SSHBuffer({}); - var checkInt = crypto.randomBytes(4).readUInt32BE(0); - privBuf.writeInt(checkInt); - privBuf.writeInt(checkInt); - privBuf.write(key.toBuffer('rfc4253')); - privBuf.writeString(key.comment || ''); - - var n = 1; - while (privBuf._offset % cinf.blockSize !== 0) - privBuf.writeChar(n++); - privBuf = privBuf.toBuffer(); - } - - switch (kdf) { - case 'none': - break; - case 'bcrypt': - var salt = crypto.randomBytes(16); - var rounds = 16; - var kdfssh = new SSHBuffer({}); - kdfssh.writeBuffer(salt); - kdfssh.writeInt(rounds); - kdfopts = kdfssh.toBuffer(); - - if (bcrypt === undefined) { - bcrypt = require('bcrypt-pbkdf'); - } - var pass = new Uint8Array(passphrase); - var salti = new Uint8Array(salt); - /* Use the pbkdf to derive both the key and the IV. */ - var out = new Uint8Array(cinf.keySize + cinf.blockSize); - var res = bcrypt.pbkdf(pass, pass.length, salti, salti.length, - out, out.length, rounds); - if (res !== 0) { - throw (new Error('bcrypt_pbkdf function returned ' + - 'failure, parameters invalid')); - } - out = Buffer.from(out); - var ckey = out.slice(0, cinf.keySize); - var iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize); - - var cipherStream = crypto.createCipheriv(cinf.opensslName, - ckey, iv); - cipherStream.setAutoPadding(false); - var chunk, chunks = []; - cipherStream.once('error', function (e) { - throw (e); - }); - cipherStream.write(privBuf); - cipherStream.end(); - while ((chunk = cipherStream.read()) !== null) - chunks.push(chunk); - privBuf = Buffer.concat(chunks); - break; - default: - throw (new Error('Unsupported kdf ' + kdf)); - } - - var buf = new SSHBuffer({}); - - buf.writeCString(MAGIC); - buf.writeString(cipher); /* cipher */ - buf.writeString(kdf); /* kdf */ - buf.writeBuffer(kdfopts); /* kdfoptions */ - - buf.writeInt(1); /* nkeys */ - buf.writeBuffer(pubKey.toBuffer('rfc4253')); - - if (privBuf) - buf.writeBuffer(privBuf); - - buf = buf.toBuffer(); - - var header; - if (PrivateKey.isPrivateKey(key)) - header = 'OPENSSH PRIVATE KEY'; - else - header = 'OPENSSH PUBLIC KEY'; - - var tmp = buf.toString('base64'); - var len = tmp.length + (tmp.length / 70) + - 18 + 16 + header.length*2 + 10; - buf = Buffer.alloc(len); - var o = 0; - o += buf.write('-----BEGIN ' + header + '-----\n', o); - for (var i = 0; i < tmp.length; ) { - var limit = i + 70; - if (limit > tmp.length) - limit = tmp.length; - o += buf.write(tmp.slice(i, limit), o); - buf[o++] = 10; - i = limit; - } - o += buf.write('-----END ' + header + '-----\n', o); - - return (buf.slice(0, o)); -} diff --git a/node_modules/sshpk/lib/formats/ssh.js b/node_modules/sshpk/lib/formats/ssh.js deleted file mode 100644 index c8e9c93..0000000 --- a/node_modules/sshpk/lib/formats/ssh.js +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read, - write: write -}; - -var assert = require('assert-plus'); -var Buffer = require('safer-buffer').Buffer; -var rfc4253 = require('./rfc4253'); -var utils = require('../utils'); -var Key = require('../key'); -var PrivateKey = require('../private-key'); - -var sshpriv = require('./ssh-private'); - -/*JSSTYLED*/ -var SSHKEY_RE = /^([a-z0-9-]+)[ \t]+([a-zA-Z0-9+\/]+[=]*)([ \t]+([^ \t][^\n]*[\n]*)?)?$/; -/*JSSTYLED*/ -var SSHKEY_RE2 = /^([a-z0-9-]+)[ \t\n]+([a-zA-Z0-9+\/][a-zA-Z0-9+\/ \t\n=]*)([^a-zA-Z0-9+\/ \t\n=].*)?$/; - -function read(buf, options) { - if (typeof (buf) !== 'string') { - assert.buffer(buf, 'buf'); - buf = buf.toString('ascii'); - } - - var trimmed = buf.trim().replace(/[\\\r]/g, ''); - var m = trimmed.match(SSHKEY_RE); - if (!m) - m = trimmed.match(SSHKEY_RE2); - assert.ok(m, 'key must match regex'); - - var type = rfc4253.algToKeyType(m[1]); - var kbuf = Buffer.from(m[2], 'base64'); - - /* - * This is a bit tricky. If we managed to parse the key and locate the - * key comment with the regex, then do a non-partial read and assert - * that we have consumed all bytes. If we couldn't locate the key - * comment, though, there may be whitespace shenanigans going on that - * have conjoined the comment to the rest of the key. We do a partial - * read in this case to try to make the best out of a sorry situation. - */ - var key; - var ret = {}; - if (m[4]) { - try { - key = rfc4253.read(kbuf); - - } catch (e) { - m = trimmed.match(SSHKEY_RE2); - assert.ok(m, 'key must match regex'); - kbuf = Buffer.from(m[2], 'base64'); - key = rfc4253.readInternal(ret, 'public', kbuf); - } - } else { - key = rfc4253.readInternal(ret, 'public', kbuf); - } - - assert.strictEqual(type, key.type); - - if (m[4] && m[4].length > 0) { - key.comment = m[4]; - - } else if (ret.consumed) { - /* - * Now the magic: trying to recover the key comment when it's - * gotten conjoined to the key or otherwise shenanigan'd. - * - * Work out how much base64 we used, then drop all non-base64 - * chars from the beginning up to this point in the the string. - * Then offset in this and try to make up for missing = chars. - */ - var data = m[2] + (m[3] ? m[3] : ''); - var realOffset = Math.ceil(ret.consumed / 3) * 4; - data = data.slice(0, realOffset - 2). /*JSSTYLED*/ - replace(/[^a-zA-Z0-9+\/=]/g, '') + - data.slice(realOffset - 2); - - var padding = ret.consumed % 3; - if (padding > 0 && - data.slice(realOffset - 1, realOffset) !== '=') - realOffset--; - while (data.slice(realOffset, realOffset + 1) === '=') - realOffset++; - - /* Finally, grab what we think is the comment & clean it up. */ - var trailer = data.slice(realOffset); - trailer = trailer.replace(/[\r\n]/g, ' '). - replace(/^\s+/, ''); - if (trailer.match(/^[a-zA-Z0-9]/)) - key.comment = trailer; - } - - return (key); -} - -function write(key, options) { - assert.object(key); - if (!Key.isKey(key)) - throw (new Error('Must be a public key')); - - var parts = []; - var alg = rfc4253.keyTypeToAlg(key); - parts.push(alg); - - var buf = rfc4253.write(key); - parts.push(buf.toString('base64')); - - if (key.comment) - parts.push(key.comment); - - return (Buffer.from(parts.join(' '))); -} diff --git a/node_modules/sshpk/lib/formats/x509-pem.js b/node_modules/sshpk/lib/formats/x509-pem.js deleted file mode 100644 index 3155ef0..0000000 --- a/node_modules/sshpk/lib/formats/x509-pem.js +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2016 Joyent, Inc. - -var x509 = require('./x509'); - -module.exports = { - read: read, - verify: x509.verify, - sign: x509.sign, - write: write -}; - -var assert = require('assert-plus'); -var asn1 = require('asn1'); -var Buffer = require('safer-buffer').Buffer; -var algs = require('../algs'); -var utils = require('../utils'); -var Key = require('../key'); -var PrivateKey = require('../private-key'); -var pem = require('./pem'); -var Identity = require('../identity'); -var Signature = require('../signature'); -var Certificate = require('../certificate'); - -function read(buf, options) { - if (typeof (buf) !== 'string') { - assert.buffer(buf, 'buf'); - buf = buf.toString('ascii'); - } - - var lines = buf.trim().split(/[\r\n]+/g); - - var m; - var si = -1; - while (!m && si < lines.length) { - m = lines[++si].match(/*JSSTYLED*/ - /[-]+[ ]*BEGIN CERTIFICATE[ ]*[-]+/); - } - assert.ok(m, 'invalid PEM header'); - - var m2; - var ei = lines.length; - while (!m2 && ei > 0) { - m2 = lines[--ei].match(/*JSSTYLED*/ - /[-]+[ ]*END CERTIFICATE[ ]*[-]+/); - } - assert.ok(m2, 'invalid PEM footer'); - - lines = lines.slice(si, ei + 1); - - var headers = {}; - while (true) { - lines = lines.slice(1); - m = lines[0].match(/*JSSTYLED*/ - /^([A-Za-z0-9-]+): (.+)$/); - if (!m) - break; - headers[m[1].toLowerCase()] = m[2]; - } - - /* Chop off the first and last lines */ - lines = lines.slice(0, -1).join(''); - buf = Buffer.from(lines, 'base64'); - - return (x509.read(buf, options)); -} - -function write(cert, options) { - var dbuf = x509.write(cert, options); - - var header = 'CERTIFICATE'; - var tmp = dbuf.toString('base64'); - var len = tmp.length + (tmp.length / 64) + - 18 + 16 + header.length*2 + 10; - var buf = Buffer.alloc(len); - var o = 0; - o += buf.write('-----BEGIN ' + header + '-----\n', o); - for (var i = 0; i < tmp.length; ) { - var limit = i + 64; - if (limit > tmp.length) - limit = tmp.length; - o += buf.write(tmp.slice(i, limit), o); - buf[o++] = 10; - i = limit; - } - o += buf.write('-----END ' + header + '-----\n', o); - - return (buf.slice(0, o)); -} diff --git a/node_modules/sshpk/lib/formats/x509.js b/node_modules/sshpk/lib/formats/x509.js deleted file mode 100644 index 0144c44..0000000 --- a/node_modules/sshpk/lib/formats/x509.js +++ /dev/null @@ -1,752 +0,0 @@ -// Copyright 2017 Joyent, Inc. - -module.exports = { - read: read, - verify: verify, - sign: sign, - signAsync: signAsync, - write: write -}; - -var assert = require('assert-plus'); -var asn1 = require('asn1'); -var Buffer = require('safer-buffer').Buffer; -var algs = require('../algs'); -var utils = require('../utils'); -var Key = require('../key'); -var PrivateKey = require('../private-key'); -var pem = require('./pem'); -var Identity = require('../identity'); -var Signature = require('../signature'); -var Certificate = require('../certificate'); -var pkcs8 = require('./pkcs8'); - -/* - * This file is based on RFC5280 (X.509). - */ - -/* Helper to read in a single mpint */ -function readMPInt(der, nm) { - assert.strictEqual(der.peek(), asn1.Ber.Integer, - nm + ' is not an Integer'); - return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true))); -} - -function verify(cert, key) { - var sig = cert.signatures.x509; - assert.object(sig, 'x509 signature'); - - var algParts = sig.algo.split('-'); - if (algParts[0] !== key.type) - return (false); - - var blob = sig.cache; - if (blob === undefined) { - var der = new asn1.BerWriter(); - writeTBSCert(cert, der); - blob = der.buffer; - } - - var verifier = key.createVerify(algParts[1]); - verifier.write(blob); - return (verifier.verify(sig.signature)); -} - -function Local(i) { - return (asn1.Ber.Context | asn1.Ber.Constructor | i); -} - -function Context(i) { - return (asn1.Ber.Context | i); -} - -var SIGN_ALGS = { - 'rsa-md5': '1.2.840.113549.1.1.4', - 'rsa-sha1': '1.2.840.113549.1.1.5', - 'rsa-sha256': '1.2.840.113549.1.1.11', - 'rsa-sha384': '1.2.840.113549.1.1.12', - 'rsa-sha512': '1.2.840.113549.1.1.13', - 'dsa-sha1': '1.2.840.10040.4.3', - 'dsa-sha256': '2.16.840.1.101.3.4.3.2', - 'ecdsa-sha1': '1.2.840.10045.4.1', - 'ecdsa-sha256': '1.2.840.10045.4.3.2', - 'ecdsa-sha384': '1.2.840.10045.4.3.3', - 'ecdsa-sha512': '1.2.840.10045.4.3.4', - 'ed25519-sha512': '1.3.101.112' -}; -Object.keys(SIGN_ALGS).forEach(function (k) { - SIGN_ALGS[SIGN_ALGS[k]] = k; -}); -SIGN_ALGS['1.3.14.3.2.3'] = 'rsa-md5'; -SIGN_ALGS['1.3.14.3.2.29'] = 'rsa-sha1'; - -var EXTS = { - 'issuerKeyId': '2.5.29.35', - 'altName': '2.5.29.17', - 'basicConstraints': '2.5.29.19', - 'keyUsage': '2.5.29.15', - 'extKeyUsage': '2.5.29.37' -}; - -function read(buf, options) { - if (typeof (buf) === 'string') { - buf = Buffer.from(buf, 'binary'); - } - assert.buffer(buf, 'buf'); - - var der = new asn1.BerReader(buf); - - der.readSequence(); - if (Math.abs(der.length - der.remain) > 1) { - throw (new Error('DER sequence does not contain whole byte ' + - 'stream')); - } - - var tbsStart = der.offset; - der.readSequence(); - var sigOffset = der.offset + der.length; - var tbsEnd = sigOffset; - - if (der.peek() === Local(0)) { - der.readSequence(Local(0)); - var version = der.readInt(); - assert.ok(version <= 3, - 'only x.509 versions up to v3 supported'); - } - - var cert = {}; - cert.signatures = {}; - var sig = (cert.signatures.x509 = {}); - sig.extras = {}; - - cert.serial = readMPInt(der, 'serial'); - - der.readSequence(); - var after = der.offset + der.length; - var certAlgOid = der.readOID(); - var certAlg = SIGN_ALGS[certAlgOid]; - if (certAlg === undefined) - throw (new Error('unknown signature algorithm ' + certAlgOid)); - - der._offset = after; - cert.issuer = Identity.parseAsn1(der); - - der.readSequence(); - cert.validFrom = readDate(der); - cert.validUntil = readDate(der); - - cert.subjects = [Identity.parseAsn1(der)]; - - der.readSequence(); - after = der.offset + der.length; - cert.subjectKey = pkcs8.readPkcs8(undefined, 'public', der); - der._offset = after; - - /* issuerUniqueID */ - if (der.peek() === Local(1)) { - der.readSequence(Local(1)); - sig.extras.issuerUniqueID = - buf.slice(der.offset, der.offset + der.length); - der._offset += der.length; - } - - /* subjectUniqueID */ - if (der.peek() === Local(2)) { - der.readSequence(Local(2)); - sig.extras.subjectUniqueID = - buf.slice(der.offset, der.offset + der.length); - der._offset += der.length; - } - - /* extensions */ - if (der.peek() === Local(3)) { - der.readSequence(Local(3)); - var extEnd = der.offset + der.length; - der.readSequence(); - - while (der.offset < extEnd) - readExtension(cert, buf, der); - - assert.strictEqual(der.offset, extEnd); - } - - assert.strictEqual(der.offset, sigOffset); - - der.readSequence(); - after = der.offset + der.length; - var sigAlgOid = der.readOID(); - var sigAlg = SIGN_ALGS[sigAlgOid]; - if (sigAlg === undefined) - throw (new Error('unknown signature algorithm ' + sigAlgOid)); - der._offset = after; - - var sigData = der.readString(asn1.Ber.BitString, true); - if (sigData[0] === 0) - sigData = sigData.slice(1); - var algParts = sigAlg.split('-'); - - sig.signature = Signature.parse(sigData, algParts[0], 'asn1'); - sig.signature.hashAlgorithm = algParts[1]; - sig.algo = sigAlg; - sig.cache = buf.slice(tbsStart, tbsEnd); - - return (new Certificate(cert)); -} - -function readDate(der) { - if (der.peek() === asn1.Ber.UTCTime) { - return (utcTimeToDate(der.readString(asn1.Ber.UTCTime))); - } else if (der.peek() === asn1.Ber.GeneralizedTime) { - return (gTimeToDate(der.readString(asn1.Ber.GeneralizedTime))); - } else { - throw (new Error('Unsupported date format')); - } -} - -function writeDate(der, date) { - if (date.getUTCFullYear() >= 2050 || date.getUTCFullYear() < 1950) { - der.writeString(dateToGTime(date), asn1.Ber.GeneralizedTime); - } else { - der.writeString(dateToUTCTime(date), asn1.Ber.UTCTime); - } -} - -/* RFC5280, section 4.2.1.6 (GeneralName type) */ -var ALTNAME = { - OtherName: Local(0), - RFC822Name: Context(1), - DNSName: Context(2), - X400Address: Local(3), - DirectoryName: Local(4), - EDIPartyName: Local(5), - URI: Context(6), - IPAddress: Context(7), - OID: Context(8) -}; - -/* RFC5280, section 4.2.1.12 (KeyPurposeId) */ -var EXTPURPOSE = { - 'serverAuth': '1.3.6.1.5.5.7.3.1', - 'clientAuth': '1.3.6.1.5.5.7.3.2', - 'codeSigning': '1.3.6.1.5.5.7.3.3', - - /* See https://github.com/joyent/oid-docs/blob/master/root.md */ - 'joyentDocker': '1.3.6.1.4.1.38678.1.4.1', - 'joyentCmon': '1.3.6.1.4.1.38678.1.4.2' -}; -var EXTPURPOSE_REV = {}; -Object.keys(EXTPURPOSE).forEach(function (k) { - EXTPURPOSE_REV[EXTPURPOSE[k]] = k; -}); - -var KEYUSEBITS = [ - 'signature', 'identity', 'keyEncryption', - 'encryption', 'keyAgreement', 'ca', 'crl' -]; - -function readExtension(cert, buf, der) { - der.readSequence(); - var after = der.offset + der.length; - var extId = der.readOID(); - var id; - var sig = cert.signatures.x509; - if (!sig.extras.exts) - sig.extras.exts = []; - - var critical; - if (der.peek() === asn1.Ber.Boolean) - critical = der.readBoolean(); - - switch (extId) { - case (EXTS.basicConstraints): - der.readSequence(asn1.Ber.OctetString); - der.readSequence(); - var bcEnd = der.offset + der.length; - var ca = false; - if (der.peek() === asn1.Ber.Boolean) - ca = der.readBoolean(); - if (cert.purposes === undefined) - cert.purposes = []; - if (ca === true) - cert.purposes.push('ca'); - var bc = { oid: extId, critical: critical }; - if (der.offset < bcEnd && der.peek() === asn1.Ber.Integer) - bc.pathLen = der.readInt(); - sig.extras.exts.push(bc); - break; - case (EXTS.extKeyUsage): - der.readSequence(asn1.Ber.OctetString); - der.readSequence(); - if (cert.purposes === undefined) - cert.purposes = []; - var ekEnd = der.offset + der.length; - while (der.offset < ekEnd) { - var oid = der.readOID(); - cert.purposes.push(EXTPURPOSE_REV[oid] || oid); - } - /* - * This is a bit of a hack: in the case where we have a cert - * that's only allowed to do serverAuth or clientAuth (and not - * the other), we want to make sure all our Subjects are of - * the right type. But we already parsed our Subjects and - * decided if they were hosts or users earlier (since it appears - * first in the cert). - * - * So we go through and mutate them into the right kind here if - * it doesn't match. This might not be hugely beneficial, as it - * seems that single-purpose certs are not often seen in the - * wild. - */ - if (cert.purposes.indexOf('serverAuth') !== -1 && - cert.purposes.indexOf('clientAuth') === -1) { - cert.subjects.forEach(function (ide) { - if (ide.type !== 'host') { - ide.type = 'host'; - ide.hostname = ide.uid || - ide.email || - ide.components[0].value; - } - }); - } else if (cert.purposes.indexOf('clientAuth') !== -1 && - cert.purposes.indexOf('serverAuth') === -1) { - cert.subjects.forEach(function (ide) { - if (ide.type !== 'user') { - ide.type = 'user'; - ide.uid = ide.hostname || - ide.email || - ide.components[0].value; - } - }); - } - sig.extras.exts.push({ oid: extId, critical: critical }); - break; - case (EXTS.keyUsage): - der.readSequence(asn1.Ber.OctetString); - var bits = der.readString(asn1.Ber.BitString, true); - var setBits = readBitField(bits, KEYUSEBITS); - setBits.forEach(function (bit) { - if (cert.purposes === undefined) - cert.purposes = []; - if (cert.purposes.indexOf(bit) === -1) - cert.purposes.push(bit); - }); - sig.extras.exts.push({ oid: extId, critical: critical, - bits: bits }); - break; - case (EXTS.altName): - der.readSequence(asn1.Ber.OctetString); - der.readSequence(); - var aeEnd = der.offset + der.length; - while (der.offset < aeEnd) { - switch (der.peek()) { - case ALTNAME.OtherName: - case ALTNAME.EDIPartyName: - der.readSequence(); - der._offset += der.length; - break; - case ALTNAME.OID: - der.readOID(ALTNAME.OID); - break; - case ALTNAME.RFC822Name: - /* RFC822 specifies email addresses */ - var email = der.readString(ALTNAME.RFC822Name); - id = Identity.forEmail(email); - if (!cert.subjects[0].equals(id)) - cert.subjects.push(id); - break; - case ALTNAME.DirectoryName: - der.readSequence(ALTNAME.DirectoryName); - id = Identity.parseAsn1(der); - if (!cert.subjects[0].equals(id)) - cert.subjects.push(id); - break; - case ALTNAME.DNSName: - var host = der.readString( - ALTNAME.DNSName); - id = Identity.forHost(host); - if (!cert.subjects[0].equals(id)) - cert.subjects.push(id); - break; - default: - der.readString(der.peek()); - break; - } - } - sig.extras.exts.push({ oid: extId, critical: critical }); - break; - default: - sig.extras.exts.push({ - oid: extId, - critical: critical, - data: der.readString(asn1.Ber.OctetString, true) - }); - break; - } - - der._offset = after; -} - -var UTCTIME_RE = - /^([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/; -function utcTimeToDate(t) { - var m = t.match(UTCTIME_RE); - assert.ok(m, 'timestamps must be in UTC'); - var d = new Date(); - - var thisYear = d.getUTCFullYear(); - var century = Math.floor(thisYear / 100) * 100; - - var year = parseInt(m[1], 10); - if (thisYear % 100 < 50 && year >= 60) - year += (century - 1); - else - year += century; - d.setUTCFullYear(year, parseInt(m[2], 10) - 1, parseInt(m[3], 10)); - d.setUTCHours(parseInt(m[4], 10), parseInt(m[5], 10)); - if (m[6] && m[6].length > 0) - d.setUTCSeconds(parseInt(m[6], 10)); - return (d); -} - -var GTIME_RE = - /^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/; -function gTimeToDate(t) { - var m = t.match(GTIME_RE); - assert.ok(m); - var d = new Date(); - - d.setUTCFullYear(parseInt(m[1], 10), parseInt(m[2], 10) - 1, - parseInt(m[3], 10)); - d.setUTCHours(parseInt(m[4], 10), parseInt(m[5], 10)); - if (m[6] && m[6].length > 0) - d.setUTCSeconds(parseInt(m[6], 10)); - return (d); -} - -function zeroPad(n, m) { - if (m === undefined) - m = 2; - var s = '' + n; - while (s.length < m) - s = '0' + s; - return (s); -} - -function dateToUTCTime(d) { - var s = ''; - s += zeroPad(d.getUTCFullYear() % 100); - s += zeroPad(d.getUTCMonth() + 1); - s += zeroPad(d.getUTCDate()); - s += zeroPad(d.getUTCHours()); - s += zeroPad(d.getUTCMinutes()); - s += zeroPad(d.getUTCSeconds()); - s += 'Z'; - return (s); -} - -function dateToGTime(d) { - var s = ''; - s += zeroPad(d.getUTCFullYear(), 4); - s += zeroPad(d.getUTCMonth() + 1); - s += zeroPad(d.getUTCDate()); - s += zeroPad(d.getUTCHours()); - s += zeroPad(d.getUTCMinutes()); - s += zeroPad(d.getUTCSeconds()); - s += 'Z'; - return (s); -} - -function sign(cert, key) { - if (cert.signatures.x509 === undefined) - cert.signatures.x509 = {}; - var sig = cert.signatures.x509; - - sig.algo = key.type + '-' + key.defaultHashAlgorithm(); - if (SIGN_ALGS[sig.algo] === undefined) - return (false); - - var der = new asn1.BerWriter(); - writeTBSCert(cert, der); - var blob = der.buffer; - sig.cache = blob; - - var signer = key.createSign(); - signer.write(blob); - cert.signatures.x509.signature = signer.sign(); - - return (true); -} - -function signAsync(cert, signer, done) { - if (cert.signatures.x509 === undefined) - cert.signatures.x509 = {}; - var sig = cert.signatures.x509; - - var der = new asn1.BerWriter(); - writeTBSCert(cert, der); - var blob = der.buffer; - sig.cache = blob; - - signer(blob, function (err, signature) { - if (err) { - done(err); - return; - } - sig.algo = signature.type + '-' + signature.hashAlgorithm; - if (SIGN_ALGS[sig.algo] === undefined) { - done(new Error('Invalid signing algorithm "' + - sig.algo + '"')); - return; - } - sig.signature = signature; - done(); - }); -} - -function write(cert, options) { - var sig = cert.signatures.x509; - assert.object(sig, 'x509 signature'); - - var der = new asn1.BerWriter(); - der.startSequence(); - if (sig.cache) { - der._ensure(sig.cache.length); - sig.cache.copy(der._buf, der._offset); - der._offset += sig.cache.length; - } else { - writeTBSCert(cert, der); - } - - der.startSequence(); - der.writeOID(SIGN_ALGS[sig.algo]); - if (sig.algo.match(/^rsa-/)) - der.writeNull(); - der.endSequence(); - - var sigData = sig.signature.toBuffer('asn1'); - var data = Buffer.alloc(sigData.length + 1); - data[0] = 0; - sigData.copy(data, 1); - der.writeBuffer(data, asn1.Ber.BitString); - der.endSequence(); - - return (der.buffer); -} - -function writeTBSCert(cert, der) { - var sig = cert.signatures.x509; - assert.object(sig, 'x509 signature'); - - der.startSequence(); - - der.startSequence(Local(0)); - der.writeInt(2); - der.endSequence(); - - der.writeBuffer(utils.mpNormalize(cert.serial), asn1.Ber.Integer); - - der.startSequence(); - der.writeOID(SIGN_ALGS[sig.algo]); - if (sig.algo.match(/^rsa-/)) - der.writeNull(); - der.endSequence(); - - cert.issuer.toAsn1(der); - - der.startSequence(); - writeDate(der, cert.validFrom); - writeDate(der, cert.validUntil); - der.endSequence(); - - var subject = cert.subjects[0]; - var altNames = cert.subjects.slice(1); - subject.toAsn1(der); - - pkcs8.writePkcs8(der, cert.subjectKey); - - if (sig.extras && sig.extras.issuerUniqueID) { - der.writeBuffer(sig.extras.issuerUniqueID, Local(1)); - } - - if (sig.extras && sig.extras.subjectUniqueID) { - der.writeBuffer(sig.extras.subjectUniqueID, Local(2)); - } - - if (altNames.length > 0 || subject.type === 'host' || - (cert.purposes !== undefined && cert.purposes.length > 0) || - (sig.extras && sig.extras.exts)) { - der.startSequence(Local(3)); - der.startSequence(); - - var exts = []; - if (cert.purposes !== undefined && cert.purposes.length > 0) { - exts.push({ - oid: EXTS.basicConstraints, - critical: true - }); - exts.push({ - oid: EXTS.keyUsage, - critical: true - }); - exts.push({ - oid: EXTS.extKeyUsage, - critical: true - }); - } - exts.push({ oid: EXTS.altName }); - if (sig.extras && sig.extras.exts) - exts = sig.extras.exts; - - for (var i = 0; i < exts.length; ++i) { - der.startSequence(); - der.writeOID(exts[i].oid); - - if (exts[i].critical !== undefined) - der.writeBoolean(exts[i].critical); - - if (exts[i].oid === EXTS.altName) { - der.startSequence(asn1.Ber.OctetString); - der.startSequence(); - if (subject.type === 'host') { - der.writeString(subject.hostname, - Context(2)); - } - for (var j = 0; j < altNames.length; ++j) { - if (altNames[j].type === 'host') { - der.writeString( - altNames[j].hostname, - ALTNAME.DNSName); - } else if (altNames[j].type === - 'email') { - der.writeString( - altNames[j].email, - ALTNAME.RFC822Name); - } else { - /* - * Encode anything else as a - * DN style name for now. - */ - der.startSequence( - ALTNAME.DirectoryName); - altNames[j].toAsn1(der); - der.endSequence(); - } - } - der.endSequence(); - der.endSequence(); - } else if (exts[i].oid === EXTS.basicConstraints) { - der.startSequence(asn1.Ber.OctetString); - der.startSequence(); - var ca = (cert.purposes.indexOf('ca') !== -1); - var pathLen = exts[i].pathLen; - der.writeBoolean(ca); - if (pathLen !== undefined) - der.writeInt(pathLen); - der.endSequence(); - der.endSequence(); - } else if (exts[i].oid === EXTS.extKeyUsage) { - der.startSequence(asn1.Ber.OctetString); - der.startSequence(); - cert.purposes.forEach(function (purpose) { - if (purpose === 'ca') - return; - if (KEYUSEBITS.indexOf(purpose) !== -1) - return; - var oid = purpose; - if (EXTPURPOSE[purpose] !== undefined) - oid = EXTPURPOSE[purpose]; - der.writeOID(oid); - }); - der.endSequence(); - der.endSequence(); - } else if (exts[i].oid === EXTS.keyUsage) { - der.startSequence(asn1.Ber.OctetString); - /* - * If we parsed this certificate from a byte - * stream (i.e. we didn't generate it in sshpk) - * then we'll have a ".bits" property on the - * ext with the original raw byte contents. - * - * If we have this, use it here instead of - * regenerating it. This guarantees we output - * the same data we parsed, so signatures still - * validate. - */ - if (exts[i].bits !== undefined) { - der.writeBuffer(exts[i].bits, - asn1.Ber.BitString); - } else { - var bits = writeBitField(cert.purposes, - KEYUSEBITS); - der.writeBuffer(bits, - asn1.Ber.BitString); - } - der.endSequence(); - } else { - der.writeBuffer(exts[i].data, - asn1.Ber.OctetString); - } - - der.endSequence(); - } - - der.endSequence(); - der.endSequence(); - } - - der.endSequence(); -} - -/* - * Reads an ASN.1 BER bitfield out of the Buffer produced by doing - * `BerReader#readString(asn1.Ber.BitString)`. That function gives us the raw - * contents of the BitString tag, which is a count of unused bits followed by - * the bits as a right-padded byte string. - * - * `bits` is the Buffer, `bitIndex` should contain an array of string names - * for the bits in the string, ordered starting with bit #0 in the ASN.1 spec. - * - * Returns an array of Strings, the names of the bits that were set to 1. - */ -function readBitField(bits, bitIndex) { - var bitLen = 8 * (bits.length - 1) - bits[0]; - var setBits = {}; - for (var i = 0; i < bitLen; ++i) { - var byteN = 1 + Math.floor(i / 8); - var bit = 7 - (i % 8); - var mask = 1 << bit; - var bitVal = ((bits[byteN] & mask) !== 0); - var name = bitIndex[i]; - if (bitVal && typeof (name) === 'string') { - setBits[name] = true; - } - } - return (Object.keys(setBits)); -} - -/* - * `setBits` is an array of strings, containing the names for each bit that - * sould be set to 1. `bitIndex` is same as in `readBitField()`. - * - * Returns a Buffer, ready to be written out with `BerWriter#writeString()`. - */ -function writeBitField(setBits, bitIndex) { - var bitLen = bitIndex.length; - var blen = Math.ceil(bitLen / 8); - var unused = blen * 8 - bitLen; - var bits = Buffer.alloc(1 + blen); // zero-filled - bits[0] = unused; - for (var i = 0; i < bitLen; ++i) { - var byteN = 1 + Math.floor(i / 8); - var bit = 7 - (i % 8); - var mask = 1 << bit; - var name = bitIndex[i]; - if (name === undefined) - continue; - var bitVal = (setBits.indexOf(name) !== -1); - if (bitVal) { - bits[byteN] |= mask; - } - } - return (bits); -} diff --git a/node_modules/sshpk/lib/identity.js b/node_modules/sshpk/lib/identity.js deleted file mode 100644 index 7d75b66..0000000 --- a/node_modules/sshpk/lib/identity.js +++ /dev/null @@ -1,373 +0,0 @@ -// Copyright 2017 Joyent, Inc. - -module.exports = Identity; - -var assert = require('assert-plus'); -var algs = require('./algs'); -var crypto = require('crypto'); -var Fingerprint = require('./fingerprint'); -var Signature = require('./signature'); -var errs = require('./errors'); -var util = require('util'); -var utils = require('./utils'); -var asn1 = require('asn1'); -var Buffer = require('safer-buffer').Buffer; - -/*JSSTYLED*/ -var DNS_NAME_RE = /^([*]|[a-z0-9][a-z0-9\-]{0,62})(?:\.([*]|[a-z0-9][a-z0-9\-]{0,62}))*$/i; - -var oids = {}; -oids.cn = '2.5.4.3'; -oids.o = '2.5.4.10'; -oids.ou = '2.5.4.11'; -oids.l = '2.5.4.7'; -oids.s = '2.5.4.8'; -oids.c = '2.5.4.6'; -oids.sn = '2.5.4.4'; -oids.postalCode = '2.5.4.17'; -oids.serialNumber = '2.5.4.5'; -oids.street = '2.5.4.9'; -oids.x500UniqueIdentifier = '2.5.4.45'; -oids.role = '2.5.4.72'; -oids.telephoneNumber = '2.5.4.20'; -oids.description = '2.5.4.13'; -oids.dc = '0.9.2342.19200300.100.1.25'; -oids.uid = '0.9.2342.19200300.100.1.1'; -oids.mail = '0.9.2342.19200300.100.1.3'; -oids.title = '2.5.4.12'; -oids.gn = '2.5.4.42'; -oids.initials = '2.5.4.43'; -oids.pseudonym = '2.5.4.65'; -oids.emailAddress = '1.2.840.113549.1.9.1'; - -var unoids = {}; -Object.keys(oids).forEach(function (k) { - unoids[oids[k]] = k; -}); - -function Identity(opts) { - var self = this; - assert.object(opts, 'options'); - assert.arrayOfObject(opts.components, 'options.components'); - this.components = opts.components; - this.componentLookup = {}; - this.components.forEach(function (c) { - if (c.name && !c.oid) - c.oid = oids[c.name]; - if (c.oid && !c.name) - c.name = unoids[c.oid]; - if (self.componentLookup[c.name] === undefined) - self.componentLookup[c.name] = []; - self.componentLookup[c.name].push(c); - }); - if (this.componentLookup.cn && this.componentLookup.cn.length > 0) { - this.cn = this.componentLookup.cn[0].value; - } - assert.optionalString(opts.type, 'options.type'); - if (opts.type === undefined) { - if (this.components.length === 1 && - this.componentLookup.cn && - this.componentLookup.cn.length === 1 && - this.componentLookup.cn[0].value.match(DNS_NAME_RE)) { - this.type = 'host'; - this.hostname = this.componentLookup.cn[0].value; - - } else if (this.componentLookup.dc && - this.components.length === this.componentLookup.dc.length) { - this.type = 'host'; - this.hostname = this.componentLookup.dc.map( - function (c) { - return (c.value); - }).join('.'); - - } else if (this.componentLookup.uid && - this.components.length === - this.componentLookup.uid.length) { - this.type = 'user'; - this.uid = this.componentLookup.uid[0].value; - - } else if (this.componentLookup.cn && - this.componentLookup.cn.length === 1 && - this.componentLookup.cn[0].value.match(DNS_NAME_RE)) { - this.type = 'host'; - this.hostname = this.componentLookup.cn[0].value; - - } else if (this.componentLookup.uid && - this.componentLookup.uid.length === 1) { - this.type = 'user'; - this.uid = this.componentLookup.uid[0].value; - - } else if (this.componentLookup.mail && - this.componentLookup.mail.length === 1) { - this.type = 'email'; - this.email = this.componentLookup.mail[0].value; - - } else if (this.componentLookup.cn && - this.componentLookup.cn.length === 1) { - this.type = 'user'; - this.uid = this.componentLookup.cn[0].value; - - } else { - this.type = 'unknown'; - } - } else { - this.type = opts.type; - if (this.type === 'host') - this.hostname = opts.hostname; - else if (this.type === 'user') - this.uid = opts.uid; - else if (this.type === 'email') - this.email = opts.email; - else - throw (new Error('Unknown type ' + this.type)); - } -} - -Identity.prototype.toString = function () { - return (this.components.map(function (c) { - var n = c.name.toUpperCase(); - /*JSSTYLED*/ - n = n.replace(/=/g, '\\='); - var v = c.value; - /*JSSTYLED*/ - v = v.replace(/,/g, '\\,'); - return (n + '=' + v); - }).join(', ')); -}; - -Identity.prototype.get = function (name, asArray) { - assert.string(name, 'name'); - var arr = this.componentLookup[name]; - if (arr === undefined || arr.length === 0) - return (undefined); - if (!asArray && arr.length > 1) - throw (new Error('Multiple values for attribute ' + name)); - if (!asArray) - return (arr[0].value); - return (arr.map(function (c) { - return (c.value); - })); -}; - -Identity.prototype.toArray = function (idx) { - return (this.components.map(function (c) { - return ({ - name: c.name, - value: c.value - }); - })); -}; - -/* - * These are from X.680 -- PrintableString allowed chars are in section 37.4 - * table 8. Spec for IA5Strings is "1,6 + SPACE + DEL" where 1 refers to - * ISO IR #001 (standard ASCII control characters) and 6 refers to ISO IR #006 - * (the basic ASCII character set). - */ -/* JSSTYLED */ -var NOT_PRINTABLE = /[^a-zA-Z0-9 '(),+.\/:=?-]/; -/* JSSTYLED */ -var NOT_IA5 = /[^\x00-\x7f]/; - -Identity.prototype.toAsn1 = function (der, tag) { - der.startSequence(tag); - this.components.forEach(function (c) { - der.startSequence(asn1.Ber.Constructor | asn1.Ber.Set); - der.startSequence(); - der.writeOID(c.oid); - /* - * If we fit in a PrintableString, use that. Otherwise use an - * IA5String or UTF8String. - * - * If this identity was parsed from a DN, use the ASN.1 types - * from the original representation (otherwise this might not - * be a full match for the original in some validators). - */ - if (c.asn1type === asn1.Ber.Utf8String || - c.value.match(NOT_IA5)) { - var v = Buffer.from(c.value, 'utf8'); - der.writeBuffer(v, asn1.Ber.Utf8String); - - } else if (c.asn1type === asn1.Ber.IA5String || - c.value.match(NOT_PRINTABLE)) { - der.writeString(c.value, asn1.Ber.IA5String); - - } else { - var type = asn1.Ber.PrintableString; - if (c.asn1type !== undefined) - type = c.asn1type; - der.writeString(c.value, type); - } - der.endSequence(); - der.endSequence(); - }); - der.endSequence(); -}; - -function globMatch(a, b) { - if (a === '**' || b === '**') - return (true); - var aParts = a.split('.'); - var bParts = b.split('.'); - if (aParts.length !== bParts.length) - return (false); - for (var i = 0; i < aParts.length; ++i) { - if (aParts[i] === '*' || bParts[i] === '*') - continue; - if (aParts[i] !== bParts[i]) - return (false); - } - return (true); -} - -Identity.prototype.equals = function (other) { - if (!Identity.isIdentity(other, [1, 0])) - return (false); - if (other.components.length !== this.components.length) - return (false); - for (var i = 0; i < this.components.length; ++i) { - if (this.components[i].oid !== other.components[i].oid) - return (false); - if (!globMatch(this.components[i].value, - other.components[i].value)) { - return (false); - } - } - return (true); -}; - -Identity.forHost = function (hostname) { - assert.string(hostname, 'hostname'); - return (new Identity({ - type: 'host', - hostname: hostname, - components: [ { name: 'cn', value: hostname } ] - })); -}; - -Identity.forUser = function (uid) { - assert.string(uid, 'uid'); - return (new Identity({ - type: 'user', - uid: uid, - components: [ { name: 'uid', value: uid } ] - })); -}; - -Identity.forEmail = function (email) { - assert.string(email, 'email'); - return (new Identity({ - type: 'email', - email: email, - components: [ { name: 'mail', value: email } ] - })); -}; - -Identity.parseDN = function (dn) { - assert.string(dn, 'dn'); - var parts = ['']; - var idx = 0; - var rem = dn; - while (rem.length > 0) { - var m; - /*JSSTYLED*/ - if ((m = /^,/.exec(rem)) !== null) { - parts[++idx] = ''; - rem = rem.slice(m[0].length); - /*JSSTYLED*/ - } else if ((m = /^\\,/.exec(rem)) !== null) { - parts[idx] += ','; - rem = rem.slice(m[0].length); - /*JSSTYLED*/ - } else if ((m = /^\\./.exec(rem)) !== null) { - parts[idx] += m[0]; - rem = rem.slice(m[0].length); - /*JSSTYLED*/ - } else if ((m = /^[^\\,]+/.exec(rem)) !== null) { - parts[idx] += m[0]; - rem = rem.slice(m[0].length); - } else { - throw (new Error('Failed to parse DN')); - } - } - var cmps = parts.map(function (c) { - c = c.trim(); - var eqPos = c.indexOf('='); - while (eqPos > 0 && c.charAt(eqPos - 1) === '\\') - eqPos = c.indexOf('=', eqPos + 1); - if (eqPos === -1) { - throw (new Error('Failed to parse DN')); - } - /*JSSTYLED*/ - var name = c.slice(0, eqPos).toLowerCase().replace(/\\=/g, '='); - var value = c.slice(eqPos + 1); - return ({ name: name, value: value }); - }); - return (new Identity({ components: cmps })); -}; - -Identity.fromArray = function (components) { - assert.arrayOfObject(components, 'components'); - components.forEach(function (cmp) { - assert.object(cmp, 'component'); - assert.string(cmp.name, 'component.name'); - if (!Buffer.isBuffer(cmp.value) && - !(typeof (cmp.value) === 'string')) { - throw (new Error('Invalid component value')); - } - }); - return (new Identity({ components: components })); -}; - -Identity.parseAsn1 = function (der, top) { - var components = []; - der.readSequence(top); - var end = der.offset + der.length; - while (der.offset < end) { - der.readSequence(asn1.Ber.Constructor | asn1.Ber.Set); - var after = der.offset + der.length; - der.readSequence(); - var oid = der.readOID(); - var type = der.peek(); - var value; - switch (type) { - case asn1.Ber.PrintableString: - case asn1.Ber.IA5String: - case asn1.Ber.OctetString: - case asn1.Ber.T61String: - value = der.readString(type); - break; - case asn1.Ber.Utf8String: - value = der.readString(type, true); - value = value.toString('utf8'); - break; - case asn1.Ber.CharacterString: - case asn1.Ber.BMPString: - value = der.readString(type, true); - value = value.toString('utf16le'); - break; - default: - throw (new Error('Unknown asn1 type ' + type)); - } - components.push({ oid: oid, asn1type: type, value: value }); - der._offset = after; - } - der._offset = end; - return (new Identity({ - components: components - })); -}; - -Identity.isIdentity = function (obj, ver) { - return (utils.isCompatible(obj, Identity, ver)); -}; - -/* - * API versions for Identity: - * [1,0] -- initial ver - */ -Identity.prototype._sshpkApiVersion = [1, 0]; - -Identity._oldVersionDetect = function (obj) { - return ([1, 0]); -}; diff --git a/node_modules/sshpk/lib/index.js b/node_modules/sshpk/lib/index.js deleted file mode 100644 index f76db79..0000000 --- a/node_modules/sshpk/lib/index.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -var Key = require('./key'); -var Fingerprint = require('./fingerprint'); -var Signature = require('./signature'); -var PrivateKey = require('./private-key'); -var Certificate = require('./certificate'); -var Identity = require('./identity'); -var errs = require('./errors'); - -module.exports = { - /* top-level classes */ - Key: Key, - parseKey: Key.parse, - Fingerprint: Fingerprint, - parseFingerprint: Fingerprint.parse, - Signature: Signature, - parseSignature: Signature.parse, - PrivateKey: PrivateKey, - parsePrivateKey: PrivateKey.parse, - generatePrivateKey: PrivateKey.generate, - Certificate: Certificate, - parseCertificate: Certificate.parse, - createSelfSignedCertificate: Certificate.createSelfSigned, - createCertificate: Certificate.create, - Identity: Identity, - identityFromDN: Identity.parseDN, - identityForHost: Identity.forHost, - identityForUser: Identity.forUser, - identityForEmail: Identity.forEmail, - identityFromArray: Identity.fromArray, - - /* errors */ - FingerprintFormatError: errs.FingerprintFormatError, - InvalidAlgorithmError: errs.InvalidAlgorithmError, - KeyParseError: errs.KeyParseError, - SignatureParseError: errs.SignatureParseError, - KeyEncryptedError: errs.KeyEncryptedError, - CertificateParseError: errs.CertificateParseError -}; diff --git a/node_modules/sshpk/lib/key.js b/node_modules/sshpk/lib/key.js deleted file mode 100644 index 706f834..0000000 --- a/node_modules/sshpk/lib/key.js +++ /dev/null @@ -1,294 +0,0 @@ -// Copyright 2018 Joyent, Inc. - -module.exports = Key; - -var assert = require('assert-plus'); -var algs = require('./algs'); -var crypto = require('crypto'); -var Fingerprint = require('./fingerprint'); -var Signature = require('./signature'); -var DiffieHellman = require('./dhe').DiffieHellman; -var errs = require('./errors'); -var utils = require('./utils'); -var PrivateKey = require('./private-key'); -var edCompat; - -try { - edCompat = require('./ed-compat'); -} catch (e) { - /* Just continue through, and bail out if we try to use it. */ -} - -var InvalidAlgorithmError = errs.InvalidAlgorithmError; -var KeyParseError = errs.KeyParseError; - -var formats = {}; -formats['auto'] = require('./formats/auto'); -formats['pem'] = require('./formats/pem'); -formats['pkcs1'] = require('./formats/pkcs1'); -formats['pkcs8'] = require('./formats/pkcs8'); -formats['rfc4253'] = require('./formats/rfc4253'); -formats['ssh'] = require('./formats/ssh'); -formats['ssh-private'] = require('./formats/ssh-private'); -formats['openssh'] = formats['ssh-private']; -formats['dnssec'] = require('./formats/dnssec'); -formats['putty'] = require('./formats/putty'); -formats['ppk'] = formats['putty']; - -function Key(opts) { - assert.object(opts, 'options'); - assert.arrayOfObject(opts.parts, 'options.parts'); - assert.string(opts.type, 'options.type'); - assert.optionalString(opts.comment, 'options.comment'); - - var algInfo = algs.info[opts.type]; - if (typeof (algInfo) !== 'object') - throw (new InvalidAlgorithmError(opts.type)); - - var partLookup = {}; - for (var i = 0; i < opts.parts.length; ++i) { - var part = opts.parts[i]; - partLookup[part.name] = part; - } - - this.type = opts.type; - this.parts = opts.parts; - this.part = partLookup; - this.comment = undefined; - this.source = opts.source; - - /* for speeding up hashing/fingerprint operations */ - this._rfc4253Cache = opts._rfc4253Cache; - this._hashCache = {}; - - var sz; - this.curve = undefined; - if (this.type === 'ecdsa') { - var curve = this.part.curve.data.toString(); - this.curve = curve; - sz = algs.curves[curve].size; - } else if (this.type === 'ed25519' || this.type === 'curve25519') { - sz = 256; - this.curve = 'curve25519'; - } else { - var szPart = this.part[algInfo.sizePart]; - sz = szPart.data.length; - sz = sz * 8 - utils.countZeros(szPart.data); - } - this.size = sz; -} - -Key.formats = formats; - -Key.prototype.toBuffer = function (format, options) { - if (format === undefined) - format = 'ssh'; - assert.string(format, 'format'); - assert.object(formats[format], 'formats[format]'); - assert.optionalObject(options, 'options'); - - if (format === 'rfc4253') { - if (this._rfc4253Cache === undefined) - this._rfc4253Cache = formats['rfc4253'].write(this); - return (this._rfc4253Cache); - } - - return (formats[format].write(this, options)); -}; - -Key.prototype.toString = function (format, options) { - return (this.toBuffer(format, options).toString()); -}; - -Key.prototype.hash = function (algo, type) { - assert.string(algo, 'algorithm'); - assert.optionalString(type, 'type'); - if (type === undefined) - type = 'ssh'; - algo = algo.toLowerCase(); - if (algs.hashAlgs[algo] === undefined) - throw (new InvalidAlgorithmError(algo)); - - var cacheKey = algo + '||' + type; - if (this._hashCache[cacheKey]) - return (this._hashCache[cacheKey]); - - var buf; - if (type === 'ssh') { - buf = this.toBuffer('rfc4253'); - } else if (type === 'spki') { - buf = formats.pkcs8.pkcs8ToBuffer(this); - } else { - throw (new Error('Hash type ' + type + ' not supported')); - } - var hash = crypto.createHash(algo).update(buf).digest(); - this._hashCache[cacheKey] = hash; - return (hash); -}; - -Key.prototype.fingerprint = function (algo, type) { - if (algo === undefined) - algo = 'sha256'; - if (type === undefined) - type = 'ssh'; - assert.string(algo, 'algorithm'); - assert.string(type, 'type'); - var opts = { - type: 'key', - hash: this.hash(algo, type), - algorithm: algo, - hashType: type - }; - return (new Fingerprint(opts)); -}; - -Key.prototype.defaultHashAlgorithm = function () { - var hashAlgo = 'sha1'; - if (this.type === 'rsa') - hashAlgo = 'sha256'; - if (this.type === 'dsa' && this.size > 1024) - hashAlgo = 'sha256'; - if (this.type === 'ed25519') - hashAlgo = 'sha512'; - if (this.type === 'ecdsa') { - if (this.size <= 256) - hashAlgo = 'sha256'; - else if (this.size <= 384) - hashAlgo = 'sha384'; - else - hashAlgo = 'sha512'; - } - return (hashAlgo); -}; - -Key.prototype.createVerify = function (hashAlgo) { - if (hashAlgo === undefined) - hashAlgo = this.defaultHashAlgorithm(); - assert.string(hashAlgo, 'hash algorithm'); - - /* ED25519 is not supported by OpenSSL, use a javascript impl. */ - if (this.type === 'ed25519' && edCompat !== undefined) - return (new edCompat.Verifier(this, hashAlgo)); - if (this.type === 'curve25519') - throw (new Error('Curve25519 keys are not suitable for ' + - 'signing or verification')); - - var v, nm, err; - try { - nm = hashAlgo.toUpperCase(); - v = crypto.createVerify(nm); - } catch (e) { - err = e; - } - if (v === undefined || (err instanceof Error && - err.message.match(/Unknown message digest/))) { - nm = 'RSA-'; - nm += hashAlgo.toUpperCase(); - v = crypto.createVerify(nm); - } - assert.ok(v, 'failed to create verifier'); - var oldVerify = v.verify.bind(v); - var key = this.toBuffer('pkcs8'); - var curve = this.curve; - var self = this; - v.verify = function (signature, fmt) { - if (Signature.isSignature(signature, [2, 0])) { - if (signature.type !== self.type) - return (false); - if (signature.hashAlgorithm && - signature.hashAlgorithm !== hashAlgo) - return (false); - if (signature.curve && self.type === 'ecdsa' && - signature.curve !== curve) - return (false); - return (oldVerify(key, signature.toBuffer('asn1'))); - - } else if (typeof (signature) === 'string' || - Buffer.isBuffer(signature)) { - return (oldVerify(key, signature, fmt)); - - /* - * Avoid doing this on valid arguments, walking the prototype - * chain can be quite slow. - */ - } else if (Signature.isSignature(signature, [1, 0])) { - throw (new Error('signature was created by too old ' + - 'a version of sshpk and cannot be verified')); - - } else { - throw (new TypeError('signature must be a string, ' + - 'Buffer, or Signature object')); - } - }; - return (v); -}; - -Key.prototype.createDiffieHellman = function () { - if (this.type === 'rsa') - throw (new Error('RSA keys do not support Diffie-Hellman')); - - return (new DiffieHellman(this)); -}; -Key.prototype.createDH = Key.prototype.createDiffieHellman; - -Key.parse = function (data, format, options) { - if (typeof (data) !== 'string') - assert.buffer(data, 'data'); - if (format === undefined) - format = 'auto'; - assert.string(format, 'format'); - if (typeof (options) === 'string') - options = { filename: options }; - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalString(options.filename, 'options.filename'); - if (options.filename === undefined) - options.filename = '(unnamed)'; - - assert.object(formats[format], 'formats[format]'); - - try { - var k = formats[format].read(data, options); - if (k instanceof PrivateKey) - k = k.toPublic(); - if (!k.comment) - k.comment = options.filename; - return (k); - } catch (e) { - if (e.name === 'KeyEncryptedError') - throw (e); - throw (new KeyParseError(options.filename, format, e)); - } -}; - -Key.isKey = function (obj, ver) { - return (utils.isCompatible(obj, Key, ver)); -}; - -/* - * API versions for Key: - * [1,0] -- initial ver, may take Signature for createVerify or may not - * [1,1] -- added pkcs1, pkcs8 formats - * [1,2] -- added auto, ssh-private, openssh formats - * [1,3] -- added defaultHashAlgorithm - * [1,4] -- added ed support, createDH - * [1,5] -- first explicitly tagged version - * [1,6] -- changed ed25519 part names - * [1,7] -- spki hash types - */ -Key.prototype._sshpkApiVersion = [1, 7]; - -Key._oldVersionDetect = function (obj) { - assert.func(obj.toBuffer); - assert.func(obj.fingerprint); - if (obj.createDH) - return ([1, 4]); - if (obj.defaultHashAlgorithm) - return ([1, 3]); - if (obj.formats['auto']) - return ([1, 2]); - if (obj.formats['pkcs1']) - return ([1, 1]); - return ([1, 0]); -}; diff --git a/node_modules/sshpk/lib/private-key.js b/node_modules/sshpk/lib/private-key.js deleted file mode 100644 index 5600838..0000000 --- a/node_modules/sshpk/lib/private-key.js +++ /dev/null @@ -1,246 +0,0 @@ -// Copyright 2017 Joyent, Inc. - -module.exports = PrivateKey; - -var assert = require('assert-plus'); -var Buffer = require('safer-buffer').Buffer; -var algs = require('./algs'); -var crypto = require('crypto'); -var Fingerprint = require('./fingerprint'); -var Signature = require('./signature'); -var errs = require('./errors'); -var util = require('util'); -var utils = require('./utils'); -var dhe = require('./dhe'); -var generateECDSA = dhe.generateECDSA; -var generateED25519 = dhe.generateED25519; -var edCompat = require('./ed-compat'); -var nacl = require('tweetnacl'); - -var Key = require('./key'); - -var InvalidAlgorithmError = errs.InvalidAlgorithmError; -var KeyParseError = errs.KeyParseError; -var KeyEncryptedError = errs.KeyEncryptedError; - -var formats = {}; -formats['auto'] = require('./formats/auto'); -formats['pem'] = require('./formats/pem'); -formats['pkcs1'] = require('./formats/pkcs1'); -formats['pkcs8'] = require('./formats/pkcs8'); -formats['rfc4253'] = require('./formats/rfc4253'); -formats['ssh-private'] = require('./formats/ssh-private'); -formats['openssh'] = formats['ssh-private']; -formats['ssh'] = formats['ssh-private']; -formats['dnssec'] = require('./formats/dnssec'); - -function PrivateKey(opts) { - assert.object(opts, 'options'); - Key.call(this, opts); - - this._pubCache = undefined; -} -util.inherits(PrivateKey, Key); - -PrivateKey.formats = formats; - -PrivateKey.prototype.toBuffer = function (format, options) { - if (format === undefined) - format = 'pkcs1'; - assert.string(format, 'format'); - assert.object(formats[format], 'formats[format]'); - assert.optionalObject(options, 'options'); - - return (formats[format].write(this, options)); -}; - -PrivateKey.prototype.hash = function (algo, type) { - return (this.toPublic().hash(algo, type)); -}; - -PrivateKey.prototype.fingerprint = function (algo, type) { - return (this.toPublic().fingerprint(algo, type)); -}; - -PrivateKey.prototype.toPublic = function () { - if (this._pubCache) - return (this._pubCache); - - var algInfo = algs.info[this.type]; - var pubParts = []; - for (var i = 0; i < algInfo.parts.length; ++i) { - var p = algInfo.parts[i]; - pubParts.push(this.part[p]); - } - - this._pubCache = new Key({ - type: this.type, - source: this, - parts: pubParts - }); - if (this.comment) - this._pubCache.comment = this.comment; - return (this._pubCache); -}; - -PrivateKey.prototype.derive = function (newType) { - assert.string(newType, 'type'); - var priv, pub, pair; - - if (this.type === 'ed25519' && newType === 'curve25519') { - priv = this.part.k.data; - if (priv[0] === 0x00) - priv = priv.slice(1); - - pair = nacl.box.keyPair.fromSecretKey(new Uint8Array(priv)); - pub = Buffer.from(pair.publicKey); - - return (new PrivateKey({ - type: 'curve25519', - parts: [ - { name: 'A', data: utils.mpNormalize(pub) }, - { name: 'k', data: utils.mpNormalize(priv) } - ] - })); - } else if (this.type === 'curve25519' && newType === 'ed25519') { - priv = this.part.k.data; - if (priv[0] === 0x00) - priv = priv.slice(1); - - pair = nacl.sign.keyPair.fromSeed(new Uint8Array(priv)); - pub = Buffer.from(pair.publicKey); - - return (new PrivateKey({ - type: 'ed25519', - parts: [ - { name: 'A', data: utils.mpNormalize(pub) }, - { name: 'k', data: utils.mpNormalize(priv) } - ] - })); - } - throw (new Error('Key derivation not supported from ' + this.type + - ' to ' + newType)); -}; - -PrivateKey.prototype.createVerify = function (hashAlgo) { - return (this.toPublic().createVerify(hashAlgo)); -}; - -PrivateKey.prototype.createSign = function (hashAlgo) { - if (hashAlgo === undefined) - hashAlgo = this.defaultHashAlgorithm(); - assert.string(hashAlgo, 'hash algorithm'); - - /* ED25519 is not supported by OpenSSL, use a javascript impl. */ - if (this.type === 'ed25519' && edCompat !== undefined) - return (new edCompat.Signer(this, hashAlgo)); - if (this.type === 'curve25519') - throw (new Error('Curve25519 keys are not suitable for ' + - 'signing or verification')); - - var v, nm, err; - try { - nm = hashAlgo.toUpperCase(); - v = crypto.createSign(nm); - } catch (e) { - err = e; - } - if (v === undefined || (err instanceof Error && - err.message.match(/Unknown message digest/))) { - nm = 'RSA-'; - nm += hashAlgo.toUpperCase(); - v = crypto.createSign(nm); - } - assert.ok(v, 'failed to create verifier'); - var oldSign = v.sign.bind(v); - var key = this.toBuffer('pkcs1'); - var type = this.type; - var curve = this.curve; - v.sign = function () { - var sig = oldSign(key); - if (typeof (sig) === 'string') - sig = Buffer.from(sig, 'binary'); - sig = Signature.parse(sig, type, 'asn1'); - sig.hashAlgorithm = hashAlgo; - sig.curve = curve; - return (sig); - }; - return (v); -}; - -PrivateKey.parse = function (data, format, options) { - if (typeof (data) !== 'string') - assert.buffer(data, 'data'); - if (format === undefined) - format = 'auto'; - assert.string(format, 'format'); - if (typeof (options) === 'string') - options = { filename: options }; - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalString(options.filename, 'options.filename'); - if (options.filename === undefined) - options.filename = '(unnamed)'; - - assert.object(formats[format], 'formats[format]'); - - try { - var k = formats[format].read(data, options); - assert.ok(k instanceof PrivateKey, 'key is not a private key'); - if (!k.comment) - k.comment = options.filename; - return (k); - } catch (e) { - if (e.name === 'KeyEncryptedError') - throw (e); - throw (new KeyParseError(options.filename, format, e)); - } -}; - -PrivateKey.isPrivateKey = function (obj, ver) { - return (utils.isCompatible(obj, PrivateKey, ver)); -}; - -PrivateKey.generate = function (type, options) { - if (options === undefined) - options = {}; - assert.object(options, 'options'); - - switch (type) { - case 'ecdsa': - if (options.curve === undefined) - options.curve = 'nistp256'; - assert.string(options.curve, 'options.curve'); - return (generateECDSA(options.curve)); - case 'ed25519': - return (generateED25519()); - default: - throw (new Error('Key generation not supported with key ' + - 'type "' + type + '"')); - } -}; - -/* - * API versions for PrivateKey: - * [1,0] -- initial ver - * [1,1] -- added auto, pkcs[18], openssh/ssh-private formats - * [1,2] -- added defaultHashAlgorithm - * [1,3] -- added derive, ed, createDH - * [1,4] -- first tagged version - * [1,5] -- changed ed25519 part names and format - * [1,6] -- type arguments for hash() and fingerprint() - */ -PrivateKey.prototype._sshpkApiVersion = [1, 6]; - -PrivateKey._oldVersionDetect = function (obj) { - assert.func(obj.toPublic); - assert.func(obj.createSign); - if (obj.derive) - return ([1, 3]); - if (obj.defaultHashAlgorithm) - return ([1, 2]); - if (obj.formats['auto']) - return ([1, 1]); - return ([1, 0]); -}; diff --git a/node_modules/sshpk/lib/signature.js b/node_modules/sshpk/lib/signature.js deleted file mode 100644 index aa8fdbb..0000000 --- a/node_modules/sshpk/lib/signature.js +++ /dev/null @@ -1,314 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = Signature; - -var assert = require('assert-plus'); -var Buffer = require('safer-buffer').Buffer; -var algs = require('./algs'); -var crypto = require('crypto'); -var errs = require('./errors'); -var utils = require('./utils'); -var asn1 = require('asn1'); -var SSHBuffer = require('./ssh-buffer'); - -var InvalidAlgorithmError = errs.InvalidAlgorithmError; -var SignatureParseError = errs.SignatureParseError; - -function Signature(opts) { - assert.object(opts, 'options'); - assert.arrayOfObject(opts.parts, 'options.parts'); - assert.string(opts.type, 'options.type'); - - var partLookup = {}; - for (var i = 0; i < opts.parts.length; ++i) { - var part = opts.parts[i]; - partLookup[part.name] = part; - } - - this.type = opts.type; - this.hashAlgorithm = opts.hashAlgo; - this.curve = opts.curve; - this.parts = opts.parts; - this.part = partLookup; -} - -Signature.prototype.toBuffer = function (format) { - if (format === undefined) - format = 'asn1'; - assert.string(format, 'format'); - - var buf; - var stype = 'ssh-' + this.type; - - switch (this.type) { - case 'rsa': - switch (this.hashAlgorithm) { - case 'sha256': - stype = 'rsa-sha2-256'; - break; - case 'sha512': - stype = 'rsa-sha2-512'; - break; - case 'sha1': - case undefined: - break; - default: - throw (new Error('SSH signature ' + - 'format does not support hash ' + - 'algorithm ' + this.hashAlgorithm)); - } - if (format === 'ssh') { - buf = new SSHBuffer({}); - buf.writeString(stype); - buf.writePart(this.part.sig); - return (buf.toBuffer()); - } else { - return (this.part.sig.data); - } - break; - - case 'ed25519': - if (format === 'ssh') { - buf = new SSHBuffer({}); - buf.writeString(stype); - buf.writePart(this.part.sig); - return (buf.toBuffer()); - } else { - return (this.part.sig.data); - } - break; - - case 'dsa': - case 'ecdsa': - var r, s; - if (format === 'asn1') { - var der = new asn1.BerWriter(); - der.startSequence(); - r = utils.mpNormalize(this.part.r.data); - s = utils.mpNormalize(this.part.s.data); - der.writeBuffer(r, asn1.Ber.Integer); - der.writeBuffer(s, asn1.Ber.Integer); - der.endSequence(); - return (der.buffer); - } else if (format === 'ssh' && this.type === 'dsa') { - buf = new SSHBuffer({}); - buf.writeString('ssh-dss'); - r = this.part.r.data; - if (r.length > 20 && r[0] === 0x00) - r = r.slice(1); - s = this.part.s.data; - if (s.length > 20 && s[0] === 0x00) - s = s.slice(1); - if ((this.hashAlgorithm && - this.hashAlgorithm !== 'sha1') || - r.length + s.length !== 40) { - throw (new Error('OpenSSH only supports ' + - 'DSA signatures with SHA1 hash')); - } - buf.writeBuffer(Buffer.concat([r, s])); - return (buf.toBuffer()); - } else if (format === 'ssh' && this.type === 'ecdsa') { - var inner = new SSHBuffer({}); - r = this.part.r.data; - inner.writeBuffer(r); - inner.writePart(this.part.s); - - buf = new SSHBuffer({}); - /* XXX: find a more proper way to do this? */ - var curve; - if (r[0] === 0x00) - r = r.slice(1); - var sz = r.length * 8; - if (sz === 256) - curve = 'nistp256'; - else if (sz === 384) - curve = 'nistp384'; - else if (sz === 528) - curve = 'nistp521'; - buf.writeString('ecdsa-sha2-' + curve); - buf.writeBuffer(inner.toBuffer()); - return (buf.toBuffer()); - } - throw (new Error('Invalid signature format')); - default: - throw (new Error('Invalid signature data')); - } -}; - -Signature.prototype.toString = function (format) { - assert.optionalString(format, 'format'); - return (this.toBuffer(format).toString('base64')); -}; - -Signature.parse = function (data, type, format) { - if (typeof (data) === 'string') - data = Buffer.from(data, 'base64'); - assert.buffer(data, 'data'); - assert.string(format, 'format'); - assert.string(type, 'type'); - - var opts = {}; - opts.type = type.toLowerCase(); - opts.parts = []; - - try { - assert.ok(data.length > 0, 'signature must not be empty'); - switch (opts.type) { - case 'rsa': - return (parseOneNum(data, type, format, opts)); - case 'ed25519': - return (parseOneNum(data, type, format, opts)); - - case 'dsa': - case 'ecdsa': - if (format === 'asn1') - return (parseDSAasn1(data, type, format, opts)); - else if (opts.type === 'dsa') - return (parseDSA(data, type, format, opts)); - else - return (parseECDSA(data, type, format, opts)); - - default: - throw (new InvalidAlgorithmError(type)); - } - - } catch (e) { - if (e instanceof InvalidAlgorithmError) - throw (e); - throw (new SignatureParseError(type, format, e)); - } -}; - -function parseOneNum(data, type, format, opts) { - if (format === 'ssh') { - try { - var buf = new SSHBuffer({buffer: data}); - var head = buf.readString(); - } catch (e) { - /* fall through */ - } - if (buf !== undefined) { - var msg = 'SSH signature does not match expected ' + - 'type (expected ' + type + ', got ' + head + ')'; - switch (head) { - case 'ssh-rsa': - assert.strictEqual(type, 'rsa', msg); - opts.hashAlgo = 'sha1'; - break; - case 'rsa-sha2-256': - assert.strictEqual(type, 'rsa', msg); - opts.hashAlgo = 'sha256'; - break; - case 'rsa-sha2-512': - assert.strictEqual(type, 'rsa', msg); - opts.hashAlgo = 'sha512'; - break; - case 'ssh-ed25519': - assert.strictEqual(type, 'ed25519', msg); - opts.hashAlgo = 'sha512'; - break; - default: - throw (new Error('Unknown SSH signature ' + - 'type: ' + head)); - } - var sig = buf.readPart(); - assert.ok(buf.atEnd(), 'extra trailing bytes'); - sig.name = 'sig'; - opts.parts.push(sig); - return (new Signature(opts)); - } - } - opts.parts.push({name: 'sig', data: data}); - return (new Signature(opts)); -} - -function parseDSAasn1(data, type, format, opts) { - var der = new asn1.BerReader(data); - der.readSequence(); - var r = der.readString(asn1.Ber.Integer, true); - var s = der.readString(asn1.Ber.Integer, true); - - opts.parts.push({name: 'r', data: utils.mpNormalize(r)}); - opts.parts.push({name: 's', data: utils.mpNormalize(s)}); - - return (new Signature(opts)); -} - -function parseDSA(data, type, format, opts) { - if (data.length != 40) { - var buf = new SSHBuffer({buffer: data}); - var d = buf.readBuffer(); - if (d.toString('ascii') === 'ssh-dss') - d = buf.readBuffer(); - assert.ok(buf.atEnd(), 'extra trailing bytes'); - assert.strictEqual(d.length, 40, 'invalid inner length'); - data = d; - } - opts.parts.push({name: 'r', data: data.slice(0, 20)}); - opts.parts.push({name: 's', data: data.slice(20, 40)}); - return (new Signature(opts)); -} - -function parseECDSA(data, type, format, opts) { - var buf = new SSHBuffer({buffer: data}); - - var r, s; - var inner = buf.readBuffer(); - var stype = inner.toString('ascii'); - if (stype.slice(0, 6) === 'ecdsa-') { - var parts = stype.split('-'); - assert.strictEqual(parts[0], 'ecdsa'); - assert.strictEqual(parts[1], 'sha2'); - opts.curve = parts[2]; - switch (opts.curve) { - case 'nistp256': - opts.hashAlgo = 'sha256'; - break; - case 'nistp384': - opts.hashAlgo = 'sha384'; - break; - case 'nistp521': - opts.hashAlgo = 'sha512'; - break; - default: - throw (new Error('Unsupported ECDSA curve: ' + - opts.curve)); - } - inner = buf.readBuffer(); - assert.ok(buf.atEnd(), 'extra trailing bytes on outer'); - buf = new SSHBuffer({buffer: inner}); - r = buf.readPart(); - } else { - r = {data: inner}; - } - - s = buf.readPart(); - assert.ok(buf.atEnd(), 'extra trailing bytes'); - - r.name = 'r'; - s.name = 's'; - - opts.parts.push(r); - opts.parts.push(s); - return (new Signature(opts)); -} - -Signature.isSignature = function (obj, ver) { - return (utils.isCompatible(obj, Signature, ver)); -}; - -/* - * API versions for Signature: - * [1,0] -- initial ver - * [2,0] -- support for rsa in full ssh format, compat with sshpk-agent - * hashAlgorithm property - * [2,1] -- first tagged version - */ -Signature.prototype._sshpkApiVersion = [2, 1]; - -Signature._oldVersionDetect = function (obj) { - assert.func(obj.toBuffer); - if (obj.hasOwnProperty('hashAlgorithm')) - return ([2, 0]); - return ([1, 0]); -}; diff --git a/node_modules/sshpk/lib/ssh-buffer.js b/node_modules/sshpk/lib/ssh-buffer.js deleted file mode 100644 index 1dd286c..0000000 --- a/node_modules/sshpk/lib/ssh-buffer.js +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = SSHBuffer; - -var assert = require('assert-plus'); -var Buffer = require('safer-buffer').Buffer; - -function SSHBuffer(opts) { - assert.object(opts, 'options'); - if (opts.buffer !== undefined) - assert.buffer(opts.buffer, 'options.buffer'); - - this._size = opts.buffer ? opts.buffer.length : 1024; - this._buffer = opts.buffer || Buffer.alloc(this._size); - this._offset = 0; -} - -SSHBuffer.prototype.toBuffer = function () { - return (this._buffer.slice(0, this._offset)); -}; - -SSHBuffer.prototype.atEnd = function () { - return (this._offset >= this._buffer.length); -}; - -SSHBuffer.prototype.remainder = function () { - return (this._buffer.slice(this._offset)); -}; - -SSHBuffer.prototype.skip = function (n) { - this._offset += n; -}; - -SSHBuffer.prototype.expand = function () { - this._size *= 2; - var buf = Buffer.alloc(this._size); - this._buffer.copy(buf, 0); - this._buffer = buf; -}; - -SSHBuffer.prototype.readPart = function () { - return ({data: this.readBuffer()}); -}; - -SSHBuffer.prototype.readBuffer = function () { - var len = this._buffer.readUInt32BE(this._offset); - this._offset += 4; - assert.ok(this._offset + len <= this._buffer.length, - 'length out of bounds at +0x' + this._offset.toString(16) + - ' (data truncated?)'); - var buf = this._buffer.slice(this._offset, this._offset + len); - this._offset += len; - return (buf); -}; - -SSHBuffer.prototype.readString = function () { - return (this.readBuffer().toString()); -}; - -SSHBuffer.prototype.readCString = function () { - var offset = this._offset; - while (offset < this._buffer.length && - this._buffer[offset] !== 0x00) - offset++; - assert.ok(offset < this._buffer.length, 'c string does not terminate'); - var str = this._buffer.slice(this._offset, offset).toString(); - this._offset = offset + 1; - return (str); -}; - -SSHBuffer.prototype.readInt = function () { - var v = this._buffer.readUInt32BE(this._offset); - this._offset += 4; - return (v); -}; - -SSHBuffer.prototype.readInt64 = function () { - assert.ok(this._offset + 8 < this._buffer.length, - 'buffer not long enough to read Int64'); - var v = this._buffer.slice(this._offset, this._offset + 8); - this._offset += 8; - return (v); -}; - -SSHBuffer.prototype.readChar = function () { - var v = this._buffer[this._offset++]; - return (v); -}; - -SSHBuffer.prototype.writeBuffer = function (buf) { - while (this._offset + 4 + buf.length > this._size) - this.expand(); - this._buffer.writeUInt32BE(buf.length, this._offset); - this._offset += 4; - buf.copy(this._buffer, this._offset); - this._offset += buf.length; -}; - -SSHBuffer.prototype.writeString = function (str) { - this.writeBuffer(Buffer.from(str, 'utf8')); -}; - -SSHBuffer.prototype.writeCString = function (str) { - while (this._offset + 1 + str.length > this._size) - this.expand(); - this._buffer.write(str, this._offset); - this._offset += str.length; - this._buffer[this._offset++] = 0; -}; - -SSHBuffer.prototype.writeInt = function (v) { - while (this._offset + 4 > this._size) - this.expand(); - this._buffer.writeUInt32BE(v, this._offset); - this._offset += 4; -}; - -SSHBuffer.prototype.writeInt64 = function (v) { - assert.buffer(v, 'value'); - if (v.length > 8) { - var lead = v.slice(0, v.length - 8); - for (var i = 0; i < lead.length; ++i) { - assert.strictEqual(lead[i], 0, - 'must fit in 64 bits of precision'); - } - v = v.slice(v.length - 8, v.length); - } - while (this._offset + 8 > this._size) - this.expand(); - v.copy(this._buffer, this._offset); - this._offset += 8; -}; - -SSHBuffer.prototype.writeChar = function (v) { - while (this._offset + 1 > this._size) - this.expand(); - this._buffer[this._offset++] = v; -}; - -SSHBuffer.prototype.writePart = function (p) { - this.writeBuffer(p.data); -}; - -SSHBuffer.prototype.write = function (buf) { - while (this._offset + buf.length > this._size) - this.expand(); - buf.copy(this._buffer, this._offset); - this._offset += buf.length; -}; diff --git a/node_modules/sshpk/lib/utils.js b/node_modules/sshpk/lib/utils.js deleted file mode 100644 index 6b83a32..0000000 --- a/node_modules/sshpk/lib/utils.js +++ /dev/null @@ -1,404 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = { - bufferSplit: bufferSplit, - addRSAMissing: addRSAMissing, - calculateDSAPublic: calculateDSAPublic, - calculateED25519Public: calculateED25519Public, - calculateX25519Public: calculateX25519Public, - mpNormalize: mpNormalize, - mpDenormalize: mpDenormalize, - ecNormalize: ecNormalize, - countZeros: countZeros, - assertCompatible: assertCompatible, - isCompatible: isCompatible, - opensslKeyDeriv: opensslKeyDeriv, - opensshCipherInfo: opensshCipherInfo, - publicFromPrivateECDSA: publicFromPrivateECDSA, - zeroPadToLength: zeroPadToLength, - writeBitString: writeBitString, - readBitString: readBitString, - pbkdf2: pbkdf2 -}; - -var assert = require('assert-plus'); -var Buffer = require('safer-buffer').Buffer; -var PrivateKey = require('./private-key'); -var Key = require('./key'); -var crypto = require('crypto'); -var algs = require('./algs'); -var asn1 = require('asn1'); - -var ec = require('ecc-jsbn/lib/ec'); -var jsbn = require('jsbn').BigInteger; -var nacl = require('tweetnacl'); - -var MAX_CLASS_DEPTH = 3; - -function isCompatible(obj, klass, needVer) { - if (obj === null || typeof (obj) !== 'object') - return (false); - if (needVer === undefined) - needVer = klass.prototype._sshpkApiVersion; - if (obj instanceof klass && - klass.prototype._sshpkApiVersion[0] == needVer[0]) - return (true); - var proto = Object.getPrototypeOf(obj); - var depth = 0; - while (proto.constructor.name !== klass.name) { - proto = Object.getPrototypeOf(proto); - if (!proto || ++depth > MAX_CLASS_DEPTH) - return (false); - } - if (proto.constructor.name !== klass.name) - return (false); - var ver = proto._sshpkApiVersion; - if (ver === undefined) - ver = klass._oldVersionDetect(obj); - if (ver[0] != needVer[0] || ver[1] < needVer[1]) - return (false); - return (true); -} - -function assertCompatible(obj, klass, needVer, name) { - if (name === undefined) - name = 'object'; - assert.ok(obj, name + ' must not be null'); - assert.object(obj, name + ' must be an object'); - if (needVer === undefined) - needVer = klass.prototype._sshpkApiVersion; - if (obj instanceof klass && - klass.prototype._sshpkApiVersion[0] == needVer[0]) - return; - var proto = Object.getPrototypeOf(obj); - var depth = 0; - while (proto.constructor.name !== klass.name) { - proto = Object.getPrototypeOf(proto); - assert.ok(proto && ++depth <= MAX_CLASS_DEPTH, - name + ' must be a ' + klass.name + ' instance'); - } - assert.strictEqual(proto.constructor.name, klass.name, - name + ' must be a ' + klass.name + ' instance'); - var ver = proto._sshpkApiVersion; - if (ver === undefined) - ver = klass._oldVersionDetect(obj); - assert.ok(ver[0] == needVer[0] && ver[1] >= needVer[1], - name + ' must be compatible with ' + klass.name + ' klass ' + - 'version ' + needVer[0] + '.' + needVer[1]); -} - -var CIPHER_LEN = { - 'des-ede3-cbc': { key: 24, iv: 8 }, - 'aes-128-cbc': { key: 16, iv: 16 }, - 'aes-256-cbc': { key: 32, iv: 16 } -}; -var PKCS5_SALT_LEN = 8; - -function opensslKeyDeriv(cipher, salt, passphrase, count) { - assert.buffer(salt, 'salt'); - assert.buffer(passphrase, 'passphrase'); - assert.number(count, 'iteration count'); - - var clen = CIPHER_LEN[cipher]; - assert.object(clen, 'supported cipher'); - - salt = salt.slice(0, PKCS5_SALT_LEN); - - var D, D_prev, bufs; - var material = Buffer.alloc(0); - while (material.length < clen.key + clen.iv) { - bufs = []; - if (D_prev) - bufs.push(D_prev); - bufs.push(passphrase); - bufs.push(salt); - D = Buffer.concat(bufs); - for (var j = 0; j < count; ++j) - D = crypto.createHash('md5').update(D).digest(); - material = Buffer.concat([material, D]); - D_prev = D; - } - - return ({ - key: material.slice(0, clen.key), - iv: material.slice(clen.key, clen.key + clen.iv) - }); -} - -/* See: RFC2898 */ -function pbkdf2(hashAlg, salt, iterations, size, passphrase) { - var hkey = Buffer.alloc(salt.length + 4); - salt.copy(hkey); - - var gen = 0, ts = []; - var i = 1; - while (gen < size) { - var t = T(i++); - gen += t.length; - ts.push(t); - } - return (Buffer.concat(ts).slice(0, size)); - - function T(I) { - hkey.writeUInt32BE(I, hkey.length - 4); - - var hmac = crypto.createHmac(hashAlg, passphrase); - hmac.update(hkey); - - var Ti = hmac.digest(); - var Uc = Ti; - var c = 1; - while (c++ < iterations) { - hmac = crypto.createHmac(hashAlg, passphrase); - hmac.update(Uc); - Uc = hmac.digest(); - for (var x = 0; x < Ti.length; ++x) - Ti[x] ^= Uc[x]; - } - return (Ti); - } -} - -/* Count leading zero bits on a buffer */ -function countZeros(buf) { - var o = 0, obit = 8; - while (o < buf.length) { - var mask = (1 << obit); - if ((buf[o] & mask) === mask) - break; - obit--; - if (obit < 0) { - o++; - obit = 8; - } - } - return (o*8 + (8 - obit) - 1); -} - -function bufferSplit(buf, chr) { - assert.buffer(buf); - assert.string(chr); - - var parts = []; - var lastPart = 0; - var matches = 0; - for (var i = 0; i < buf.length; ++i) { - if (buf[i] === chr.charCodeAt(matches)) - ++matches; - else if (buf[i] === chr.charCodeAt(0)) - matches = 1; - else - matches = 0; - - if (matches >= chr.length) { - var newPart = i + 1; - parts.push(buf.slice(lastPart, newPart - matches)); - lastPart = newPart; - matches = 0; - } - } - if (lastPart <= buf.length) - parts.push(buf.slice(lastPart, buf.length)); - - return (parts); -} - -function ecNormalize(buf, addZero) { - assert.buffer(buf); - if (buf[0] === 0x00 && buf[1] === 0x04) { - if (addZero) - return (buf); - return (buf.slice(1)); - } else if (buf[0] === 0x04) { - if (!addZero) - return (buf); - } else { - while (buf[0] === 0x00) - buf = buf.slice(1); - if (buf[0] === 0x02 || buf[0] === 0x03) - throw (new Error('Compressed elliptic curve points ' + - 'are not supported')); - if (buf[0] !== 0x04) - throw (new Error('Not a valid elliptic curve point')); - if (!addZero) - return (buf); - } - var b = Buffer.alloc(buf.length + 1); - b[0] = 0x0; - buf.copy(b, 1); - return (b); -} - -function readBitString(der, tag) { - if (tag === undefined) - tag = asn1.Ber.BitString; - var buf = der.readString(tag, true); - assert.strictEqual(buf[0], 0x00, 'bit strings with unused bits are ' + - 'not supported (0x' + buf[0].toString(16) + ')'); - return (buf.slice(1)); -} - -function writeBitString(der, buf, tag) { - if (tag === undefined) - tag = asn1.Ber.BitString; - var b = Buffer.alloc(buf.length + 1); - b[0] = 0x00; - buf.copy(b, 1); - der.writeBuffer(b, tag); -} - -function mpNormalize(buf) { - assert.buffer(buf); - while (buf.length > 1 && buf[0] === 0x00 && (buf[1] & 0x80) === 0x00) - buf = buf.slice(1); - if ((buf[0] & 0x80) === 0x80) { - var b = Buffer.alloc(buf.length + 1); - b[0] = 0x00; - buf.copy(b, 1); - buf = b; - } - return (buf); -} - -function mpDenormalize(buf) { - assert.buffer(buf); - while (buf.length > 1 && buf[0] === 0x00) - buf = buf.slice(1); - return (buf); -} - -function zeroPadToLength(buf, len) { - assert.buffer(buf); - assert.number(len); - while (buf.length > len) { - assert.equal(buf[0], 0x00); - buf = buf.slice(1); - } - while (buf.length < len) { - var b = Buffer.alloc(buf.length + 1); - b[0] = 0x00; - buf.copy(b, 1); - buf = b; - } - return (buf); -} - -function bigintToMpBuf(bigint) { - var buf = Buffer.from(bigint.toByteArray()); - buf = mpNormalize(buf); - return (buf); -} - -function calculateDSAPublic(g, p, x) { - assert.buffer(g); - assert.buffer(p); - assert.buffer(x); - g = new jsbn(g); - p = new jsbn(p); - x = new jsbn(x); - var y = g.modPow(x, p); - var ybuf = bigintToMpBuf(y); - return (ybuf); -} - -function calculateED25519Public(k) { - assert.buffer(k); - - var kp = nacl.sign.keyPair.fromSeed(new Uint8Array(k)); - return (Buffer.from(kp.publicKey)); -} - -function calculateX25519Public(k) { - assert.buffer(k); - - var kp = nacl.box.keyPair.fromSeed(new Uint8Array(k)); - return (Buffer.from(kp.publicKey)); -} - -function addRSAMissing(key) { - assert.object(key); - assertCompatible(key, PrivateKey, [1, 1]); - - var d = new jsbn(key.part.d.data); - var buf; - - if (!key.part.dmodp) { - var p = new jsbn(key.part.p.data); - var dmodp = d.mod(p.subtract(1)); - - buf = bigintToMpBuf(dmodp); - key.part.dmodp = {name: 'dmodp', data: buf}; - key.parts.push(key.part.dmodp); - } - if (!key.part.dmodq) { - var q = new jsbn(key.part.q.data); - var dmodq = d.mod(q.subtract(1)); - - buf = bigintToMpBuf(dmodq); - key.part.dmodq = {name: 'dmodq', data: buf}; - key.parts.push(key.part.dmodq); - } -} - -function publicFromPrivateECDSA(curveName, priv) { - assert.string(curveName, 'curveName'); - assert.buffer(priv); - var params = algs.curves[curveName]; - var p = new jsbn(params.p); - var a = new jsbn(params.a); - var b = new jsbn(params.b); - var curve = new ec.ECCurveFp(p, a, b); - var G = curve.decodePointHex(params.G.toString('hex')); - - var d = new jsbn(mpNormalize(priv)); - var pub = G.multiply(d); - pub = Buffer.from(curve.encodePointHex(pub), 'hex'); - - var parts = []; - parts.push({name: 'curve', data: Buffer.from(curveName)}); - parts.push({name: 'Q', data: pub}); - - var key = new Key({type: 'ecdsa', curve: curve, parts: parts}); - return (key); -} - -function opensshCipherInfo(cipher) { - var inf = {}; - switch (cipher) { - case '3des-cbc': - inf.keySize = 24; - inf.blockSize = 8; - inf.opensslName = 'des-ede3-cbc'; - break; - case 'blowfish-cbc': - inf.keySize = 16; - inf.blockSize = 8; - inf.opensslName = 'bf-cbc'; - break; - case 'aes128-cbc': - case 'aes128-ctr': - case 'aes128-gcm@openssh.com': - inf.keySize = 16; - inf.blockSize = 16; - inf.opensslName = 'aes-128-' + cipher.slice(7, 10); - break; - case 'aes192-cbc': - case 'aes192-ctr': - case 'aes192-gcm@openssh.com': - inf.keySize = 24; - inf.blockSize = 16; - inf.opensslName = 'aes-192-' + cipher.slice(7, 10); - break; - case 'aes256-cbc': - case 'aes256-ctr': - case 'aes256-gcm@openssh.com': - inf.keySize = 32; - inf.blockSize = 16; - inf.opensslName = 'aes-256-' + cipher.slice(7, 10); - break; - default: - throw (new Error( - 'Unsupported openssl cipher "' + cipher + '"')); - } - return (inf); -} diff --git a/node_modules/sshpk/man/man1/sshpk-conv.1 b/node_modules/sshpk/man/man1/sshpk-conv.1 deleted file mode 100644 index 0887dce..0000000 --- a/node_modules/sshpk/man/man1/sshpk-conv.1 +++ /dev/null @@ -1,135 +0,0 @@ -.TH sshpk\-conv 1 "Jan 2016" sshpk "sshpk Commands" -.SH NAME -.PP -sshpk\-conv \- convert between key formats -.SH SYNOPSYS -.PP -\fB\fCsshpk\-conv\fR \-t FORMAT [FILENAME] [OPTIONS...] -.PP -\fB\fCsshpk\-conv\fR \-i [FILENAME] [OPTIONS...] -.SH DESCRIPTION -.PP -Reads in a public or private key and converts it between different formats, -particularly formats used in the SSH protocol and the well\-known PEM PKCS#1/7 -formats. -.PP -In the second form, with the \fB\fC\-i\fR option given, identifies a key and prints to -stderr information about its nature, size and fingerprint. -.SH EXAMPLES -.PP -Assume the following SSH\-format public key in \fB\fCid_ecdsa.pub\fR: -.PP -.RS -.nf -ecdsa\-sha2\-nistp256 AAAAE2VjZHNhLXNoYTI...9M/4c4= user@host -.fi -.RE -.PP -Identify it with \fB\fC\-i\fR: -.PP -.RS -.nf -$ sshpk\-conv \-i id_ecdsa.pub -id_ecdsa: a 256 bit ECDSA public key -ECDSA curve: nistp256 -Comment: user@host -Fingerprint: - SHA256:vCNX7eUkdvqqW0m4PoxQAZRv+CM4P4fS8+CbliAvS4k - 81:ad:d5:57:e5:6f:7d:a2:93:79:56:af:d7:c0:38:51 -.fi -.RE -.PP -Convert it to \fB\fCpkcs8\fR format, for use with e.g. OpenSSL: -.PP -.RS -.nf -$ sshpk\-conv \-t pkcs8 id_ecdsa -\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAsA4R6N6AS3gzaPBeLjG2ObSgUsR -zOt+kWJoijLnw3ZMYUKmAx+lD0I5XUxdrPcs1vH5f3cn9TvRvO9L0z/hzg== -\-\-\-\-\-END PUBLIC KEY\-\-\-\-\- -.fi -.RE -.PP -Retrieve the public half of a private key: -.PP -.RS -.nf -$ openssl genrsa 2048 | sshpk\-conv \-t ssh \-c foo@bar -ssh\-rsa AAAAB3NzaC1yc2EAAA...koK7 foo@bar -.fi -.RE -.PP -Convert a private key to PKCS#1 (OpenSSL) format from a new\-style OpenSSH key -format (the \fB\fCssh\-keygen \-o\fR format): -.PP -.RS -.nf -$ ssh\-keygen \-o \-f foobar -\&... -$ sshpk\-conv \-p \-t pkcs1 foobar -\-\-\-\-\-BEGIN RSA PRIVATE KEY\-\-\-\-\- -MIIDpAIBAAKCAQEA6T/GYJndb1TRH3+NL.... -\-\-\-\-\-END RSA PRIVATE KEY\-\-\-\-\- -.fi -.RE -.SH OPTIONS -.TP -\fB\fC\-i, \-\-identify\fR -Instead of converting the key, output identifying information about it to -stderr, including its type, size and fingerprints. -.TP -\fB\fC\-p, \-\-private\fR -Treat the key as a private key instead of a public key (the default). If you -supply \fB\fCsshpk\-conv\fR with a private key and do not give this option, it will -extract only the public half of the key from it and work with that. -.TP -\fB\fC\-f PATH, \-\-file=PATH\fR -Input file to take the key from instead of stdin. If a filename is supplied -as a positional argument, it is equivalent to using this option. -.TP -\fB\fC\-o PATH, \-\-out=PATH\fR -Output file name to use instead of stdout. -.PP -\fB\fC\-T FORMAT, \-\-informat=FORMAT\fR -.TP -\fB\fC\-t FORMAT, \-\-outformat=FORMAT\fR -Selects the input and output formats to be used (see FORMATS, below). -.TP -\fB\fC\-c TEXT, \-\-comment=TEXT\fR -Sets the key comment for the output file, if supported. -.SH FORMATS -.PP -Currently supported formats: -.TP -\fB\fCpem, pkcs1\fR -The standard PEM format used by older OpenSSH and most TLS libraries such as -OpenSSL. The classic \fB\fCid_rsa\fR file is usually in this format. It is an ASN.1 -encoded structure, base64\-encoded and placed between PEM headers. -.TP -\fB\fCssh\fR -The SSH public key text format (the format of an \fB\fCid_rsa.pub\fR file). A single -line, containing 3 space separated parts: the key type, key body and optional -key comment. -.TP -\fB\fCpkcs8\fR -A newer PEM format, usually used only for public keys by TLS libraries such -as OpenSSL. The ASN.1 structure is more generic than that of \fB\fCpkcs1\fR\&. -.TP -\fB\fCopenssh\fR -The new \fB\fCssh\-keygen \-o\fR format from OpenSSH. This can be mistaken for a PEM -encoding but is actually an OpenSSH internal format. -.TP -\fB\fCrfc4253\fR -The internal binary format of keys when sent over the wire in the SSH -protocol. This is also the format that the \fB\fCssh\-agent\fR uses in its protocol. -.SH SEE ALSO -.PP -.BR ssh-keygen (1), -.BR openssl (1) -.SH BUGS -.PP -Encrypted (password\-protected) keys are not supported. -.PP -Report bugs at Github -\[la]https://github.com/arekinath/node-sshpk/issues\[ra] diff --git a/node_modules/sshpk/man/man1/sshpk-sign.1 b/node_modules/sshpk/man/man1/sshpk-sign.1 deleted file mode 100644 index 749916b..0000000 --- a/node_modules/sshpk/man/man1/sshpk-sign.1 +++ /dev/null @@ -1,81 +0,0 @@ -.TH sshpk\-sign 1 "Jan 2016" sshpk "sshpk Commands" -.SH NAME -.PP -sshpk\-sign \- sign data using an SSH key -.SH SYNOPSYS -.PP -\fB\fCsshpk\-sign\fR \-i KEYPATH [OPTION...] -.SH DESCRIPTION -.PP -Takes in arbitrary bytes, and signs them using an SSH private key. The key can -be of any type or format supported by the \fB\fCsshpk\fR library, including the -standard OpenSSH formats, as well as PEM PKCS#1 and PKCS#8. -.PP -The signature is printed out in Base64 encoding, unless the \fB\fC\-\-binary\fR or \fB\fC\-b\fR -option is given. -.SH EXAMPLES -.PP -Signing with default settings: -.PP -.RS -.nf -$ printf 'foo' | sshpk\-sign \-i ~/.ssh/id_ecdsa -MEUCIAMdLS/vXrrtWFepwe... -.fi -.RE -.PP -Signing in SSH (RFC 4253) format (rather than the default ASN.1): -.PP -.RS -.nf -$ printf 'foo' | sshpk\-sign \-i ~/.ssh/id_ecdsa \-t ssh -AAAAFGVjZHNhLXNoYTIt... -.fi -.RE -.PP -Saving the binary signature to a file: -.PP -.RS -.nf -$ printf 'foo' | sshpk\-sign \-i ~/.ssh/id_ecdsa \\ - \-o signature.bin \-b -$ cat signature.bin | base64 -MEUCIAMdLS/vXrrtWFepwe... -.fi -.RE -.SH OPTIONS -.TP -\fB\fC\-v, \-\-verbose\fR -Print extra information about the key and signature to stderr when signing. -.TP -\fB\fC\-b, \-\-binary\fR -Don't base64\-encode the signature before outputting it. -.TP -\fB\fC\-i KEY, \-\-identity=KEY\fR -Select the key to be used for signing. \fB\fCKEY\fR must be a relative or absolute -filesystem path to the key file. Any format supported by the \fB\fCsshpk\fR library -is supported, including OpenSSH formats and standard PEM PKCS. -.TP -\fB\fC\-f PATH, \-\-file=PATH\fR -Input file to sign instead of stdin. -.TP -\fB\fC\-o PATH, \-\-out=PATH\fR -Output file to save signature in instead of stdout. -.TP -\fB\fC\-H HASH, \-\-hash=HASH\fR -Set the hash algorithm to be used for signing. This should be one of \fB\fCsha1\fR, -\fB\fCsha256\fR or \fB\fCsha512\fR\&. Some key types may place restrictions on which hash -algorithms may be used (e.g. ED25519 keys can only use SHA\-512). -.TP -\fB\fC\-t FORMAT, \-\-format=FORMAT\fR -Choose the signature format to use, from \fB\fCasn1\fR, \fB\fCssh\fR or \fB\fCraw\fR (only for -ED25519 signatures). The \fB\fCasn1\fR format is the default, as it is the format -used with TLS and typically the standard in most non\-SSH libraries (e.g. -OpenSSL). The \fB\fCssh\fR format is used in the SSH protocol and by the ssh\-agent. -.SH SEE ALSO -.PP -.BR sshpk-verify (1) -.SH BUGS -.PP -Report bugs at Github -\[la]https://github.com/arekinath/node-sshpk/issues\[ra] diff --git a/node_modules/sshpk/man/man1/sshpk-verify.1 b/node_modules/sshpk/man/man1/sshpk-verify.1 deleted file mode 100644 index f79169d..0000000 --- a/node_modules/sshpk/man/man1/sshpk-verify.1 +++ /dev/null @@ -1,68 +0,0 @@ -.TH sshpk\-verify 1 "Jan 2016" sshpk "sshpk Commands" -.SH NAME -.PP -sshpk\-verify \- verify a signature on data using an SSH key -.SH SYNOPSYS -.PP -\fB\fCsshpk\-verify\fR \-i KEYPATH \-s SIGNATURE [OPTION...] -.SH DESCRIPTION -.PP -Takes in arbitrary bytes and a Base64\-encoded signature, and verifies that the -signature was produced by the private half of the given SSH public key. -.SH EXAMPLES -.PP -.RS -.nf -$ printf 'foo' | sshpk\-verify \-i ~/.ssh/id_ecdsa \-s MEUCIQCYp... -OK -$ printf 'foo' | sshpk\-verify \-i ~/.ssh/id_ecdsa \-s GARBAGE... -NOT OK -.fi -.RE -.SH EXIT STATUS -.TP -\fB\fC0\fR -Signature validates and matches the key. -.TP -\fB\fC1\fR -Signature is parseable and the correct length but does not match the key or -otherwise is invalid. -.TP -\fB\fC2\fR -The signature or key could not be parsed. -.TP -\fB\fC3\fR -Invalid commandline options were supplied. -.SH OPTIONS -.TP -\fB\fC\-v, \-\-verbose\fR -Print extra information about the key and signature to stderr when verifying. -.TP -\fB\fC\-i KEY, \-\-identity=KEY\fR -Select the key to be used for verification. \fB\fCKEY\fR must be a relative or -absolute filesystem path to the key file. Any format supported by the \fB\fCsshpk\fR -library is supported, including OpenSSH formats and standard PEM PKCS. -.TP -\fB\fC\-s BASE64, \-\-signature=BASE64\fR -Supplies the base64\-encoded signature to be verified. -.TP -\fB\fC\-f PATH, \-\-file=PATH\fR -Input file to verify instead of stdin. -.TP -\fB\fC\-H HASH, \-\-hash=HASH\fR -Set the hash algorithm to be used for signing. This should be one of \fB\fCsha1\fR, -\fB\fCsha256\fR or \fB\fCsha512\fR\&. Some key types may place restrictions on which hash -algorithms may be used (e.g. ED25519 keys can only use SHA\-512). -.TP -\fB\fC\-t FORMAT, \-\-format=FORMAT\fR -Choose the signature format to use, from \fB\fCasn1\fR, \fB\fCssh\fR or \fB\fCraw\fR (only for -ED25519 signatures). The \fB\fCasn1\fR format is the default, as it is the format -used with TLS and typically the standard in most non\-SSH libraries (e.g. -OpenSSL). The \fB\fCssh\fR format is used in the SSH protocol and by the ssh\-agent. -.SH SEE ALSO -.PP -.BR sshpk-sign (1) -.SH BUGS -.PP -Report bugs at Github -\[la]https://github.com/arekinath/node-sshpk/issues\[ra] diff --git a/node_modules/sshpk/package.json b/node_modules/sshpk/package.json deleted file mode 100644 index 109e255..0000000 --- a/node_modules/sshpk/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "_from": "sshpk@^1.7.0", - "_id": "sshpk@1.16.1", - "_inBundle": false, - "_integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "_location": "/sshpk", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "sshpk@^1.7.0", - "name": "sshpk", - "escapedName": "sshpk", - "rawSpec": "^1.7.0", - "saveSpec": null, - "fetchSpec": "^1.7.0" - }, - "_requiredBy": [ - "/http-signature" - ], - "_resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "_shasum": "fb661c0bef29b39db40769ee39fa70093d6f6877", - "_spec": "sshpk@^1.7.0", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/http-signature", - "author": { - "name": "Joyent, Inc" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "bugs": { - "url": "https://github.com/arekinath/node-sshpk/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Dave Eddy", - "email": "dave@daveeddy.com" - }, - { - "name": "Mark Cavage", - "email": "mcavage@gmail.com" - }, - { - "name": "Alex Wilson", - "email": "alex@cooperi.net" - } - ], - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "deprecated": false, - "description": "A library for finding and using SSH public keys", - "devDependencies": { - "benchmark": "^1.0.0", - "sinon": "^1.17.2", - "tape": "^3.5.0", - "temp": "^0.8.2" - }, - "directories": { - "bin": "./bin", - "lib": "./lib", - "man": "./man/man1" - }, - "engines": { - "node": ">=0.10.0" - }, - "homepage": "https://github.com/arekinath/node-sshpk#readme", - "license": "MIT", - "main": "lib/index.js", - "man": [ - "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/sshpk/man/man1/sshpk-conv.1", - "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/sshpk/man/man1/sshpk-sign.1", - "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/sshpk/man/man1/sshpk-verify.1" - ], - "name": "sshpk", - "optionalDependencies": {}, - "repository": { - "type": "git", - "url": "git+https://github.com/joyent/node-sshpk.git" - }, - "scripts": { - "test": "tape test/*.js" - }, - "version": "1.16.1" -} diff --git a/node_modules/supports-color/browser.js b/node_modules/supports-color/browser.js deleted file mode 100644 index 62afa3a..0000000 --- a/node_modules/supports-color/browser.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; -module.exports = { - stdout: false, - stderr: false -}; diff --git a/node_modules/supports-color/index.js b/node_modules/supports-color/index.js deleted file mode 100644 index 1704131..0000000 --- a/node_modules/supports-color/index.js +++ /dev/null @@ -1,131 +0,0 @@ -'use strict'; -const os = require('os'); -const hasFlag = require('has-flag'); - -const env = process.env; - -let forceColor; -if (hasFlag('no-color') || - hasFlag('no-colors') || - hasFlag('color=false')) { - forceColor = false; -} else if (hasFlag('color') || - hasFlag('colors') || - hasFlag('color=true') || - hasFlag('color=always')) { - forceColor = true; -} -if ('FORCE_COLOR' in env) { - forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; -} - -function translateLevel(level) { - if (level === 0) { - return false; - } - - return { - level, - hasBasic: true, - has256: level >= 2, - has16m: level >= 3 - }; -} - -function supportsColor(stream) { - if (forceColor === false) { - return 0; - } - - if (hasFlag('color=16m') || - hasFlag('color=full') || - hasFlag('color=truecolor')) { - return 3; - } - - if (hasFlag('color=256')) { - return 2; - } - - if (stream && !stream.isTTY && forceColor !== true) { - return 0; - } - - const min = forceColor ? 1 : 0; - - if (process.platform === 'win32') { - // Node.js 7.5.0 is the first version of Node.js to include a patch to - // libuv that enables 256 color output on Windows. Anything earlier and it - // won't work. However, here we target Node.js 8 at minimum as it is an LTS - // release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows - // release that supports 256 colors. Windows 10 build 14931 is the first release - // that supports 16m/TrueColor. - const osRelease = os.release().split('.'); - if ( - Number(process.versions.node.split('.')[0]) >= 8 && - Number(osRelease[0]) >= 10 && - Number(osRelease[2]) >= 10586 - ) { - return Number(osRelease[2]) >= 14931 ? 3 : 2; - } - - return 1; - } - - if ('CI' in env) { - if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { - return 1; - } - - return min; - } - - if ('TEAMCITY_VERSION' in env) { - return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; - } - - if (env.COLORTERM === 'truecolor') { - return 3; - } - - if ('TERM_PROGRAM' in env) { - const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); - - switch (env.TERM_PROGRAM) { - case 'iTerm.app': - return version >= 3 ? 3 : 2; - case 'Apple_Terminal': - return 2; - // No default - } - } - - if (/-256(color)?$/i.test(env.TERM)) { - return 2; - } - - if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { - return 1; - } - - if ('COLORTERM' in env) { - return 1; - } - - if (env.TERM === 'dumb') { - return min; - } - - return min; -} - -function getSupportLevel(stream) { - const level = supportsColor(stream); - return translateLevel(level); -} - -module.exports = { - supportsColor: getSupportLevel, - stdout: getSupportLevel(process.stdout), - stderr: getSupportLevel(process.stderr) -}; diff --git a/node_modules/supports-color/license b/node_modules/supports-color/license deleted file mode 100644 index e7af2f7..0000000 --- a/node_modules/supports-color/license +++ /dev/null @@ -1,9 +0,0 @@ -MIT License - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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. diff --git a/node_modules/supports-color/package.json b/node_modules/supports-color/package.json deleted file mode 100644 index f36b9bc..0000000 --- a/node_modules/supports-color/package.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "_from": "supports-color@^5.3.0", - "_id": "supports-color@5.5.0", - "_inBundle": false, - "_integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "_location": "/supports-color", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "supports-color@^5.3.0", - "name": "supports-color", - "escapedName": "supports-color", - "rawSpec": "^5.3.0", - "saveSpec": null, - "fetchSpec": "^5.3.0" - }, - "_requiredBy": [ - "/chalk" - ], - "_resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "_shasum": "e2e69a44ac8772f78a1ec0b35b689df6530efc8f", - "_spec": "supports-color@^5.3.0", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/chalk", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "sindresorhus.com" - }, - "browser": "browser.js", - "bugs": { - "url": "https://github.com/chalk/supports-color/issues" - }, - "bundleDependencies": false, - "dependencies": { - "has-flag": "^3.0.0" - }, - "deprecated": false, - "description": "Detect whether a terminal supports color", - "devDependencies": { - "ava": "^0.25.0", - "import-fresh": "^2.0.0", - "xo": "^0.20.0" - }, - "engines": { - "node": ">=4" - }, - "files": [ - "index.js", - "browser.js" - ], - "homepage": "https://github.com/chalk/supports-color#readme", - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "ansi", - "styles", - "tty", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "support", - "supports", - "capability", - "detect", - "truecolor", - "16m" - ], - "license": "MIT", - "name": "supports-color", - "repository": { - "type": "git", - "url": "git+https://github.com/chalk/supports-color.git" - }, - "scripts": { - "test": "xo && ava" - }, - "version": "5.5.0" -} diff --git a/node_modules/supports-color/readme.md b/node_modules/supports-color/readme.md deleted file mode 100644 index f6e4019..0000000 --- a/node_modules/supports-color/readme.md +++ /dev/null @@ -1,66 +0,0 @@ -# supports-color [![Build Status](https://travis-ci.org/chalk/supports-color.svg?branch=master)](https://travis-ci.org/chalk/supports-color) - -> Detect whether a terminal supports color - - -## Install - -``` -$ npm install supports-color -``` - - -## Usage - -```js -const supportsColor = require('supports-color'); - -if (supportsColor.stdout) { - console.log('Terminal stdout supports color'); -} - -if (supportsColor.stdout.has256) { - console.log('Terminal stdout supports 256 colors'); -} - -if (supportsColor.stderr.has16m) { - console.log('Terminal stderr supports 16 million colors (truecolor)'); -} -``` - - -## API - -Returns an `Object` with a `stdout` and `stderr` property for testing either streams. Each property is an `Object`, or `false` if color is not supported. - -The `stdout`/`stderr` objects specifies a level of support for color through a `.level` property and a corresponding flag: - -- `.level = 1` and `.hasBasic = true`: Basic color support (16 colors) -- `.level = 2` and `.has256 = true`: 256 color support -- `.level = 3` and `.has16m = true`: Truecolor support (16 million colors) - - -## Info - -It obeys the `--color` and `--no-color` CLI flags. - -Can be overridden by the user with the flags `--color` and `--no-color`. For situations where using `--color` is not possible, add the environment variable `FORCE_COLOR=1` to forcefully enable color or `FORCE_COLOR=0` to forcefully disable. The use of `FORCE_COLOR` overrides all other color support checks. - -Explicit 256/Truecolor mode can be enabled using the `--color=256` and `--color=16m` flags, respectively. - - -## Related - -- [supports-color-cli](https://github.com/chalk/supports-color-cli) - CLI for this module -- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right - - -## Maintainers - -- [Sindre Sorhus](https://github.com/sindresorhus) -- [Josh Junon](https://github.com/qix-) - - -## License - -MIT diff --git a/node_modules/tough-cookie/LICENSE b/node_modules/tough-cookie/LICENSE deleted file mode 100644 index 22204e8..0000000 --- a/node_modules/tough-cookie/LICENSE +++ /dev/null @@ -1,12 +0,0 @@ -Copyright (c) 2015, Salesforce.com, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of Salesforce.com nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/tough-cookie/README.md b/node_modules/tough-cookie/README.md deleted file mode 100644 index 656a255..0000000 --- a/node_modules/tough-cookie/README.md +++ /dev/null @@ -1,527 +0,0 @@ -[RFC6265](https://tools.ietf.org/html/rfc6265) Cookies and CookieJar for Node.js - -[![npm package](https://nodei.co/npm/tough-cookie.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/tough-cookie/) - -[![Build Status](https://travis-ci.org/salesforce/tough-cookie.png?branch=master)](https://travis-ci.org/salesforce/tough-cookie) - -# Synopsis - -``` javascript -var tough = require('tough-cookie'); -var Cookie = tough.Cookie; -var cookie = Cookie.parse(header); -cookie.value = 'somethingdifferent'; -header = cookie.toString(); - -var cookiejar = new tough.CookieJar(); -cookiejar.setCookie(cookie, 'http://currentdomain.example.com/path', cb); -// ... -cookiejar.getCookies('http://example.com/otherpath',function(err,cookies) { - res.headers['cookie'] = cookies.join('; '); -}); -``` - -# Installation - -It's _so_ easy! - -`npm install tough-cookie` - -Why the name? NPM modules `cookie`, `cookies` and `cookiejar` were already taken. - -## Version Support - -Support for versions of node.js will follow that of the [request](https://www.npmjs.com/package/request) module. - -# API - -## tough - -Functions on the module you get from `require('tough-cookie')`. All can be used as pure functions and don't need to be "bound". - -**Note**: prior to 1.0.x, several of these functions took a `strict` parameter. This has since been removed from the API as it was no longer necessary. - -### `parseDate(string)` - -Parse a cookie date string into a `Date`. Parses according to RFC6265 Section 5.1.1, not `Date.parse()`. - -### `formatDate(date)` - -Format a Date into a RFC1123 string (the RFC6265-recommended format). - -### `canonicalDomain(str)` - -Transforms a domain-name into a canonical domain-name. The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265). For the most part, this function is idempotent (can be run again on its output without ill effects). - -### `domainMatch(str,domStr[,canonicalize=true])` - -Answers "does this real domain match the domain in a cookie?". The `str` is the "current" domain-name and the `domStr` is the "cookie" domain-name. Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a "suffix match". - -The `canonicalize` parameter will run the other two parameters through `canonicalDomain` or not. - -### `defaultPath(path)` - -Given a current request/response path, gives the Path apropriate for storing in a cookie. This is basically the "directory" of a "file" in the path, but is specified by Section 5.1.4 of the RFC. - -The `path` parameter MUST be _only_ the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.). This is the `.pathname` property of node's `uri.parse()` output. - -### `pathMatch(reqPath,cookiePath)` - -Answers "does the request-path path-match a given cookie-path?" as per RFC6265 Section 5.1.4. Returns a boolean. - -This is essentially a prefix-match where `cookiePath` is a prefix of `reqPath`. - -### `parse(cookieString[, options])` - -alias for `Cookie.parse(cookieString[, options])` - -### `fromJSON(string)` - -alias for `Cookie.fromJSON(string)` - -### `getPublicSuffix(hostname)` - -Returns the public suffix of this hostname. The public suffix is the shortest domain-name upon which a cookie can be set. Returns `null` if the hostname cannot have cookies set for it. - -For example: `www.example.com` and `www.subdomain.example.com` both have public suffix `example.com`. - -For further information, see http://publicsuffix.org/. This module derives its list from that site. This call is currently a wrapper around [`psl`](https://www.npmjs.com/package/psl)'s [get() method](https://www.npmjs.com/package/psl#pslgetdomain). - -### `cookieCompare(a,b)` - -For use with `.sort()`, sorts a list of cookies into the recommended order given in the RFC (Section 5.4 step 2). The sort algorithm is, in order of precedence: - -* Longest `.path` -* oldest `.creation` (which has a 1ms precision, same as `Date`) -* lowest `.creationIndex` (to get beyond the 1ms precision) - -``` javascript -var cookies = [ /* unsorted array of Cookie objects */ ]; -cookies = cookies.sort(cookieCompare); -``` - -**Note**: Since JavaScript's `Date` is limited to a 1ms precision, cookies within the same milisecond are entirely possible. This is especially true when using the `now` option to `.setCookie()`. The `.creationIndex` property is a per-process global counter, assigned during construction with `new Cookie()`. This preserves the spirit of the RFC sorting: older cookies go first. This works great for `MemoryCookieStore`, since `Set-Cookie` headers are parsed in order, but may not be so great for distributed systems. Sophisticated `Store`s may wish to set this to some other _logical clock_ such that if cookies A and B are created in the same millisecond, but cookie A is created before cookie B, then `A.creationIndex < B.creationIndex`. If you want to alter the global counter, which you probably _shouldn't_ do, it's stored in `Cookie.cookiesCreated`. - -### `permuteDomain(domain)` - -Generates a list of all possible domains that `domainMatch()` the parameter. May be handy for implementing cookie stores. - -### `permutePath(path)` - -Generates a list of all possible paths that `pathMatch()` the parameter. May be handy for implementing cookie stores. - - -## Cookie - -Exported via `tough.Cookie`. - -### `Cookie.parse(cookieString[, options])` - -Parses a single Cookie or Set-Cookie HTTP header into a `Cookie` object. Returns `undefined` if the string can't be parsed. - -The options parameter is not required and currently has only one property: - - * _loose_ - boolean - if `true` enable parsing of key-less cookies like `=abc` and `=`, which are not RFC-compliant. - -If options is not an object, it is ignored, which means you can use `Array#map` with it. - -Here's how to process the Set-Cookie header(s) on a node HTTP/HTTPS response: - -``` javascript -if (res.headers['set-cookie'] instanceof Array) - cookies = res.headers['set-cookie'].map(Cookie.parse); -else - cookies = [Cookie.parse(res.headers['set-cookie'])]; -``` - -_Note:_ in version 2.3.3, tough-cookie limited the number of spaces before the `=` to 256 characters. This limitation has since been removed. -See [Issue 92](https://github.com/salesforce/tough-cookie/issues/92) - -### Properties - -Cookie object properties: - - * _key_ - string - the name or key of the cookie (default "") - * _value_ - string - the value of the cookie (default "") - * _expires_ - `Date` - if set, the `Expires=` attribute of the cookie (defaults to the string `"Infinity"`). See `setExpires()` - * _maxAge_ - seconds - if set, the `Max-Age=` attribute _in seconds_ of the cookie. May also be set to strings `"Infinity"` and `"-Infinity"` for non-expiry and immediate-expiry, respectively. See `setMaxAge()` - * _domain_ - string - the `Domain=` attribute of the cookie - * _path_ - string - the `Path=` of the cookie - * _secure_ - boolean - the `Secure` cookie flag - * _httpOnly_ - boolean - the `HttpOnly` cookie flag - * _extensions_ - `Array` - any unrecognized cookie attributes as strings (even if equal-signs inside) - * _creation_ - `Date` - when this cookie was constructed - * _creationIndex_ - number - set at construction, used to provide greater sort precision (please see `cookieCompare(a,b)` for a full explanation) - -After a cookie has been passed through `CookieJar.setCookie()` it will have the following additional attributes: - - * _hostOnly_ - boolean - is this a host-only cookie (i.e. no Domain field was set, but was instead implied) - * _pathIsDefault_ - boolean - if true, there was no Path field on the cookie and `defaultPath()` was used to derive one. - * _creation_ - `Date` - **modified** from construction to when the cookie was added to the jar - * _lastAccessed_ - `Date` - last time the cookie got accessed. Will affect cookie cleaning once implemented. Using `cookiejar.getCookies(...)` will update this attribute. - -### `Cookie([{properties}])` - -Receives an options object that can contain any of the above Cookie properties, uses the default for unspecified properties. - -### `.toString()` - -encode to a Set-Cookie header value. The Expires cookie field is set using `formatDate()`, but is omitted entirely if `.expires` is `Infinity`. - -### `.cookieString()` - -encode to a Cookie header value (i.e. the `.key` and `.value` properties joined with '='). - -### `.setExpires(String)` - -sets the expiry based on a date-string passed through `parseDate()`. If parseDate returns `null` (i.e. can't parse this date string), `.expires` is set to `"Infinity"` (a string) is set. - -### `.setMaxAge(number)` - -sets the maxAge in seconds. Coerces `-Infinity` to `"-Infinity"` and `Infinity` to `"Infinity"` so it JSON serializes correctly. - -### `.expiryTime([now=Date.now()])` - -### `.expiryDate([now=Date.now()])` - -expiryTime() Computes the absolute unix-epoch milliseconds that this cookie expires. expiryDate() works similarly, except it returns a `Date` object. Note that in both cases the `now` parameter should be milliseconds. - -Max-Age takes precedence over Expires (as per the RFC). The `.creation` attribute -- or, by default, the `now` parameter -- is used to offset the `.maxAge` attribute. - -If Expires (`.expires`) is set, that's returned. - -Otherwise, `expiryTime()` returns `Infinity` and `expiryDate()` returns a `Date` object for "Tue, 19 Jan 2038 03:14:07 GMT" (latest date that can be expressed by a 32-bit `time_t`; the common limit for most user-agents). - -### `.TTL([now=Date.now()])` - -compute the TTL relative to `now` (milliseconds). The same precedence rules as for `expiryTime`/`expiryDate` apply. - -The "number" `Infinity` is returned for cookies without an explicit expiry and `0` is returned if the cookie is expired. Otherwise a time-to-live in milliseconds is returned. - -### `.canonicalizedDomain()` - -### `.cdomain()` - -return the canonicalized `.domain` field. This is lower-cased and punycode (RFC3490) encoded if the domain has any non-ASCII characters. - -### `.toJSON()` - -For convenience in using `JSON.serialize(cookie)`. Returns a plain-old `Object` that can be JSON-serialized. - -Any `Date` properties (i.e., `.expires`, `.creation`, and `.lastAccessed`) are exported in ISO format (`.toISOString()`). - -**NOTE**: Custom `Cookie` properties will be discarded. In tough-cookie 1.x, since there was no `.toJSON` method explicitly defined, all enumerable properties were captured. If you want a property to be serialized, add the property name to the `Cookie.serializableProperties` Array. - -### `Cookie.fromJSON(strOrObj)` - -Does the reverse of `cookie.toJSON()`. If passed a string, will `JSON.parse()` that first. - -Any `Date` properties (i.e., `.expires`, `.creation`, and `.lastAccessed`) are parsed via `Date.parse()`, not the tough-cookie `parseDate`, since it's JavaScript/JSON-y timestamps being handled at this layer. - -Returns `null` upon JSON parsing error. - -### `.clone()` - -Does a deep clone of this cookie, exactly implemented as `Cookie.fromJSON(cookie.toJSON())`. - -### `.validate()` - -Status: *IN PROGRESS*. Works for a few things, but is by no means comprehensive. - -validates cookie attributes for semantic correctness. Useful for "lint" checking any Set-Cookie headers you generate. For now, it returns a boolean, but eventually could return a reason string -- you can future-proof with this construct: - -``` javascript -if (cookie.validate() === true) { - // it's tasty -} else { - // yuck! -} -``` - - -## CookieJar - -Exported via `tough.CookieJar`. - -### `CookieJar([store],[options])` - -Simply use `new CookieJar()`. If you'd like to use a custom store, pass that to the constructor otherwise a `MemoryCookieStore` will be created and used. - -The `options` object can be omitted and can have the following properties: - - * _rejectPublicSuffixes_ - boolean - default `true` - reject cookies with domains like "com" and "co.uk" - * _looseMode_ - boolean - default `false` - accept malformed cookies like `bar` and `=bar`, which have an implied empty name. - This is not in the standard, but is used sometimes on the web and is accepted by (most) browsers. - -Since eventually this module would like to support database/remote/etc. CookieJars, continuation passing style is used for CookieJar methods. - -### `.setCookie(cookieOrString, currentUrl, [{options},] cb(err,cookie))` - -Attempt to set the cookie in the cookie jar. If the operation fails, an error will be given to the callback `cb`, otherwise the cookie is passed through. The cookie will have updated `.creation`, `.lastAccessed` and `.hostOnly` properties. - -The `options` object can be omitted and can have the following properties: - - * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies. - * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`. - * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies - * _ignoreError_ - boolean - default `false` - silently ignore things like parse errors and invalid domains. `Store` errors aren't ignored by this option. - -As per the RFC, the `.hostOnly` property is set if there was no "Domain=" parameter in the cookie string (or `.domain` was null on the Cookie object). The `.domain` property is set to the fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an exact hostname match (not a `domainMatch` as per usual). - -### `.setCookieSync(cookieOrString, currentUrl, [{options}])` - -Synchronous version of `setCookie`; only works with synchronous stores (e.g. the default `MemoryCookieStore`). - -### `.getCookies(currentUrl, [{options},] cb(err,cookies))` - -Retrieve the list of cookies that can be sent in a Cookie header for the current url. - -If an error is encountered, that's passed as `err` to the callback, otherwise an `Array` of `Cookie` objects is passed. The array is sorted with `cookieCompare()` unless the `{sort:false}` option is given. - -The `options` object can be omitted and can have the following properties: - - * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies. - * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`. - * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies - * _expire_ - boolean - default `true` - perform expiry-time checking of cookies and asynchronously remove expired cookies from the store. Using `false` will return expired cookies and **not** remove them from the store (which is useful for replaying Set-Cookie headers, potentially). - * _allPaths_ - boolean - default `false` - if `true`, do not scope cookies by path. The default uses RFC-compliant path scoping. **Note**: may not be supported by the underlying store (the default `MemoryCookieStore` supports it). - -The `.lastAccessed` property of the returned cookies will have been updated. - -### `.getCookiesSync(currentUrl, [{options}])` - -Synchronous version of `getCookies`; only works with synchronous stores (e.g. the default `MemoryCookieStore`). - -### `.getCookieString(...)` - -Accepts the same options as `.getCookies()` but passes a string suitable for a Cookie header rather than an array to the callback. Simply maps the `Cookie` array via `.cookieString()`. - -### `.getCookieStringSync(...)` - -Synchronous version of `getCookieString`; only works with synchronous stores (e.g. the default `MemoryCookieStore`). - -### `.getSetCookieStrings(...)` - -Returns an array of strings suitable for **Set-Cookie** headers. Accepts the same options as `.getCookies()`. Simply maps the cookie array via `.toString()`. - -### `.getSetCookieStringsSync(...)` - -Synchronous version of `getSetCookieStrings`; only works with synchronous stores (e.g. the default `MemoryCookieStore`). - -### `.serialize(cb(err,serializedObject))` - -Serialize the Jar if the underlying store supports `.getAllCookies`. - -**NOTE**: Custom `Cookie` properties will be discarded. If you want a property to be serialized, add the property name to the `Cookie.serializableProperties` Array. - -See [Serialization Format]. - -### `.serializeSync()` - -Sync version of .serialize - -### `.toJSON()` - -Alias of .serializeSync() for the convenience of `JSON.stringify(cookiejar)`. - -### `CookieJar.deserialize(serialized, [store], cb(err,object))` - -A new Jar is created and the serialized Cookies are added to the underlying store. Each `Cookie` is added via `store.putCookie` in the order in which they appear in the serialization. - -The `store` argument is optional, but should be an instance of `Store`. By default, a new instance of `MemoryCookieStore` is created. - -As a convenience, if `serialized` is a string, it is passed through `JSON.parse` first. If that throws an error, this is passed to the callback. - -### `CookieJar.deserializeSync(serialized, [store])` - -Sync version of `.deserialize`. _Note_ that the `store` must be synchronous for this to work. - -### `CookieJar.fromJSON(string)` - -Alias of `.deserializeSync` to provide consistency with `Cookie.fromJSON()`. - -### `.clone([store,]cb(err,newJar))` - -Produces a deep clone of this jar. Modifications to the original won't affect the clone, and vice versa. - -The `store` argument is optional, but should be an instance of `Store`. By default, a new instance of `MemoryCookieStore` is created. Transferring between store types is supported so long as the source implements `.getAllCookies()` and the destination implements `.putCookie()`. - -### `.cloneSync([store])` - -Synchronous version of `.clone`, returning a new `CookieJar` instance. - -The `store` argument is optional, but must be a _synchronous_ `Store` instance if specified. If not passed, a new instance of `MemoryCookieStore` is used. - -The _source_ and _destination_ must both be synchronous `Store`s. If one or both stores are asynchronous, use `.clone` instead. Recall that `MemoryCookieStore` supports both synchronous and asynchronous API calls. - -### `.removeAllCookies(cb(err))` - -Removes all cookies from the jar. - -This is a new backwards-compatible feature of `tough-cookie` version 2.5, so not all Stores will implement it efficiently. For Stores that do not implement `removeAllCookies`, the fallback is to call `removeCookie` after `getAllCookies`. If `getAllCookies` fails or isn't implemented in the Store, that error is returned. If one or more of the `removeCookie` calls fail, only the first error is returned. - -### `.removeAllCookiesSync()` - -Sync version of `.removeAllCookies()` - -## Store - -Base class for CookieJar stores. Available as `tough.Store`. - -## Store API - -The storage model for each `CookieJar` instance can be replaced with a custom implementation. The default is `MemoryCookieStore` which can be found in the `lib/memstore.js` file. The API uses continuation-passing-style to allow for asynchronous stores. - -Stores should inherit from the base `Store` class, which is available as `require('tough-cookie').Store`. - -Stores are asynchronous by default, but if `store.synchronous` is set to `true`, then the `*Sync` methods on the of the containing `CookieJar` can be used (however, the continuation-passing style - -All `domain` parameters will have been normalized before calling. - -The Cookie store must have all of the following methods. - -### `store.findCookie(domain, path, key, cb(err,cookie))` - -Retrieve a cookie with the given domain, path and key (a.k.a. name). The RFC maintains that exactly one of these cookies should exist in a store. If the store is using versioning, this means that the latest/newest such cookie should be returned. - -Callback takes an error and the resulting `Cookie` object. If no cookie is found then `null` MUST be passed instead (i.e. not an error). - -### `store.findCookies(domain, path, cb(err,cookies))` - -Locates cookies matching the given domain and path. This is most often called in the context of `cookiejar.getCookies()` above. - -If no cookies are found, the callback MUST be passed an empty array. - -The resulting list will be checked for applicability to the current request according to the RFC (domain-match, path-match, http-only-flag, secure-flag, expiry, etc.), so it's OK to use an optimistic search algorithm when implementing this method. However, the search algorithm used SHOULD try to find cookies that `domainMatch()` the domain and `pathMatch()` the path in order to limit the amount of checking that needs to be done. - -As of version 0.9.12, the `allPaths` option to `cookiejar.getCookies()` above will cause the path here to be `null`. If the path is `null`, path-matching MUST NOT be performed (i.e. domain-matching only). - -### `store.putCookie(cookie, cb(err))` - -Adds a new cookie to the store. The implementation SHOULD replace any existing cookie with the same `.domain`, `.path`, and `.key` properties -- depending on the nature of the implementation, it's possible that between the call to `fetchCookie` and `putCookie` that a duplicate `putCookie` can occur. - -The `cookie` object MUST NOT be modified; the caller will have already updated the `.creation` and `.lastAccessed` properties. - -Pass an error if the cookie cannot be stored. - -### `store.updateCookie(oldCookie, newCookie, cb(err))` - -Update an existing cookie. The implementation MUST update the `.value` for a cookie with the same `domain`, `.path` and `.key`. The implementation SHOULD check that the old value in the store is equivalent to `oldCookie` - how the conflict is resolved is up to the store. - -The `.lastAccessed` property will always be different between the two objects (to the precision possible via JavaScript's clock). Both `.creation` and `.creationIndex` are guaranteed to be the same. Stores MAY ignore or defer the `.lastAccessed` change at the cost of affecting how cookies are selected for automatic deletion (e.g., least-recently-used, which is up to the store to implement). - -Stores may wish to optimize changing the `.value` of the cookie in the store versus storing a new cookie. If the implementation doesn't define this method a stub that calls `putCookie(newCookie,cb)` will be added to the store object. - -The `newCookie` and `oldCookie` objects MUST NOT be modified. - -Pass an error if the newCookie cannot be stored. - -### `store.removeCookie(domain, path, key, cb(err))` - -Remove a cookie from the store (see notes on `findCookie` about the uniqueness constraint). - -The implementation MUST NOT pass an error if the cookie doesn't exist; only pass an error due to the failure to remove an existing cookie. - -### `store.removeCookies(domain, path, cb(err))` - -Removes matching cookies from the store. The `path` parameter is optional, and if missing means all paths in a domain should be removed. - -Pass an error ONLY if removing any existing cookies failed. - -### `store.removeAllCookies(cb(err))` - -_Optional_. Removes all cookies from the store. - -Pass an error if one or more cookies can't be removed. - -**Note**: New method as of `tough-cookie` version 2.5, so not all Stores will implement this, plus some stores may choose not to implement this. - -### `store.getAllCookies(cb(err, cookies))` - -_Optional_. Produces an `Array` of all cookies during `jar.serialize()`. The items in the array can be true `Cookie` objects or generic `Object`s with the [Serialization Format] data structure. - -Cookies SHOULD be returned in creation order to preserve sorting via `compareCookies()`. For reference, `MemoryCookieStore` will sort by `.creationIndex` since it uses true `Cookie` objects internally. If you don't return the cookies in creation order, they'll still be sorted by creation time, but this only has a precision of 1ms. See `compareCookies` for more detail. - -Pass an error if retrieval fails. - -**Note**: not all Stores can implement this due to technical limitations, so it is optional. - -## MemoryCookieStore - -Inherits from `Store`. - -A just-in-memory CookieJar synchronous store implementation, used by default. Despite being a synchronous implementation, it's usable with both the synchronous and asynchronous forms of the `CookieJar` API. Supports serialization, `getAllCookies`, and `removeAllCookies`. - -## Community Cookie Stores - -These are some Store implementations authored and maintained by the community. They aren't official and we don't vouch for them but you may be interested to have a look: - -- [`db-cookie-store`](https://github.com/JSBizon/db-cookie-store): SQL including SQLite-based databases -- [`file-cookie-store`](https://github.com/JSBizon/file-cookie-store): Netscape cookie file format on disk -- [`redis-cookie-store`](https://github.com/benkroeger/redis-cookie-store): Redis -- [`tough-cookie-filestore`](https://github.com/mitsuru/tough-cookie-filestore): JSON on disk -- [`tough-cookie-web-storage-store`](https://github.com/exponentjs/tough-cookie-web-storage-store): DOM localStorage and sessionStorage - - -# Serialization Format - -**NOTE**: if you want to have custom `Cookie` properties serialized, add the property name to `Cookie.serializableProperties`. - -```js - { - // The version of tough-cookie that serialized this jar. - version: 'tough-cookie@1.x.y', - - // add the store type, to make humans happy: - storeType: 'MemoryCookieStore', - - // CookieJar configuration: - rejectPublicSuffixes: true, - // ... future items go here - - // Gets filled from jar.store.getAllCookies(): - cookies: [ - { - key: 'string', - value: 'string', - // ... - /* other Cookie.serializableProperties go here */ - } - ] - } -``` - -# Copyright and License - -BSD-3-Clause: - -```text - Copyright (c) 2015, Salesforce.com, Inc. - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - 3. Neither the name of Salesforce.com nor the names of its contributors may - be used to endorse or promote products derived from this software without - specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. -``` diff --git a/node_modules/tough-cookie/lib/cookie.js b/node_modules/tough-cookie/lib/cookie.js deleted file mode 100644 index 32dc0f8..0000000 --- a/node_modules/tough-cookie/lib/cookie.js +++ /dev/null @@ -1,1482 +0,0 @@ -/*! - * Copyright (c) 2015, Salesforce.com, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. Neither the name of Salesforce.com nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -'use strict'; -var net = require('net'); -var urlParse = require('url').parse; -var util = require('util'); -var pubsuffix = require('./pubsuffix-psl'); -var Store = require('./store').Store; -var MemoryCookieStore = require('./memstore').MemoryCookieStore; -var pathMatch = require('./pathMatch').pathMatch; -var VERSION = require('./version'); - -var punycode; -try { - punycode = require('punycode'); -} catch(e) { - console.warn("tough-cookie: can't load punycode; won't use punycode for domain normalization"); -} - -// From RFC6265 S4.1.1 -// note that it excludes \x3B ";" -var COOKIE_OCTETS = /^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/; - -var CONTROL_CHARS = /[\x00-\x1F]/; - -// From Chromium // '\r', '\n' and '\0' should be treated as a terminator in -// the "relaxed" mode, see: -// https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60 -var TERMINATORS = ['\n', '\r', '\0']; - -// RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or ";"' -// Note ';' is \x3B -var PATH_VALUE = /[\x20-\x3A\x3C-\x7E]+/; - -// date-time parsing constants (RFC6265 S5.1.1) - -var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/; - -var MONTH_TO_NUM = { - jan:0, feb:1, mar:2, apr:3, may:4, jun:5, - jul:6, aug:7, sep:8, oct:9, nov:10, dec:11 -}; -var NUM_TO_MONTH = [ - 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec' -]; -var NUM_TO_DAY = [ - 'Sun','Mon','Tue','Wed','Thu','Fri','Sat' -]; - -var MAX_TIME = 2147483647000; // 31-bit max -var MIN_TIME = 0; // 31-bit min - -/* - * Parses a Natural number (i.e., non-negative integer) with either the - * *DIGIT ( non-digit *OCTET ) - * or - * *DIGIT - * grammar (RFC6265 S5.1.1). - * - * The "trailingOK" boolean controls if the grammar accepts a - * "( non-digit *OCTET )" trailer. - */ -function parseDigits(token, minDigits, maxDigits, trailingOK) { - var count = 0; - while (count < token.length) { - var c = token.charCodeAt(count); - // "non-digit = %x00-2F / %x3A-FF" - if (c <= 0x2F || c >= 0x3A) { - break; - } - count++; - } - - // constrain to a minimum and maximum number of digits. - if (count < minDigits || count > maxDigits) { - return null; - } - - if (!trailingOK && count != token.length) { - return null; - } - - return parseInt(token.substr(0,count), 10); -} - -function parseTime(token) { - var parts = token.split(':'); - var result = [0,0,0]; - - /* RF6256 S5.1.1: - * time = hms-time ( non-digit *OCTET ) - * hms-time = time-field ":" time-field ":" time-field - * time-field = 1*2DIGIT - */ - - if (parts.length !== 3) { - return null; - } - - for (var i = 0; i < 3; i++) { - // "time-field" must be strictly "1*2DIGIT", HOWEVER, "hms-time" can be - // followed by "( non-digit *OCTET )" so therefore the last time-field can - // have a trailer - var trailingOK = (i == 2); - var num = parseDigits(parts[i], 1, 2, trailingOK); - if (num === null) { - return null; - } - result[i] = num; - } - - return result; -} - -function parseMonth(token) { - token = String(token).substr(0,3).toLowerCase(); - var num = MONTH_TO_NUM[token]; - return num >= 0 ? num : null; -} - -/* - * RFC6265 S5.1.1 date parser (see RFC for full grammar) - */ -function parseDate(str) { - if (!str) { - return; - } - - /* RFC6265 S5.1.1: - * 2. Process each date-token sequentially in the order the date-tokens - * appear in the cookie-date - */ - var tokens = str.split(DATE_DELIM); - if (!tokens) { - return; - } - - var hour = null; - var minute = null; - var second = null; - var dayOfMonth = null; - var month = null; - var year = null; - - for (var i=0; i= 70 && year <= 99) { - year += 1900; - } else if (year >= 0 && year <= 69) { - year += 2000; - } - } - } - } - - /* RFC 6265 S5.1.1 - * "5. Abort these steps and fail to parse the cookie-date if: - * * at least one of the found-day-of-month, found-month, found- - * year, or found-time flags is not set, - * * the day-of-month-value is less than 1 or greater than 31, - * * the year-value is less than 1601, - * * the hour-value is greater than 23, - * * the minute-value is greater than 59, or - * * the second-value is greater than 59. - * (Note that leap seconds cannot be represented in this syntax.)" - * - * So, in order as above: - */ - if ( - dayOfMonth === null || month === null || year === null || second === null || - dayOfMonth < 1 || dayOfMonth > 31 || - year < 1601 || - hour > 23 || - minute > 59 || - second > 59 - ) { - return; - } - - return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second)); -} - -function formatDate(date) { - var d = date.getUTCDate(); d = d >= 10 ? d : '0'+d; - var h = date.getUTCHours(); h = h >= 10 ? h : '0'+h; - var m = date.getUTCMinutes(); m = m >= 10 ? m : '0'+m; - var s = date.getUTCSeconds(); s = s >= 10 ? s : '0'+s; - return NUM_TO_DAY[date.getUTCDay()] + ', ' + - d+' '+ NUM_TO_MONTH[date.getUTCMonth()] +' '+ date.getUTCFullYear() +' '+ - h+':'+m+':'+s+' GMT'; -} - -// S5.1.2 Canonicalized Host Names -function canonicalDomain(str) { - if (str == null) { - return null; - } - str = str.trim().replace(/^\./,''); // S4.1.2.3 & S5.2.3: ignore leading . - - // convert to IDN if any non-ASCII characters - if (punycode && /[^\u0001-\u007f]/.test(str)) { - str = punycode.toASCII(str); - } - - return str.toLowerCase(); -} - -// S5.1.3 Domain Matching -function domainMatch(str, domStr, canonicalize) { - if (str == null || domStr == null) { - return null; - } - if (canonicalize !== false) { - str = canonicalDomain(str); - domStr = canonicalDomain(domStr); - } - - /* - * "The domain string and the string are identical. (Note that both the - * domain string and the string will have been canonicalized to lower case at - * this point)" - */ - if (str == domStr) { - return true; - } - - /* "All of the following [three] conditions hold:" (order adjusted from the RFC) */ - - /* "* The string is a host name (i.e., not an IP address)." */ - if (net.isIP(str)) { - return false; - } - - /* "* The domain string is a suffix of the string" */ - var idx = str.indexOf(domStr); - if (idx <= 0) { - return false; // it's a non-match (-1) or prefix (0) - } - - // e.g "a.b.c".indexOf("b.c") === 2 - // 5 === 3+2 - if (str.length !== domStr.length + idx) { // it's not a suffix - return false; - } - - /* "* The last character of the string that is not included in the domain - * string is a %x2E (".") character." */ - if (str.substr(idx-1,1) !== '.') { - return false; - } - - return true; -} - - -// RFC6265 S5.1.4 Paths and Path-Match - -/* - * "The user agent MUST use an algorithm equivalent to the following algorithm - * to compute the default-path of a cookie:" - * - * Assumption: the path (and not query part or absolute uri) is passed in. - */ -function defaultPath(path) { - // "2. If the uri-path is empty or if the first character of the uri-path is not - // a %x2F ("/") character, output %x2F ("/") and skip the remaining steps. - if (!path || path.substr(0,1) !== "/") { - return "/"; - } - - // "3. If the uri-path contains no more than one %x2F ("/") character, output - // %x2F ("/") and skip the remaining step." - if (path === "/") { - return path; - } - - var rightSlash = path.lastIndexOf("/"); - if (rightSlash === 0) { - return "/"; - } - - // "4. Output the characters of the uri-path from the first character up to, - // but not including, the right-most %x2F ("/")." - return path.slice(0, rightSlash); -} - -function trimTerminator(str) { - for (var t = 0; t < TERMINATORS.length; t++) { - var terminatorIdx = str.indexOf(TERMINATORS[t]); - if (terminatorIdx !== -1) { - str = str.substr(0,terminatorIdx); - } - } - - return str; -} - -function parseCookiePair(cookiePair, looseMode) { - cookiePair = trimTerminator(cookiePair); - - var firstEq = cookiePair.indexOf('='); - if (looseMode) { - if (firstEq === 0) { // '=' is immediately at start - cookiePair = cookiePair.substr(1); - firstEq = cookiePair.indexOf('='); // might still need to split on '=' - } - } else { // non-loose mode - if (firstEq <= 0) { // no '=' or is at start - return; // needs to have non-empty "cookie-name" - } - } - - var cookieName, cookieValue; - if (firstEq <= 0) { - cookieName = ""; - cookieValue = cookiePair.trim(); - } else { - cookieName = cookiePair.substr(0, firstEq).trim(); - cookieValue = cookiePair.substr(firstEq+1).trim(); - } - - if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) { - return; - } - - var c = new Cookie(); - c.key = cookieName; - c.value = cookieValue; - return c; -} - -function parse(str, options) { - if (!options || typeof options !== 'object') { - options = {}; - } - str = str.trim(); - - // We use a regex to parse the "name-value-pair" part of S5.2 - var firstSemi = str.indexOf(';'); // S5.2 step 1 - var cookiePair = (firstSemi === -1) ? str : str.substr(0, firstSemi); - var c = parseCookiePair(cookiePair, !!options.loose); - if (!c) { - return; - } - - if (firstSemi === -1) { - return c; - } - - // S5.2.3 "unparsed-attributes consist of the remainder of the set-cookie-string - // (including the %x3B (";") in question)." plus later on in the same section - // "discard the first ";" and trim". - var unparsed = str.slice(firstSemi + 1).trim(); - - // "If the unparsed-attributes string is empty, skip the rest of these - // steps." - if (unparsed.length === 0) { - return c; - } - - /* - * S5.2 says that when looping over the items "[p]rocess the attribute-name - * and attribute-value according to the requirements in the following - * subsections" for every item. Plus, for many of the individual attributes - * in S5.3 it says to use the "attribute-value of the last attribute in the - * cookie-attribute-list". Therefore, in this implementation, we overwrite - * the previous value. - */ - var cookie_avs = unparsed.split(';'); - while (cookie_avs.length) { - var av = cookie_avs.shift().trim(); - if (av.length === 0) { // happens if ";;" appears - continue; - } - var av_sep = av.indexOf('='); - var av_key, av_value; - - if (av_sep === -1) { - av_key = av; - av_value = null; - } else { - av_key = av.substr(0,av_sep); - av_value = av.substr(av_sep+1); - } - - av_key = av_key.trim().toLowerCase(); - - if (av_value) { - av_value = av_value.trim(); - } - - switch(av_key) { - case 'expires': // S5.2.1 - if (av_value) { - var exp = parseDate(av_value); - // "If the attribute-value failed to parse as a cookie date, ignore the - // cookie-av." - if (exp) { - // over and underflow not realistically a concern: V8's getTime() seems to - // store something larger than a 32-bit time_t (even with 32-bit node) - c.expires = exp; - } - } - break; - - case 'max-age': // S5.2.2 - if (av_value) { - // "If the first character of the attribute-value is not a DIGIT or a "-" - // character ...[or]... If the remainder of attribute-value contains a - // non-DIGIT character, ignore the cookie-av." - if (/^-?[0-9]+$/.test(av_value)) { - var delta = parseInt(av_value, 10); - // "If delta-seconds is less than or equal to zero (0), let expiry-time - // be the earliest representable date and time." - c.setMaxAge(delta); - } - } - break; - - case 'domain': // S5.2.3 - // "If the attribute-value is empty, the behavior is undefined. However, - // the user agent SHOULD ignore the cookie-av entirely." - if (av_value) { - // S5.2.3 "Let cookie-domain be the attribute-value without the leading %x2E - // (".") character." - var domain = av_value.trim().replace(/^\./, ''); - if (domain) { - // "Convert the cookie-domain to lower case." - c.domain = domain.toLowerCase(); - } - } - break; - - case 'path': // S5.2.4 - /* - * "If the attribute-value is empty or if the first character of the - * attribute-value is not %x2F ("/"): - * Let cookie-path be the default-path. - * Otherwise: - * Let cookie-path be the attribute-value." - * - * We'll represent the default-path as null since it depends on the - * context of the parsing. - */ - c.path = av_value && av_value[0] === "/" ? av_value : null; - break; - - case 'secure': // S5.2.5 - /* - * "If the attribute-name case-insensitively matches the string "Secure", - * the user agent MUST append an attribute to the cookie-attribute-list - * with an attribute-name of Secure and an empty attribute-value." - */ - c.secure = true; - break; - - case 'httponly': // S5.2.6 -- effectively the same as 'secure' - c.httpOnly = true; - break; - - default: - c.extensions = c.extensions || []; - c.extensions.push(av); - break; - } - } - - return c; -} - -// avoid the V8 deoptimization monster! -function jsonParse(str) { - var obj; - try { - obj = JSON.parse(str); - } catch (e) { - return e; - } - return obj; -} - -function fromJSON(str) { - if (!str) { - return null; - } - - var obj; - if (typeof str === 'string') { - obj = jsonParse(str); - if (obj instanceof Error) { - return null; - } - } else { - // assume it's an Object - obj = str; - } - - var c = new Cookie(); - for (var i=0; i 1) { - var lindex = path.lastIndexOf('/'); - if (lindex === 0) { - break; - } - path = path.substr(0,lindex); - permutations.push(path); - } - permutations.push('/'); - return permutations; -} - -function getCookieContext(url) { - if (url instanceof Object) { - return url; - } - // NOTE: decodeURI will throw on malformed URIs (see GH-32). - // Therefore, we will just skip decoding for such URIs. - try { - url = decodeURI(url); - } - catch(err) { - // Silently swallow error - } - - return urlParse(url); -} - -function Cookie(options) { - options = options || {}; - - Object.keys(options).forEach(function(prop) { - if (Cookie.prototype.hasOwnProperty(prop) && - Cookie.prototype[prop] !== options[prop] && - prop.substr(0,1) !== '_') - { - this[prop] = options[prop]; - } - }, this); - - this.creation = this.creation || new Date(); - - // used to break creation ties in cookieCompare(): - Object.defineProperty(this, 'creationIndex', { - configurable: false, - enumerable: false, // important for assert.deepEqual checks - writable: true, - value: ++Cookie.cookiesCreated - }); -} - -Cookie.cookiesCreated = 0; // incremented each time a cookie is created - -Cookie.parse = parse; -Cookie.fromJSON = fromJSON; - -Cookie.prototype.key = ""; -Cookie.prototype.value = ""; - -// the order in which the RFC has them: -Cookie.prototype.expires = "Infinity"; // coerces to literal Infinity -Cookie.prototype.maxAge = null; // takes precedence over expires for TTL -Cookie.prototype.domain = null; -Cookie.prototype.path = null; -Cookie.prototype.secure = false; -Cookie.prototype.httpOnly = false; -Cookie.prototype.extensions = null; - -// set by the CookieJar: -Cookie.prototype.hostOnly = null; // boolean when set -Cookie.prototype.pathIsDefault = null; // boolean when set -Cookie.prototype.creation = null; // Date when set; defaulted by Cookie.parse -Cookie.prototype.lastAccessed = null; // Date when set -Object.defineProperty(Cookie.prototype, 'creationIndex', { - configurable: true, - enumerable: false, - writable: true, - value: 0 -}); - -Cookie.serializableProperties = Object.keys(Cookie.prototype) - .filter(function(prop) { - return !( - Cookie.prototype[prop] instanceof Function || - prop === 'creationIndex' || - prop.substr(0,1) === '_' - ); - }); - -Cookie.prototype.inspect = function inspect() { - var now = Date.now(); - return 'Cookie="'+this.toString() + - '; hostOnly='+(this.hostOnly != null ? this.hostOnly : '?') + - '; aAge='+(this.lastAccessed ? (now-this.lastAccessed.getTime())+'ms' : '?') + - '; cAge='+(this.creation ? (now-this.creation.getTime())+'ms' : '?') + - '"'; -}; - -// Use the new custom inspection symbol to add the custom inspect function if -// available. -if (util.inspect.custom) { - Cookie.prototype[util.inspect.custom] = Cookie.prototype.inspect; -} - -Cookie.prototype.toJSON = function() { - var obj = {}; - - var props = Cookie.serializableProperties; - for (var i=0; i=0.8" - }, - "files": [ - "lib" - ], - "homepage": "https://github.com/salesforce/tough-cookie", - "keywords": [ - "HTTP", - "cookie", - "cookies", - "set-cookie", - "cookiejar", - "jar", - "RFC6265", - "RFC2965" - ], - "license": "BSD-3-Clause", - "main": "./lib/cookie", - "name": "tough-cookie", - "repository": { - "type": "git", - "url": "git://github.com/salesforce/tough-cookie.git" - }, - "scripts": { - "cover": "nyc --reporter=lcov --reporter=html vows test/*_test.js", - "test": "vows test/*_test.js", - "version": "genversion lib/version.js && git add lib/version.js" - }, - "version": "2.5.0" -} diff --git a/node_modules/tunnel-agent/LICENSE b/node_modules/tunnel-agent/LICENSE deleted file mode 100644 index a4a9aee..0000000 --- a/node_modules/tunnel-agent/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/tunnel-agent/README.md b/node_modules/tunnel-agent/README.md deleted file mode 100644 index bb533d5..0000000 --- a/node_modules/tunnel-agent/README.md +++ /dev/null @@ -1,4 +0,0 @@ -tunnel-agent -============ - -HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module. diff --git a/node_modules/tunnel-agent/index.js b/node_modules/tunnel-agent/index.js deleted file mode 100644 index 3ee9abc..0000000 --- a/node_modules/tunnel-agent/index.js +++ /dev/null @@ -1,244 +0,0 @@ -'use strict' - -var net = require('net') - , tls = require('tls') - , http = require('http') - , https = require('https') - , events = require('events') - , assert = require('assert') - , util = require('util') - , Buffer = require('safe-buffer').Buffer - ; - -exports.httpOverHttp = httpOverHttp -exports.httpsOverHttp = httpsOverHttp -exports.httpOverHttps = httpOverHttps -exports.httpsOverHttps = httpsOverHttps - - -function httpOverHttp(options) { - var agent = new TunnelingAgent(options) - agent.request = http.request - return agent -} - -function httpsOverHttp(options) { - var agent = new TunnelingAgent(options) - agent.request = http.request - agent.createSocket = createSecureSocket - agent.defaultPort = 443 - return agent -} - -function httpOverHttps(options) { - var agent = new TunnelingAgent(options) - agent.request = https.request - return agent -} - -function httpsOverHttps(options) { - var agent = new TunnelingAgent(options) - agent.request = https.request - agent.createSocket = createSecureSocket - agent.defaultPort = 443 - return agent -} - - -function TunnelingAgent(options) { - var self = this - self.options = options || {} - self.proxyOptions = self.options.proxy || {} - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets - self.requests = [] - self.sockets = [] - - self.on('free', function onFree(socket, host, port) { - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i] - if (pending.host === host && pending.port === port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1) - pending.request.onSocket(socket) - return - } - } - socket.destroy() - self.removeSocket(socket) - }) -} -util.inherits(TunnelingAgent, events.EventEmitter) - -TunnelingAgent.prototype.addRequest = function addRequest(req, options) { - var self = this - - // Legacy API: addRequest(req, host, port, path) - if (typeof options === 'string') { - options = { - host: options, - port: arguments[2], - path: arguments[3] - }; - } - - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push({host: options.host, port: options.port, request: req}) - return - } - - // If we are under maxSockets create a new one. - self.createConnection({host: options.host, port: options.port, request: req}) -} - -TunnelingAgent.prototype.createConnection = function createConnection(pending) { - var self = this - - self.createSocket(pending, function(socket) { - socket.on('free', onFree) - socket.on('close', onCloseOrRemove) - socket.on('agentRemove', onCloseOrRemove) - pending.request.onSocket(socket) - - function onFree() { - self.emit('free', socket, pending.host, pending.port) - } - - function onCloseOrRemove(err) { - self.removeSocket(socket) - socket.removeListener('free', onFree) - socket.removeListener('close', onCloseOrRemove) - socket.removeListener('agentRemove', onCloseOrRemove) - } - }) -} - -TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this - var placeholder = {} - self.sockets.push(placeholder) - - var connectOptions = mergeOptions({}, self.proxyOptions, - { method: 'CONNECT' - , path: options.host + ':' + options.port - , agent: false - } - ) - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {} - connectOptions.headers['Proxy-Authorization'] = 'Basic ' + - Buffer.from(connectOptions.proxyAuth).toString('base64') - } - - debug('making CONNECT request') - var connectReq = self.request(connectOptions) - connectReq.useChunkedEncodingByDefault = false // for v0.6 - connectReq.once('response', onResponse) // for v0.6 - connectReq.once('upgrade', onUpgrade) // for v0.6 - connectReq.once('connect', onConnect) // for v0.7 or later - connectReq.once('error', onError) - connectReq.end() - - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true - } - - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function() { - onConnect(res, socket, head) - }) - } - - function onConnect(res, socket, head) { - connectReq.removeAllListeners() - socket.removeAllListeners() - - if (res.statusCode === 200) { - assert.equal(head.length, 0) - debug('tunneling connection has established') - self.sockets[self.sockets.indexOf(placeholder)] = socket - cb(socket) - } else { - debug('tunneling socket could not be established, statusCode=%d', res.statusCode) - var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode) - error.code = 'ECONNRESET' - options.request.emit('error', error) - self.removeSocket(placeholder) - } - } - - function onError(cause) { - connectReq.removeAllListeners() - - debug('tunneling socket could not be established, cause=%s\n', cause.message, cause.stack) - var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message) - error.code = 'ECONNRESET' - options.request.emit('error', error) - self.removeSocket(placeholder) - } -} - -TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket) - if (pos === -1) return - - this.sockets.splice(pos, 1) - - var pending = this.requests.shift() - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createConnection(pending) - } -} - -function createSecureSocket(options, cb) { - var self = this - TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, mergeOptions({}, self.options, - { servername: options.host - , socket: socket - } - )) - self.sockets[self.sockets.indexOf(socket)] = secureSocket - cb(secureSocket) - }) -} - - -function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i] - if (typeof overrides === 'object') { - var keys = Object.keys(overrides) - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j] - if (overrides[k] !== undefined) { - target[k] = overrides[k] - } - } - } - } - return target -} - - -var debug -if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function() { - var args = Array.prototype.slice.call(arguments) - if (typeof args[0] === 'string') { - args[0] = 'TUNNEL: ' + args[0] - } else { - args.unshift('TUNNEL:') - } - console.error.apply(console, args) - } -} else { - debug = function() {} -} -exports.debug = debug // for test diff --git a/node_modules/tunnel-agent/package.json b/node_modules/tunnel-agent/package.json deleted file mode 100644 index 75d4bb9..0000000 --- a/node_modules/tunnel-agent/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "_from": "tunnel-agent@^0.6.0", - "_id": "tunnel-agent@0.6.0", - "_inBundle": false, - "_integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "_location": "/tunnel-agent", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "tunnel-agent@^0.6.0", - "name": "tunnel-agent", - "escapedName": "tunnel-agent", - "rawSpec": "^0.6.0", - "saveSpec": null, - "fetchSpec": "^0.6.0" - }, - "_requiredBy": [ - "/request" - ], - "_resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "_shasum": "27a5dea06b36b04a0a9966774b290868f0fc40fd", - "_spec": "tunnel-agent@^0.6.0", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/request", - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "bugs": { - "url": "https://github.com/mikeal/tunnel-agent/issues" - }, - "bundleDependencies": false, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "deprecated": false, - "description": "HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.", - "devDependencies": {}, - "engines": { - "node": "*" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/mikeal/tunnel-agent#readme", - "license": "Apache-2.0", - "main": "index.js", - "name": "tunnel-agent", - "optionalDependencies": {}, - "repository": { - "url": "git+https://github.com/mikeal/tunnel-agent.git" - }, - "version": "0.6.0" -} diff --git a/node_modules/tweetnacl/.npmignore b/node_modules/tweetnacl/.npmignore deleted file mode 100644 index 7d98dcb..0000000 --- a/node_modules/tweetnacl/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -.eslintrc -.travis.yml -bower.json -test diff --git a/node_modules/tweetnacl/AUTHORS.md b/node_modules/tweetnacl/AUTHORS.md deleted file mode 100644 index 6d74d40..0000000 --- a/node_modules/tweetnacl/AUTHORS.md +++ /dev/null @@ -1,28 +0,0 @@ -List of TweetNaCl.js authors -============================ - - Alphabetical order by first name. - Format: Name (GitHub username or URL) - -* AndSDev (@AndSDev) -* Devi Mandiri (@devi) -* Dmitry Chestnykh (@dchest) - -List of authors of third-party public domain code from which TweetNaCl.js code was derived -========================================================================================== - -[TweetNaCl](http://tweetnacl.cr.yp.to/) --------------------------------------- - -* Bernard van Gastel -* Daniel J. Bernstein -* Peter Schwabe -* Sjaak Smetsers -* Tanja Lange -* Wesley Janssen - - -[Poly1305-donna](https://github.com/floodyberry/poly1305-donna) --------------------------------------------------------------- - -* Andrew Moon (@floodyberry) diff --git a/node_modules/tweetnacl/CHANGELOG.md b/node_modules/tweetnacl/CHANGELOG.md deleted file mode 100644 index 92a4fdc..0000000 --- a/node_modules/tweetnacl/CHANGELOG.md +++ /dev/null @@ -1,221 +0,0 @@ -TweetNaCl.js Changelog -====================== - - -v0.14.5 -------- - -* Fixed incomplete return types in TypeScript typings. -* Replaced COPYING.txt with LICENSE file, which now has public domain dedication - text from The Unlicense. License fields in package.json and bower.json have - been set to "Unlicense". The project was and will be in the public domain -- - this change just makes it easier for automated tools to know about this fact by - using the widely recognized and SPDX-compatible template for public domain - dedication. - - -v0.14.4 -------- - -* Added TypeScript type definitions (contributed by @AndSDev). -* Improved benchmarking code. - - -v0.14.3 -------- - -Fixed a bug in the fast version of Poly1305 and brought it back. - -Thanks to @floodyberry for promptly responding and fixing the original C code: - -> "The issue was not properly detecting if st->h was >= 2^130 - 5, coupled with -> [testing mistake] not catching the failure. The chance of the bug affecting -> anything in the real world is essentially zero luckily, but it's good to have -> it fixed." - -https://github.com/floodyberry/poly1305-donna/issues/2#issuecomment-202698577 - - -v0.14.2 -------- - -Switched Poly1305 fast version back to original (slow) version due to a bug. - - -v0.14.1 -------- - -No code changes, just tweaked packaging and added COPYING.txt. - - -v0.14.0 -------- - -* **Breaking change!** All functions from `nacl.util` have been removed. These - functions are no longer available: - - nacl.util.decodeUTF8 - nacl.util.encodeUTF8 - nacl.util.decodeBase64 - nacl.util.encodeBase64 - - If want to continue using them, you can include - package: - - - - - or - - var nacl = require('tweetnacl'); - nacl.util = require('tweetnacl-util'); - - However it is recommended to use better packages that have wider - compatibility and better performance. Functions from `nacl.util` were never - intended to be robust solution for string conversion and were included for - convenience: cryptography library is not the right place for them. - - Currently calling these functions will throw error pointing to - `tweetnacl-util-js` (in the next version this error message will be removed). - -* Improved detection of available random number generators, making it possible - to use `nacl.randomBytes` and related functions in Web Workers without - changes. - -* Changes to testing (see README). - - -v0.13.3 -------- - -No code changes. - -* Reverted license field in package.json to "Public domain". - -* Fixed typo in README. - - -v0.13.2 -------- - -* Fixed undefined variable bug in fast version of Poly1305. No worries, this - bug was *never* triggered. - -* Specified CC0 public domain dedication. - -* Updated development dependencies. - - -v0.13.1 -------- - -* Exclude `crypto` and `buffer` modules from browserify builds. - - -v0.13.0 -------- - -* Made `nacl-fast` the default version in NPM package. Now - `require("tweetnacl")` will use fast version; to get the original version, - use `require("tweetnacl/nacl.js")`. - -* Cleanup temporary array after generating random bytes. - - -v0.12.2 -------- - -* Improved performance of curve operations, making `nacl.scalarMult`, `nacl.box`, - `nacl.sign` and related functions up to 3x faster in `nacl-fast` version. - - -v0.12.1 -------- - -* Significantly improved performance of Salsa20 (~1.5x faster) and - Poly1305 (~3.5x faster) in `nacl-fast` version. - - -v0.12.0 -------- - -* Instead of using the given secret key directly, TweetNaCl.js now copies it to - a new array in `nacl.box.keyPair.fromSecretKey` and - `nacl.sign.keyPair.fromSecretKey`. - - -v0.11.2 -------- - -* Added new constant: `nacl.sign.seedLength`. - - -v0.11.1 -------- - -* Even faster hash for both short and long inputs (in `nacl-fast`). - - -v0.11.0 -------- - -* Implement `nacl.sign.keyPair.fromSeed` to enable creation of sign key pairs - deterministically from a 32-byte seed. (It behaves like - [libsodium's](http://doc.libsodium.org/public-key_cryptography/public-key_signatures.html) - `crypto_sign_seed_keypair`: the seed becomes a secret part of the secret key.) - -* Fast version now has an improved hash implementation that is 2x-5x faster. - -* Fixed benchmarks, which may have produced incorrect measurements. - - -v0.10.1 -------- - -* Exported undocumented `nacl.lowlevel.crypto_core_hsalsa20`. - - -v0.10.0 -------- - -* **Signature API breaking change!** `nacl.sign` and `nacl.sign.open` now deal - with signed messages, and new `nacl.sign.detached` and - `nacl.sign.detached.verify` are available. - - Previously, `nacl.sign` returned a signature, and `nacl.sign.open` accepted a - message and "detached" signature. This was unlike NaCl's API, which dealt with - signed messages (concatenation of signature and message). - - The new API is: - - nacl.sign(message, secretKey) -> signedMessage - nacl.sign.open(signedMessage, publicKey) -> message | null - - Since detached signatures are common, two new API functions were introduced: - - nacl.sign.detached(message, secretKey) -> signature - nacl.sign.detached.verify(message, signature, publicKey) -> true | false - - (Note that it's `verify`, not `open`, and it returns a boolean value, unlike - `open`, which returns an "unsigned" message.) - -* NPM package now comes without `test` directory to keep it small. - - -v0.9.2 ------- - -* Improved documentation. -* Fast version: increased theoretical message size limit from 2^32-1 to 2^52 - bytes in Poly1305 (and thus, secretbox and box). However this has no impact - in practice since JavaScript arrays or ArrayBuffers are limited to 32-bit - indexes, and most implementations won't allocate more than a gigabyte or so. - (Obviously, there are no tests for the correctness of implementation.) Also, - it's not recommended to use messages that large without splitting them into - smaller packets anyway. - - -v0.9.1 ------- - -* Initial release diff --git a/node_modules/tweetnacl/LICENSE b/node_modules/tweetnacl/LICENSE deleted file mode 100644 index cf1ab25..0000000 --- a/node_modules/tweetnacl/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -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 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. - -For more information, please refer to diff --git a/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md b/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index a8eb4a9..0000000 --- a/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,20 +0,0 @@ -# Important! - -If your contribution is not trivial (not a typo fix, etc.), we can only accept -it if you dedicate your copyright for the contribution to the public domain. -Make sure you understand what it means (see http://unlicense.org/)! If you -agree, please add yourself to AUTHORS.md file, and include the following text -to your pull request description or a comment in it: - ------------------------------------------------------------------------------- - - I dedicate any and all copyright interest in this software to the - public domain. I make this dedication for the benefit of the public at - large and to the detriment of my heirs and successors. I intend this - dedication to be an overt act of relinquishment in perpetuity of all - present and future rights to this software under copyright law. - - Anyone is free to copy, modify, publish, use, compile, sell, or - distribute this software, either in source code form or as a compiled - binary, for any purpose, commercial or non-commercial, and by any - means. diff --git a/node_modules/tweetnacl/README.md b/node_modules/tweetnacl/README.md deleted file mode 100644 index ffb6871..0000000 --- a/node_modules/tweetnacl/README.md +++ /dev/null @@ -1,459 +0,0 @@ -TweetNaCl.js -============ - -Port of [TweetNaCl](http://tweetnacl.cr.yp.to) / [NaCl](http://nacl.cr.yp.to/) -to JavaScript for modern browsers and Node.js. Public domain. - -[![Build Status](https://travis-ci.org/dchest/tweetnacl-js.svg?branch=master) -](https://travis-ci.org/dchest/tweetnacl-js) - -Demo: - -**:warning: The library is stable and API is frozen, however it has not been -independently reviewed. If you can help reviewing it, please [contact -me](mailto:dmitry@codingrobots.com).** - -Documentation -============= - -* [Overview](#overview) -* [Installation](#installation) -* [Usage](#usage) - * [Public-key authenticated encryption (box)](#public-key-authenticated-encryption-box) - * [Secret-key authenticated encryption (secretbox)](#secret-key-authenticated-encryption-secretbox) - * [Scalar multiplication](#scalar-multiplication) - * [Signatures](#signatures) - * [Hashing](#hashing) - * [Random bytes generation](#random-bytes-generation) - * [Constant-time comparison](#constant-time-comparison) -* [System requirements](#system-requirements) -* [Development and testing](#development-and-testing) -* [Benchmarks](#benchmarks) -* [Contributors](#contributors) -* [Who uses it](#who-uses-it) - - -Overview --------- - -The primary goal of this project is to produce a translation of TweetNaCl to -JavaScript which is as close as possible to the original C implementation, plus -a thin layer of idiomatic high-level API on top of it. - -There are two versions, you can use either of them: - -* `nacl.js` is the port of TweetNaCl with minimum differences from the - original + high-level API. - -* `nacl-fast.js` is like `nacl.js`, but with some functions replaced with - faster versions. - - -Installation ------------- - -You can install TweetNaCl.js via a package manager: - -[Bower](http://bower.io): - - $ bower install tweetnacl - -[NPM](https://www.npmjs.org/): - - $ npm install tweetnacl - -or [download source code](https://github.com/dchest/tweetnacl-js/releases). - - -Usage ------ - -All API functions accept and return bytes as `Uint8Array`s. If you need to -encode or decode strings, use functions from - or one of the more robust codec -packages. - -In Node.js v4 and later `Buffer` objects are backed by `Uint8Array`s, so you -can freely pass them to TweetNaCl.js functions as arguments. The returned -objects are still `Uint8Array`s, so if you need `Buffer`s, you'll have to -convert them manually; make sure to convert using copying: `new Buffer(array)`, -instead of sharing: `new Buffer(array.buffer)`, because some functions return -subarrays of their buffers. - - -### Public-key authenticated encryption (box) - -Implements *curve25519-xsalsa20-poly1305*. - -#### nacl.box.keyPair() - -Generates a new random key pair for box and returns it as an object with -`publicKey` and `secretKey` members: - - { - publicKey: ..., // Uint8Array with 32-byte public key - secretKey: ... // Uint8Array with 32-byte secret key - } - - -#### nacl.box.keyPair.fromSecretKey(secretKey) - -Returns a key pair for box with public key corresponding to the given secret -key. - -#### nacl.box(message, nonce, theirPublicKey, mySecretKey) - -Encrypt and authenticates message using peer's public key, our secret key, and -the given nonce, which must be unique for each distinct message for a key pair. - -Returns an encrypted and authenticated message, which is -`nacl.box.overheadLength` longer than the original message. - -#### nacl.box.open(box, nonce, theirPublicKey, mySecretKey) - -Authenticates and decrypts the given box with peer's public key, our secret -key, and the given nonce. - -Returns the original message, or `false` if authentication fails. - -#### nacl.box.before(theirPublicKey, mySecretKey) - -Returns a precomputed shared key which can be used in `nacl.box.after` and -`nacl.box.open.after`. - -#### nacl.box.after(message, nonce, sharedKey) - -Same as `nacl.box`, but uses a shared key precomputed with `nacl.box.before`. - -#### nacl.box.open.after(box, nonce, sharedKey) - -Same as `nacl.box.open`, but uses a shared key precomputed with `nacl.box.before`. - -#### nacl.box.publicKeyLength = 32 - -Length of public key in bytes. - -#### nacl.box.secretKeyLength = 32 - -Length of secret key in bytes. - -#### nacl.box.sharedKeyLength = 32 - -Length of precomputed shared key in bytes. - -#### nacl.box.nonceLength = 24 - -Length of nonce in bytes. - -#### nacl.box.overheadLength = 16 - -Length of overhead added to box compared to original message. - - -### Secret-key authenticated encryption (secretbox) - -Implements *xsalsa20-poly1305*. - -#### nacl.secretbox(message, nonce, key) - -Encrypt and authenticates message using the key and the nonce. The nonce must -be unique for each distinct message for this key. - -Returns an encrypted and authenticated message, which is -`nacl.secretbox.overheadLength` longer than the original message. - -#### nacl.secretbox.open(box, nonce, key) - -Authenticates and decrypts the given secret box using the key and the nonce. - -Returns the original message, or `false` if authentication fails. - -#### nacl.secretbox.keyLength = 32 - -Length of key in bytes. - -#### nacl.secretbox.nonceLength = 24 - -Length of nonce in bytes. - -#### nacl.secretbox.overheadLength = 16 - -Length of overhead added to secret box compared to original message. - - -### Scalar multiplication - -Implements *curve25519*. - -#### nacl.scalarMult(n, p) - -Multiplies an integer `n` by a group element `p` and returns the resulting -group element. - -#### nacl.scalarMult.base(n) - -Multiplies an integer `n` by a standard group element and returns the resulting -group element. - -#### nacl.scalarMult.scalarLength = 32 - -Length of scalar in bytes. - -#### nacl.scalarMult.groupElementLength = 32 - -Length of group element in bytes. - - -### Signatures - -Implements [ed25519](http://ed25519.cr.yp.to). - -#### nacl.sign.keyPair() - -Generates new random key pair for signing and returns it as an object with -`publicKey` and `secretKey` members: - - { - publicKey: ..., // Uint8Array with 32-byte public key - secretKey: ... // Uint8Array with 64-byte secret key - } - -#### nacl.sign.keyPair.fromSecretKey(secretKey) - -Returns a signing key pair with public key corresponding to the given -64-byte secret key. The secret key must have been generated by -`nacl.sign.keyPair` or `nacl.sign.keyPair.fromSeed`. - -#### nacl.sign.keyPair.fromSeed(seed) - -Returns a new signing key pair generated deterministically from a 32-byte seed. -The seed must contain enough entropy to be secure. This method is not -recommended for general use: instead, use `nacl.sign.keyPair` to generate a new -key pair from a random seed. - -#### nacl.sign(message, secretKey) - -Signs the message using the secret key and returns a signed message. - -#### nacl.sign.open(signedMessage, publicKey) - -Verifies the signed message and returns the message without signature. - -Returns `null` if verification failed. - -#### nacl.sign.detached(message, secretKey) - -Signs the message using the secret key and returns a signature. - -#### nacl.sign.detached.verify(message, signature, publicKey) - -Verifies the signature for the message and returns `true` if verification -succeeded or `false` if it failed. - -#### nacl.sign.publicKeyLength = 32 - -Length of signing public key in bytes. - -#### nacl.sign.secretKeyLength = 64 - -Length of signing secret key in bytes. - -#### nacl.sign.seedLength = 32 - -Length of seed for `nacl.sign.keyPair.fromSeed` in bytes. - -#### nacl.sign.signatureLength = 64 - -Length of signature in bytes. - - -### Hashing - -Implements *SHA-512*. - -#### nacl.hash(message) - -Returns SHA-512 hash of the message. - -#### nacl.hash.hashLength = 64 - -Length of hash in bytes. - - -### Random bytes generation - -#### nacl.randomBytes(length) - -Returns a `Uint8Array` of the given length containing random bytes of -cryptographic quality. - -**Implementation note** - -TweetNaCl.js uses the following methods to generate random bytes, -depending on the platform it runs on: - -* `window.crypto.getRandomValues` (WebCrypto standard) -* `window.msCrypto.getRandomValues` (Internet Explorer 11) -* `crypto.randomBytes` (Node.js) - -If the platform doesn't provide a suitable PRNG, the following functions, -which require random numbers, will throw exception: - -* `nacl.randomBytes` -* `nacl.box.keyPair` -* `nacl.sign.keyPair` - -Other functions are deterministic and will continue working. - -If a platform you are targeting doesn't implement secure random number -generator, but you somehow have a cryptographically-strong source of entropy -(not `Math.random`!), and you know what you are doing, you can plug it into -TweetNaCl.js like this: - - nacl.setPRNG(function(x, n) { - // ... copy n random bytes into x ... - }); - -Note that `nacl.setPRNG` *completely replaces* internal random byte generator -with the one provided. - - -### Constant-time comparison - -#### nacl.verify(x, y) - -Compares `x` and `y` in constant time and returns `true` if their lengths are -non-zero and equal, and their contents are equal. - -Returns `false` if either of the arguments has zero length, or arguments have -different lengths, or their contents differ. - - -System requirements -------------------- - -TweetNaCl.js supports modern browsers that have a cryptographically secure -pseudorandom number generator and typed arrays, including the latest versions -of: - -* Chrome -* Firefox -* Safari (Mac, iOS) -* Internet Explorer 11 - -Other systems: - -* Node.js - - -Development and testing ------------------------- - -Install NPM modules needed for development: - - $ npm install - -To build minified versions: - - $ npm run build - -Tests use minified version, so make sure to rebuild it every time you change -`nacl.js` or `nacl-fast.js`. - -### Testing - -To run tests in Node.js: - - $ npm run test-node - -By default all tests described here work on `nacl.min.js`. To test other -versions, set environment variable `NACL_SRC` to the file name you want to test. -For example, the following command will test fast minified version: - - $ NACL_SRC=nacl-fast.min.js npm run test-node - -To run full suite of tests in Node.js, including comparing outputs of -JavaScript port to outputs of the original C version: - - $ npm run test-node-all - -To prepare tests for browsers: - - $ npm run build-test-browser - -and then open `test/browser/test.html` (or `test/browser/test-fast.html`) to -run them. - -To run headless browser tests with `tape-run` (powered by Electron): - - $ npm run test-browser - -(If you get `Error: spawn ENOENT`, install *xvfb*: `sudo apt-get install xvfb`.) - -To run tests in both Node and Electron: - - $ npm test - -### Benchmarking - -To run benchmarks in Node.js: - - $ npm run bench - $ NACL_SRC=nacl-fast.min.js npm run bench - -To run benchmarks in a browser, open `test/benchmark/bench.html` (or -`test/benchmark/bench-fast.html`). - - -Benchmarks ----------- - -For reference, here are benchmarks from MacBook Pro (Retina, 13-inch, Mid 2014) -laptop with 2.6 GHz Intel Core i5 CPU (Intel) in Chrome 53/OS X and Xiaomi Redmi -Note 3 smartphone with 1.8 GHz Qualcomm Snapdragon 650 64-bit CPU (ARM) in -Chrome 52/Android: - -| | nacl.js Intel | nacl-fast.js Intel | nacl.js ARM | nacl-fast.js ARM | -| ------------- |:-------------:|:-------------------:|:-------------:|:-----------------:| -| salsa20 | 1.3 MB/s | 128 MB/s | 0.4 MB/s | 43 MB/s | -| poly1305 | 13 MB/s | 171 MB/s | 4 MB/s | 52 MB/s | -| hash | 4 MB/s | 34 MB/s | 0.9 MB/s | 12 MB/s | -| secretbox 1K | 1113 op/s | 57583 op/s | 334 op/s | 14227 op/s | -| box 1K | 145 op/s | 718 op/s | 37 op/s | 368 op/s | -| scalarMult | 171 op/s | 733 op/s | 56 op/s | 380 op/s | -| sign | 77 op/s | 200 op/s | 20 op/s | 61 op/s | -| sign.open | 39 op/s | 102 op/s | 11 op/s | 31 op/s | - -(You can run benchmarks on your devices by clicking on the links at the bottom -of the [home page](https://tweetnacl.js.org)). - -In short, with *nacl-fast.js* and 1024-byte messages you can expect to encrypt and -authenticate more than 57000 messages per second on a typical laptop or more than -14000 messages per second on a $170 smartphone, sign about 200 and verify 100 -messages per second on a laptop or 60 and 30 messages per second on a smartphone, -per CPU core (with Web Workers you can do these operations in parallel), -which is good enough for most applications. - - -Contributors ------------- - -See AUTHORS.md file. - - -Third-party libraries based on TweetNaCl.js -------------------------------------------- - -* [forward-secrecy](https://github.com/alax/forward-secrecy) — Axolotl ratchet implementation -* [nacl-stream](https://github.com/dchest/nacl-stream-js) - streaming encryption -* [tweetnacl-auth-js](https://github.com/dchest/tweetnacl-auth-js) — implementation of [`crypto_auth`](http://nacl.cr.yp.to/auth.html) -* [chloride](https://github.com/dominictarr/chloride) - unified API for various NaCl modules - - -Who uses it ------------ - -Some notable users of TweetNaCl.js: - -* [miniLock](http://minilock.io/) -* [Stellar](https://www.stellar.org/) diff --git a/node_modules/tweetnacl/nacl-fast.js b/node_modules/tweetnacl/nacl-fast.js deleted file mode 100644 index 5e4562f..0000000 --- a/node_modules/tweetnacl/nacl-fast.js +++ /dev/null @@ -1,2388 +0,0 @@ -(function(nacl) { -'use strict'; - -// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. -// Public domain. -// -// Implementation derived from TweetNaCl version 20140427. -// See for details: http://tweetnacl.cr.yp.to/ - -var gf = function(init) { - var i, r = new Float64Array(16); - if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; - return r; -}; - -// Pluggable, initialized in high-level API below. -var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; - -var _0 = new Uint8Array(16); -var _9 = new Uint8Array(32); _9[0] = 9; - -var gf0 = gf(), - gf1 = gf([1]), - _121665 = gf([0xdb41, 1]), - D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), - D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), - X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), - Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), - I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); - -function ts64(x, i, h, l) { - x[i] = (h >> 24) & 0xff; - x[i+1] = (h >> 16) & 0xff; - x[i+2] = (h >> 8) & 0xff; - x[i+3] = h & 0xff; - x[i+4] = (l >> 24) & 0xff; - x[i+5] = (l >> 16) & 0xff; - x[i+6] = (l >> 8) & 0xff; - x[i+7] = l & 0xff; -} - -function vn(x, xi, y, yi, n) { - var i,d = 0; - for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; - return (1 & ((d - 1) >>> 8)) - 1; -} - -function crypto_verify_16(x, xi, y, yi) { - return vn(x,xi,y,yi,16); -} - -function crypto_verify_32(x, xi, y, yi) { - return vn(x,xi,y,yi,32); -} - -function core_salsa20(o, p, k, c) { - var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, - j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, - j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, - j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, - j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, - j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, - j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, - j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, - j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, - j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, - j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, - j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, - j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, - j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, - j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, - j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; - - var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, - x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, - x15 = j15, u; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u<<7 | u>>>(32-7); - u = x4 + x0 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x4 | 0; - x12 ^= u<<13 | u>>>(32-13); - u = x12 + x8 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x1 | 0; - x9 ^= u<<7 | u>>>(32-7); - u = x9 + x5 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x9 | 0; - x1 ^= u<<13 | u>>>(32-13); - u = x1 + x13 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x6 | 0; - x14 ^= u<<7 | u>>>(32-7); - u = x14 + x10 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x14 | 0; - x6 ^= u<<13 | u>>>(32-13); - u = x6 + x2 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x11 | 0; - x3 ^= u<<7 | u>>>(32-7); - u = x3 + x15 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x3 | 0; - x11 ^= u<<13 | u>>>(32-13); - u = x11 + x7 | 0; - x15 ^= u<<18 | u>>>(32-18); - - u = x0 + x3 | 0; - x1 ^= u<<7 | u>>>(32-7); - u = x1 + x0 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x1 | 0; - x3 ^= u<<13 | u>>>(32-13); - u = x3 + x2 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x4 | 0; - x6 ^= u<<7 | u>>>(32-7); - u = x6 + x5 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x6 | 0; - x4 ^= u<<13 | u>>>(32-13); - u = x4 + x7 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x9 | 0; - x11 ^= u<<7 | u>>>(32-7); - u = x11 + x10 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x11 | 0; - x9 ^= u<<13 | u>>>(32-13); - u = x9 + x8 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x14 | 0; - x12 ^= u<<7 | u>>>(32-7); - u = x12 + x15 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x12 | 0; - x14 ^= u<<13 | u>>>(32-13); - u = x14 + x13 | 0; - x15 ^= u<<18 | u>>>(32-18); - } - x0 = x0 + j0 | 0; - x1 = x1 + j1 | 0; - x2 = x2 + j2 | 0; - x3 = x3 + j3 | 0; - x4 = x4 + j4 | 0; - x5 = x5 + j5 | 0; - x6 = x6 + j6 | 0; - x7 = x7 + j7 | 0; - x8 = x8 + j8 | 0; - x9 = x9 + j9 | 0; - x10 = x10 + j10 | 0; - x11 = x11 + j11 | 0; - x12 = x12 + j12 | 0; - x13 = x13 + j13 | 0; - x14 = x14 + j14 | 0; - x15 = x15 + j15 | 0; - - o[ 0] = x0 >>> 0 & 0xff; - o[ 1] = x0 >>> 8 & 0xff; - o[ 2] = x0 >>> 16 & 0xff; - o[ 3] = x0 >>> 24 & 0xff; - - o[ 4] = x1 >>> 0 & 0xff; - o[ 5] = x1 >>> 8 & 0xff; - o[ 6] = x1 >>> 16 & 0xff; - o[ 7] = x1 >>> 24 & 0xff; - - o[ 8] = x2 >>> 0 & 0xff; - o[ 9] = x2 >>> 8 & 0xff; - o[10] = x2 >>> 16 & 0xff; - o[11] = x2 >>> 24 & 0xff; - - o[12] = x3 >>> 0 & 0xff; - o[13] = x3 >>> 8 & 0xff; - o[14] = x3 >>> 16 & 0xff; - o[15] = x3 >>> 24 & 0xff; - - o[16] = x4 >>> 0 & 0xff; - o[17] = x4 >>> 8 & 0xff; - o[18] = x4 >>> 16 & 0xff; - o[19] = x4 >>> 24 & 0xff; - - o[20] = x5 >>> 0 & 0xff; - o[21] = x5 >>> 8 & 0xff; - o[22] = x5 >>> 16 & 0xff; - o[23] = x5 >>> 24 & 0xff; - - o[24] = x6 >>> 0 & 0xff; - o[25] = x6 >>> 8 & 0xff; - o[26] = x6 >>> 16 & 0xff; - o[27] = x6 >>> 24 & 0xff; - - o[28] = x7 >>> 0 & 0xff; - o[29] = x7 >>> 8 & 0xff; - o[30] = x7 >>> 16 & 0xff; - o[31] = x7 >>> 24 & 0xff; - - o[32] = x8 >>> 0 & 0xff; - o[33] = x8 >>> 8 & 0xff; - o[34] = x8 >>> 16 & 0xff; - o[35] = x8 >>> 24 & 0xff; - - o[36] = x9 >>> 0 & 0xff; - o[37] = x9 >>> 8 & 0xff; - o[38] = x9 >>> 16 & 0xff; - o[39] = x9 >>> 24 & 0xff; - - o[40] = x10 >>> 0 & 0xff; - o[41] = x10 >>> 8 & 0xff; - o[42] = x10 >>> 16 & 0xff; - o[43] = x10 >>> 24 & 0xff; - - o[44] = x11 >>> 0 & 0xff; - o[45] = x11 >>> 8 & 0xff; - o[46] = x11 >>> 16 & 0xff; - o[47] = x11 >>> 24 & 0xff; - - o[48] = x12 >>> 0 & 0xff; - o[49] = x12 >>> 8 & 0xff; - o[50] = x12 >>> 16 & 0xff; - o[51] = x12 >>> 24 & 0xff; - - o[52] = x13 >>> 0 & 0xff; - o[53] = x13 >>> 8 & 0xff; - o[54] = x13 >>> 16 & 0xff; - o[55] = x13 >>> 24 & 0xff; - - o[56] = x14 >>> 0 & 0xff; - o[57] = x14 >>> 8 & 0xff; - o[58] = x14 >>> 16 & 0xff; - o[59] = x14 >>> 24 & 0xff; - - o[60] = x15 >>> 0 & 0xff; - o[61] = x15 >>> 8 & 0xff; - o[62] = x15 >>> 16 & 0xff; - o[63] = x15 >>> 24 & 0xff; -} - -function core_hsalsa20(o,p,k,c) { - var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, - j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, - j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, - j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, - j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, - j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, - j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, - j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, - j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, - j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, - j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, - j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, - j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, - j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, - j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, - j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; - - var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, - x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, - x15 = j15, u; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u<<7 | u>>>(32-7); - u = x4 + x0 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x4 | 0; - x12 ^= u<<13 | u>>>(32-13); - u = x12 + x8 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x1 | 0; - x9 ^= u<<7 | u>>>(32-7); - u = x9 + x5 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x9 | 0; - x1 ^= u<<13 | u>>>(32-13); - u = x1 + x13 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x6 | 0; - x14 ^= u<<7 | u>>>(32-7); - u = x14 + x10 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x14 | 0; - x6 ^= u<<13 | u>>>(32-13); - u = x6 + x2 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x11 | 0; - x3 ^= u<<7 | u>>>(32-7); - u = x3 + x15 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x3 | 0; - x11 ^= u<<13 | u>>>(32-13); - u = x11 + x7 | 0; - x15 ^= u<<18 | u>>>(32-18); - - u = x0 + x3 | 0; - x1 ^= u<<7 | u>>>(32-7); - u = x1 + x0 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x1 | 0; - x3 ^= u<<13 | u>>>(32-13); - u = x3 + x2 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x4 | 0; - x6 ^= u<<7 | u>>>(32-7); - u = x6 + x5 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x6 | 0; - x4 ^= u<<13 | u>>>(32-13); - u = x4 + x7 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x9 | 0; - x11 ^= u<<7 | u>>>(32-7); - u = x11 + x10 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x11 | 0; - x9 ^= u<<13 | u>>>(32-13); - u = x9 + x8 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x14 | 0; - x12 ^= u<<7 | u>>>(32-7); - u = x12 + x15 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x12 | 0; - x14 ^= u<<13 | u>>>(32-13); - u = x14 + x13 | 0; - x15 ^= u<<18 | u>>>(32-18); - } - - o[ 0] = x0 >>> 0 & 0xff; - o[ 1] = x0 >>> 8 & 0xff; - o[ 2] = x0 >>> 16 & 0xff; - o[ 3] = x0 >>> 24 & 0xff; - - o[ 4] = x5 >>> 0 & 0xff; - o[ 5] = x5 >>> 8 & 0xff; - o[ 6] = x5 >>> 16 & 0xff; - o[ 7] = x5 >>> 24 & 0xff; - - o[ 8] = x10 >>> 0 & 0xff; - o[ 9] = x10 >>> 8 & 0xff; - o[10] = x10 >>> 16 & 0xff; - o[11] = x10 >>> 24 & 0xff; - - o[12] = x15 >>> 0 & 0xff; - o[13] = x15 >>> 8 & 0xff; - o[14] = x15 >>> 16 & 0xff; - o[15] = x15 >>> 24 & 0xff; - - o[16] = x6 >>> 0 & 0xff; - o[17] = x6 >>> 8 & 0xff; - o[18] = x6 >>> 16 & 0xff; - o[19] = x6 >>> 24 & 0xff; - - o[20] = x7 >>> 0 & 0xff; - o[21] = x7 >>> 8 & 0xff; - o[22] = x7 >>> 16 & 0xff; - o[23] = x7 >>> 24 & 0xff; - - o[24] = x8 >>> 0 & 0xff; - o[25] = x8 >>> 8 & 0xff; - o[26] = x8 >>> 16 & 0xff; - o[27] = x8 >>> 24 & 0xff; - - o[28] = x9 >>> 0 & 0xff; - o[29] = x9 >>> 8 & 0xff; - o[30] = x9 >>> 16 & 0xff; - o[31] = x9 >>> 24 & 0xff; -} - -function crypto_core_salsa20(out,inp,k,c) { - core_salsa20(out,inp,k,c); -} - -function crypto_core_hsalsa20(out,inp,k,c) { - core_hsalsa20(out,inp,k,c); -} - -var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); - // "expand 32-byte k" - -function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - mpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i]; - } - return 0; -} - -function crypto_stream_salsa20(c,cpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = x[i]; - } - return 0; -} - -function crypto_stream(c,cpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i+16]; - return crypto_stream_salsa20(c,cpos,d,sn,s); -} - -function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i+16]; - return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s); -} - -/* -* Port of Andrew Moon's Poly1305-donna-16. Public domain. -* https://github.com/floodyberry/poly1305-donna -*/ - -var poly1305 = function(key) { - this.buffer = new Uint8Array(16); - this.r = new Uint16Array(10); - this.h = new Uint16Array(10); - this.pad = new Uint16Array(8); - this.leftover = 0; - this.fin = 0; - - var t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff; - t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; - t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; - this.r[5] = ((t4 >>> 1)) & 0x1ffe; - t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; - t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - this.r[9] = ((t7 >>> 5)) & 0x007f; - - this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; - this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; - this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; - this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; - this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; - this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; - this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; - this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; -}; - -poly1305.prototype.blocks = function(m, mpos, bytes) { - var hibit = this.fin ? 0 : (1 << 11); - var t0, t1, t2, t3, t4, t5, t6, t7, c; - var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; - - var h0 = this.h[0], - h1 = this.h[1], - h2 = this.h[2], - h3 = this.h[3], - h4 = this.h[4], - h5 = this.h[5], - h6 = this.h[6], - h7 = this.h[7], - h8 = this.h[8], - h9 = this.h[9]; - - var r0 = this.r[0], - r1 = this.r[1], - r2 = this.r[2], - r3 = this.r[3], - r4 = this.r[4], - r5 = this.r[5], - r6 = this.r[6], - r7 = this.r[7], - r8 = this.r[8], - r9 = this.r[9]; - - while (bytes >= 16) { - t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff; - t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; - t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; - h5 += ((t4 >>> 1)) & 0x1fff; - t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; - t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - h9 += ((t7 >>> 5)) | hibit; - - c = 0; - - d0 = c; - d0 += h0 * r0; - d0 += h1 * (5 * r9); - d0 += h2 * (5 * r8); - d0 += h3 * (5 * r7); - d0 += h4 * (5 * r6); - c = (d0 >>> 13); d0 &= 0x1fff; - d0 += h5 * (5 * r5); - d0 += h6 * (5 * r4); - d0 += h7 * (5 * r3); - d0 += h8 * (5 * r2); - d0 += h9 * (5 * r1); - c += (d0 >>> 13); d0 &= 0x1fff; - - d1 = c; - d1 += h0 * r1; - d1 += h1 * r0; - d1 += h2 * (5 * r9); - d1 += h3 * (5 * r8); - d1 += h4 * (5 * r7); - c = (d1 >>> 13); d1 &= 0x1fff; - d1 += h5 * (5 * r6); - d1 += h6 * (5 * r5); - d1 += h7 * (5 * r4); - d1 += h8 * (5 * r3); - d1 += h9 * (5 * r2); - c += (d1 >>> 13); d1 &= 0x1fff; - - d2 = c; - d2 += h0 * r2; - d2 += h1 * r1; - d2 += h2 * r0; - d2 += h3 * (5 * r9); - d2 += h4 * (5 * r8); - c = (d2 >>> 13); d2 &= 0x1fff; - d2 += h5 * (5 * r7); - d2 += h6 * (5 * r6); - d2 += h7 * (5 * r5); - d2 += h8 * (5 * r4); - d2 += h9 * (5 * r3); - c += (d2 >>> 13); d2 &= 0x1fff; - - d3 = c; - d3 += h0 * r3; - d3 += h1 * r2; - d3 += h2 * r1; - d3 += h3 * r0; - d3 += h4 * (5 * r9); - c = (d3 >>> 13); d3 &= 0x1fff; - d3 += h5 * (5 * r8); - d3 += h6 * (5 * r7); - d3 += h7 * (5 * r6); - d3 += h8 * (5 * r5); - d3 += h9 * (5 * r4); - c += (d3 >>> 13); d3 &= 0x1fff; - - d4 = c; - d4 += h0 * r4; - d4 += h1 * r3; - d4 += h2 * r2; - d4 += h3 * r1; - d4 += h4 * r0; - c = (d4 >>> 13); d4 &= 0x1fff; - d4 += h5 * (5 * r9); - d4 += h6 * (5 * r8); - d4 += h7 * (5 * r7); - d4 += h8 * (5 * r6); - d4 += h9 * (5 * r5); - c += (d4 >>> 13); d4 &= 0x1fff; - - d5 = c; - d5 += h0 * r5; - d5 += h1 * r4; - d5 += h2 * r3; - d5 += h3 * r2; - d5 += h4 * r1; - c = (d5 >>> 13); d5 &= 0x1fff; - d5 += h5 * r0; - d5 += h6 * (5 * r9); - d5 += h7 * (5 * r8); - d5 += h8 * (5 * r7); - d5 += h9 * (5 * r6); - c += (d5 >>> 13); d5 &= 0x1fff; - - d6 = c; - d6 += h0 * r6; - d6 += h1 * r5; - d6 += h2 * r4; - d6 += h3 * r3; - d6 += h4 * r2; - c = (d6 >>> 13); d6 &= 0x1fff; - d6 += h5 * r1; - d6 += h6 * r0; - d6 += h7 * (5 * r9); - d6 += h8 * (5 * r8); - d6 += h9 * (5 * r7); - c += (d6 >>> 13); d6 &= 0x1fff; - - d7 = c; - d7 += h0 * r7; - d7 += h1 * r6; - d7 += h2 * r5; - d7 += h3 * r4; - d7 += h4 * r3; - c = (d7 >>> 13); d7 &= 0x1fff; - d7 += h5 * r2; - d7 += h6 * r1; - d7 += h7 * r0; - d7 += h8 * (5 * r9); - d7 += h9 * (5 * r8); - c += (d7 >>> 13); d7 &= 0x1fff; - - d8 = c; - d8 += h0 * r8; - d8 += h1 * r7; - d8 += h2 * r6; - d8 += h3 * r5; - d8 += h4 * r4; - c = (d8 >>> 13); d8 &= 0x1fff; - d8 += h5 * r3; - d8 += h6 * r2; - d8 += h7 * r1; - d8 += h8 * r0; - d8 += h9 * (5 * r9); - c += (d8 >>> 13); d8 &= 0x1fff; - - d9 = c; - d9 += h0 * r9; - d9 += h1 * r8; - d9 += h2 * r7; - d9 += h3 * r6; - d9 += h4 * r5; - c = (d9 >>> 13); d9 &= 0x1fff; - d9 += h5 * r4; - d9 += h6 * r3; - d9 += h7 * r2; - d9 += h8 * r1; - d9 += h9 * r0; - c += (d9 >>> 13); d9 &= 0x1fff; - - c = (((c << 2) + c)) | 0; - c = (c + d0) | 0; - d0 = c & 0x1fff; - c = (c >>> 13); - d1 += c; - - h0 = d0; - h1 = d1; - h2 = d2; - h3 = d3; - h4 = d4; - h5 = d5; - h6 = d6; - h7 = d7; - h8 = d8; - h9 = d9; - - mpos += 16; - bytes -= 16; - } - this.h[0] = h0; - this.h[1] = h1; - this.h[2] = h2; - this.h[3] = h3; - this.h[4] = h4; - this.h[5] = h5; - this.h[6] = h6; - this.h[7] = h7; - this.h[8] = h8; - this.h[9] = h9; -}; - -poly1305.prototype.finish = function(mac, macpos) { - var g = new Uint16Array(10); - var c, mask, f, i; - - if (this.leftover) { - i = this.leftover; - this.buffer[i++] = 1; - for (; i < 16; i++) this.buffer[i] = 0; - this.fin = 1; - this.blocks(this.buffer, 0, 16); - } - - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - for (i = 2; i < 10; i++) { - this.h[i] += c; - c = this.h[i] >>> 13; - this.h[i] &= 0x1fff; - } - this.h[0] += (c * 5); - c = this.h[0] >>> 13; - this.h[0] &= 0x1fff; - this.h[1] += c; - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - this.h[2] += c; - - g[0] = this.h[0] + 5; - c = g[0] >>> 13; - g[0] &= 0x1fff; - for (i = 1; i < 10; i++) { - g[i] = this.h[i] + c; - c = g[i] >>> 13; - g[i] &= 0x1fff; - } - g[9] -= (1 << 13); - - mask = (c ^ 1) - 1; - for (i = 0; i < 10; i++) g[i] &= mask; - mask = ~mask; - for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; - - this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff; - this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff; - this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff; - this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff; - this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; - this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff; - this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff; - this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff; - - f = this.h[0] + this.pad[0]; - this.h[0] = f & 0xffff; - for (i = 1; i < 8; i++) { - f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; - this.h[i] = f & 0xffff; - } - - mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff; - mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff; - mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff; - mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff; - mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff; - mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff; - mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff; - mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff; - mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff; - mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff; - mac[macpos+10] = (this.h[5] >>> 0) & 0xff; - mac[macpos+11] = (this.h[5] >>> 8) & 0xff; - mac[macpos+12] = (this.h[6] >>> 0) & 0xff; - mac[macpos+13] = (this.h[6] >>> 8) & 0xff; - mac[macpos+14] = (this.h[7] >>> 0) & 0xff; - mac[macpos+15] = (this.h[7] >>> 8) & 0xff; -}; - -poly1305.prototype.update = function(m, mpos, bytes) { - var i, want; - - if (this.leftover) { - want = (16 - this.leftover); - if (want > bytes) - want = bytes; - for (i = 0; i < want; i++) - this.buffer[this.leftover + i] = m[mpos+i]; - bytes -= want; - mpos += want; - this.leftover += want; - if (this.leftover < 16) - return; - this.blocks(this.buffer, 0, 16); - this.leftover = 0; - } - - if (bytes >= 16) { - want = bytes - (bytes % 16); - this.blocks(m, mpos, want); - mpos += want; - bytes -= want; - } - - if (bytes) { - for (i = 0; i < bytes; i++) - this.buffer[this.leftover + i] = m[mpos+i]; - this.leftover += bytes; - } -}; - -function crypto_onetimeauth(out, outpos, m, mpos, n, k) { - var s = new poly1305(k); - s.update(m, mpos, n); - s.finish(out, outpos); - return 0; -} - -function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { - var x = new Uint8Array(16); - crypto_onetimeauth(x,0,m,mpos,n,k); - return crypto_verify_16(h,hpos,x,0); -} - -function crypto_secretbox(c,m,d,n,k) { - var i; - if (d < 32) return -1; - crypto_stream_xor(c,0,m,0,d,n,k); - crypto_onetimeauth(c, 16, c, 32, d - 32, c); - for (i = 0; i < 16; i++) c[i] = 0; - return 0; -} - -function crypto_secretbox_open(m,c,d,n,k) { - var i; - var x = new Uint8Array(32); - if (d < 32) return -1; - crypto_stream(x,0,32,n,k); - if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; - crypto_stream_xor(m,0,c,0,d,n,k); - for (i = 0; i < 32; i++) m[i] = 0; - return 0; -} - -function set25519(r, a) { - var i; - for (i = 0; i < 16; i++) r[i] = a[i]|0; -} - -function car25519(o) { - var i, v, c = 1; - for (i = 0; i < 16; i++) { - v = o[i] + c + 65535; - c = Math.floor(v / 65536); - o[i] = v - c * 65536; - } - o[0] += c-1 + 37 * (c-1); -} - -function sel25519(p, q, b) { - var t, c = ~(b-1); - for (var i = 0; i < 16; i++) { - t = c & (p[i] ^ q[i]); - p[i] ^= t; - q[i] ^= t; - } -} - -function pack25519(o, n) { - var i, j, b; - var m = gf(), t = gf(); - for (i = 0; i < 16; i++) t[i] = n[i]; - car25519(t); - car25519(t); - car25519(t); - for (j = 0; j < 2; j++) { - m[0] = t[0] - 0xffed; - for (i = 1; i < 15; i++) { - m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); - m[i-1] &= 0xffff; - } - m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); - b = (m[15]>>16) & 1; - m[14] &= 0xffff; - sel25519(t, m, 1-b); - } - for (i = 0; i < 16; i++) { - o[2*i] = t[i] & 0xff; - o[2*i+1] = t[i]>>8; - } -} - -function neq25519(a, b) { - var c = new Uint8Array(32), d = new Uint8Array(32); - pack25519(c, a); - pack25519(d, b); - return crypto_verify_32(c, 0, d, 0); -} - -function par25519(a) { - var d = new Uint8Array(32); - pack25519(d, a); - return d[0] & 1; -} - -function unpack25519(o, n) { - var i; - for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); - o[15] &= 0x7fff; -} - -function A(o, a, b) { - for (var i = 0; i < 16; i++) o[i] = a[i] + b[i]; -} - -function Z(o, a, b) { - for (var i = 0; i < 16; i++) o[i] = a[i] - b[i]; -} - -function M(o, a, b) { - var v, c, - t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, - t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, - t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, - t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, - b0 = b[0], - b1 = b[1], - b2 = b[2], - b3 = b[3], - b4 = b[4], - b5 = b[5], - b6 = b[6], - b7 = b[7], - b8 = b[8], - b9 = b[9], - b10 = b[10], - b11 = b[11], - b12 = b[12], - b13 = b[13], - b14 = b[14], - b15 = b[15]; - - v = a[0]; - t0 += v * b0; - t1 += v * b1; - t2 += v * b2; - t3 += v * b3; - t4 += v * b4; - t5 += v * b5; - t6 += v * b6; - t7 += v * b7; - t8 += v * b8; - t9 += v * b9; - t10 += v * b10; - t11 += v * b11; - t12 += v * b12; - t13 += v * b13; - t14 += v * b14; - t15 += v * b15; - v = a[1]; - t1 += v * b0; - t2 += v * b1; - t3 += v * b2; - t4 += v * b3; - t5 += v * b4; - t6 += v * b5; - t7 += v * b6; - t8 += v * b7; - t9 += v * b8; - t10 += v * b9; - t11 += v * b10; - t12 += v * b11; - t13 += v * b12; - t14 += v * b13; - t15 += v * b14; - t16 += v * b15; - v = a[2]; - t2 += v * b0; - t3 += v * b1; - t4 += v * b2; - t5 += v * b3; - t6 += v * b4; - t7 += v * b5; - t8 += v * b6; - t9 += v * b7; - t10 += v * b8; - t11 += v * b9; - t12 += v * b10; - t13 += v * b11; - t14 += v * b12; - t15 += v * b13; - t16 += v * b14; - t17 += v * b15; - v = a[3]; - t3 += v * b0; - t4 += v * b1; - t5 += v * b2; - t6 += v * b3; - t7 += v * b4; - t8 += v * b5; - t9 += v * b6; - t10 += v * b7; - t11 += v * b8; - t12 += v * b9; - t13 += v * b10; - t14 += v * b11; - t15 += v * b12; - t16 += v * b13; - t17 += v * b14; - t18 += v * b15; - v = a[4]; - t4 += v * b0; - t5 += v * b1; - t6 += v * b2; - t7 += v * b3; - t8 += v * b4; - t9 += v * b5; - t10 += v * b6; - t11 += v * b7; - t12 += v * b8; - t13 += v * b9; - t14 += v * b10; - t15 += v * b11; - t16 += v * b12; - t17 += v * b13; - t18 += v * b14; - t19 += v * b15; - v = a[5]; - t5 += v * b0; - t6 += v * b1; - t7 += v * b2; - t8 += v * b3; - t9 += v * b4; - t10 += v * b5; - t11 += v * b6; - t12 += v * b7; - t13 += v * b8; - t14 += v * b9; - t15 += v * b10; - t16 += v * b11; - t17 += v * b12; - t18 += v * b13; - t19 += v * b14; - t20 += v * b15; - v = a[6]; - t6 += v * b0; - t7 += v * b1; - t8 += v * b2; - t9 += v * b3; - t10 += v * b4; - t11 += v * b5; - t12 += v * b6; - t13 += v * b7; - t14 += v * b8; - t15 += v * b9; - t16 += v * b10; - t17 += v * b11; - t18 += v * b12; - t19 += v * b13; - t20 += v * b14; - t21 += v * b15; - v = a[7]; - t7 += v * b0; - t8 += v * b1; - t9 += v * b2; - t10 += v * b3; - t11 += v * b4; - t12 += v * b5; - t13 += v * b6; - t14 += v * b7; - t15 += v * b8; - t16 += v * b9; - t17 += v * b10; - t18 += v * b11; - t19 += v * b12; - t20 += v * b13; - t21 += v * b14; - t22 += v * b15; - v = a[8]; - t8 += v * b0; - t9 += v * b1; - t10 += v * b2; - t11 += v * b3; - t12 += v * b4; - t13 += v * b5; - t14 += v * b6; - t15 += v * b7; - t16 += v * b8; - t17 += v * b9; - t18 += v * b10; - t19 += v * b11; - t20 += v * b12; - t21 += v * b13; - t22 += v * b14; - t23 += v * b15; - v = a[9]; - t9 += v * b0; - t10 += v * b1; - t11 += v * b2; - t12 += v * b3; - t13 += v * b4; - t14 += v * b5; - t15 += v * b6; - t16 += v * b7; - t17 += v * b8; - t18 += v * b9; - t19 += v * b10; - t20 += v * b11; - t21 += v * b12; - t22 += v * b13; - t23 += v * b14; - t24 += v * b15; - v = a[10]; - t10 += v * b0; - t11 += v * b1; - t12 += v * b2; - t13 += v * b3; - t14 += v * b4; - t15 += v * b5; - t16 += v * b6; - t17 += v * b7; - t18 += v * b8; - t19 += v * b9; - t20 += v * b10; - t21 += v * b11; - t22 += v * b12; - t23 += v * b13; - t24 += v * b14; - t25 += v * b15; - v = a[11]; - t11 += v * b0; - t12 += v * b1; - t13 += v * b2; - t14 += v * b3; - t15 += v * b4; - t16 += v * b5; - t17 += v * b6; - t18 += v * b7; - t19 += v * b8; - t20 += v * b9; - t21 += v * b10; - t22 += v * b11; - t23 += v * b12; - t24 += v * b13; - t25 += v * b14; - t26 += v * b15; - v = a[12]; - t12 += v * b0; - t13 += v * b1; - t14 += v * b2; - t15 += v * b3; - t16 += v * b4; - t17 += v * b5; - t18 += v * b6; - t19 += v * b7; - t20 += v * b8; - t21 += v * b9; - t22 += v * b10; - t23 += v * b11; - t24 += v * b12; - t25 += v * b13; - t26 += v * b14; - t27 += v * b15; - v = a[13]; - t13 += v * b0; - t14 += v * b1; - t15 += v * b2; - t16 += v * b3; - t17 += v * b4; - t18 += v * b5; - t19 += v * b6; - t20 += v * b7; - t21 += v * b8; - t22 += v * b9; - t23 += v * b10; - t24 += v * b11; - t25 += v * b12; - t26 += v * b13; - t27 += v * b14; - t28 += v * b15; - v = a[14]; - t14 += v * b0; - t15 += v * b1; - t16 += v * b2; - t17 += v * b3; - t18 += v * b4; - t19 += v * b5; - t20 += v * b6; - t21 += v * b7; - t22 += v * b8; - t23 += v * b9; - t24 += v * b10; - t25 += v * b11; - t26 += v * b12; - t27 += v * b13; - t28 += v * b14; - t29 += v * b15; - v = a[15]; - t15 += v * b0; - t16 += v * b1; - t17 += v * b2; - t18 += v * b3; - t19 += v * b4; - t20 += v * b5; - t21 += v * b6; - t22 += v * b7; - t23 += v * b8; - t24 += v * b9; - t25 += v * b10; - t26 += v * b11; - t27 += v * b12; - t28 += v * b13; - t29 += v * b14; - t30 += v * b15; - - t0 += 38 * t16; - t1 += 38 * t17; - t2 += 38 * t18; - t3 += 38 * t19; - t4 += 38 * t20; - t5 += 38 * t21; - t6 += 38 * t22; - t7 += 38 * t23; - t8 += 38 * t24; - t9 += 38 * t25; - t10 += 38 * t26; - t11 += 38 * t27; - t12 += 38 * t28; - t13 += 38 * t29; - t14 += 38 * t30; - // t15 left as is - - // first car - c = 1; - v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; - v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; - v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; - v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; - v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; - v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; - v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; - v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; - v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; - v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; - v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; - v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; - v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; - v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; - v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; - v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; - t0 += c-1 + 37 * (c-1); - - // second car - c = 1; - v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; - v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; - v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; - v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; - v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; - v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; - v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; - v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; - v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; - v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; - v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; - v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; - v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; - v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; - v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; - v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; - t0 += c-1 + 37 * (c-1); - - o[ 0] = t0; - o[ 1] = t1; - o[ 2] = t2; - o[ 3] = t3; - o[ 4] = t4; - o[ 5] = t5; - o[ 6] = t6; - o[ 7] = t7; - o[ 8] = t8; - o[ 9] = t9; - o[10] = t10; - o[11] = t11; - o[12] = t12; - o[13] = t13; - o[14] = t14; - o[15] = t15; -} - -function S(o, a) { - M(o, a, a); -} - -function inv25519(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 253; a >= 0; a--) { - S(c, c); - if(a !== 2 && a !== 4) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function pow2523(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 250; a >= 0; a--) { - S(c, c); - if(a !== 1) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function crypto_scalarmult(q, n, p) { - var z = new Uint8Array(32); - var x = new Float64Array(80), r, i; - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(); - for (i = 0; i < 31; i++) z[i] = n[i]; - z[31]=(n[31]&127)|64; - z[0]&=248; - unpack25519(x,p); - for (i = 0; i < 16; i++) { - b[i]=x[i]; - d[i]=a[i]=c[i]=0; - } - a[0]=d[0]=1; - for (i=254; i>=0; --i) { - r=(z[i>>>3]>>>(i&7))&1; - sel25519(a,b,r); - sel25519(c,d,r); - A(e,a,c); - Z(a,a,c); - A(c,b,d); - Z(b,b,d); - S(d,e); - S(f,a); - M(a,c,a); - M(c,b,e); - A(e,a,c); - Z(a,a,c); - S(b,a); - Z(c,d,f); - M(a,c,_121665); - A(a,a,d); - M(c,c,a); - M(a,d,f); - M(d,b,x); - S(b,e); - sel25519(a,b,r); - sel25519(c,d,r); - } - for (i = 0; i < 16; i++) { - x[i+16]=a[i]; - x[i+32]=c[i]; - x[i+48]=b[i]; - x[i+64]=d[i]; - } - var x32 = x.subarray(32); - var x16 = x.subarray(16); - inv25519(x32,x32); - M(x16,x16,x32); - pack25519(q,x16); - return 0; -} - -function crypto_scalarmult_base(q, n) { - return crypto_scalarmult(q, n, _9); -} - -function crypto_box_keypair(y, x) { - randombytes(x, 32); - return crypto_scalarmult_base(y, x); -} - -function crypto_box_beforenm(k, y, x) { - var s = new Uint8Array(32); - crypto_scalarmult(s, x, y); - return crypto_core_hsalsa20(k, _0, s, sigma); -} - -var crypto_box_afternm = crypto_secretbox; -var crypto_box_open_afternm = crypto_secretbox_open; - -function crypto_box(c, m, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_afternm(c, m, d, n, k); -} - -function crypto_box_open(m, c, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_open_afternm(m, c, d, n, k); -} - -var K = [ - 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, - 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, - 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, - 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, - 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, - 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, - 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, - 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, - 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, - 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, - 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, - 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, - 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, - 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, - 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, - 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, - 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, - 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, - 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, - 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, - 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, - 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, - 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, - 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, - 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, - 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, - 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, - 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, - 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, - 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, - 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, - 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, - 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, - 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, - 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, - 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, - 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, - 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, - 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, - 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 -]; - -function crypto_hashblocks_hl(hh, hl, m, n) { - var wh = new Int32Array(16), wl = new Int32Array(16), - bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, - bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, - th, tl, i, j, h, l, a, b, c, d; - - var ah0 = hh[0], - ah1 = hh[1], - ah2 = hh[2], - ah3 = hh[3], - ah4 = hh[4], - ah5 = hh[5], - ah6 = hh[6], - ah7 = hh[7], - - al0 = hl[0], - al1 = hl[1], - al2 = hl[2], - al3 = hl[3], - al4 = hl[4], - al5 = hl[5], - al6 = hl[6], - al7 = hl[7]; - - var pos = 0; - while (n >= 128) { - for (i = 0; i < 16; i++) { - j = 8 * i + pos; - wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3]; - wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7]; - } - for (i = 0; i < 80; i++) { - bh0 = ah0; - bh1 = ah1; - bh2 = ah2; - bh3 = ah3; - bh4 = ah4; - bh5 = ah5; - bh6 = ah6; - bh7 = ah7; - - bl0 = al0; - bl1 = al1; - bl2 = al2; - bl3 = al3; - bl4 = al4; - bl5 = al5; - bl6 = al6; - bl7 = al7; - - // add - h = ah7; - l = al7; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - // Sigma1 - h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32)))); - l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32)))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // Ch - h = (ah4 & ah5) ^ (~ah4 & ah6); - l = (al4 & al5) ^ (~al4 & al6); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // K - h = K[i*2]; - l = K[i*2+1]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // w - h = wh[i%16]; - l = wl[i%16]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - th = c & 0xffff | d << 16; - tl = a & 0xffff | b << 16; - - // add - h = th; - l = tl; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - // Sigma0 - h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32)))); - l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32)))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // Maj - h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); - l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - bh7 = (c & 0xffff) | (d << 16); - bl7 = (a & 0xffff) | (b << 16); - - // add - h = bh3; - l = bl3; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = th; - l = tl; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - bh3 = (c & 0xffff) | (d << 16); - bl3 = (a & 0xffff) | (b << 16); - - ah1 = bh0; - ah2 = bh1; - ah3 = bh2; - ah4 = bh3; - ah5 = bh4; - ah6 = bh5; - ah7 = bh6; - ah0 = bh7; - - al1 = bl0; - al2 = bl1; - al3 = bl2; - al4 = bl3; - al5 = bl4; - al6 = bl5; - al7 = bl6; - al0 = bl7; - - if (i%16 === 15) { - for (j = 0; j < 16; j++) { - // add - h = wh[j]; - l = wl[j]; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = wh[(j+9)%16]; - l = wl[(j+9)%16]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // sigma0 - th = wh[(j+1)%16]; - tl = wl[(j+1)%16]; - h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7); - l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // sigma1 - th = wh[(j+14)%16]; - tl = wl[(j+14)%16]; - h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6); - l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - wh[j] = (c & 0xffff) | (d << 16); - wl[j] = (a & 0xffff) | (b << 16); - } - } - } - - // add - h = ah0; - l = al0; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[0]; - l = hl[0]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[0] = ah0 = (c & 0xffff) | (d << 16); - hl[0] = al0 = (a & 0xffff) | (b << 16); - - h = ah1; - l = al1; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[1]; - l = hl[1]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[1] = ah1 = (c & 0xffff) | (d << 16); - hl[1] = al1 = (a & 0xffff) | (b << 16); - - h = ah2; - l = al2; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[2]; - l = hl[2]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[2] = ah2 = (c & 0xffff) | (d << 16); - hl[2] = al2 = (a & 0xffff) | (b << 16); - - h = ah3; - l = al3; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[3]; - l = hl[3]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[3] = ah3 = (c & 0xffff) | (d << 16); - hl[3] = al3 = (a & 0xffff) | (b << 16); - - h = ah4; - l = al4; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[4]; - l = hl[4]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[4] = ah4 = (c & 0xffff) | (d << 16); - hl[4] = al4 = (a & 0xffff) | (b << 16); - - h = ah5; - l = al5; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[5]; - l = hl[5]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[5] = ah5 = (c & 0xffff) | (d << 16); - hl[5] = al5 = (a & 0xffff) | (b << 16); - - h = ah6; - l = al6; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[6]; - l = hl[6]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[6] = ah6 = (c & 0xffff) | (d << 16); - hl[6] = al6 = (a & 0xffff) | (b << 16); - - h = ah7; - l = al7; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[7]; - l = hl[7]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[7] = ah7 = (c & 0xffff) | (d << 16); - hl[7] = al7 = (a & 0xffff) | (b << 16); - - pos += 128; - n -= 128; - } - - return n; -} - -function crypto_hash(out, m, n) { - var hh = new Int32Array(8), - hl = new Int32Array(8), - x = new Uint8Array(256), - i, b = n; - - hh[0] = 0x6a09e667; - hh[1] = 0xbb67ae85; - hh[2] = 0x3c6ef372; - hh[3] = 0xa54ff53a; - hh[4] = 0x510e527f; - hh[5] = 0x9b05688c; - hh[6] = 0x1f83d9ab; - hh[7] = 0x5be0cd19; - - hl[0] = 0xf3bcc908; - hl[1] = 0x84caa73b; - hl[2] = 0xfe94f82b; - hl[3] = 0x5f1d36f1; - hl[4] = 0xade682d1; - hl[5] = 0x2b3e6c1f; - hl[6] = 0xfb41bd6b; - hl[7] = 0x137e2179; - - crypto_hashblocks_hl(hh, hl, m, n); - n %= 128; - - for (i = 0; i < n; i++) x[i] = m[b-n+i]; - x[n] = 128; - - n = 256-128*(n<112?1:0); - x[n-9] = 0; - ts64(x, n-8, (b / 0x20000000) | 0, b << 3); - crypto_hashblocks_hl(hh, hl, x, n); - - for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]); - - return 0; -} - -function add(p, q) { - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(), - g = gf(), h = gf(), t = gf(); - - Z(a, p[1], p[0]); - Z(t, q[1], q[0]); - M(a, a, t); - A(b, p[0], p[1]); - A(t, q[0], q[1]); - M(b, b, t); - M(c, p[3], q[3]); - M(c, c, D2); - M(d, p[2], q[2]); - A(d, d, d); - Z(e, b, a); - Z(f, d, c); - A(g, d, c); - A(h, b, a); - - M(p[0], e, f); - M(p[1], h, g); - M(p[2], g, f); - M(p[3], e, h); -} - -function cswap(p, q, b) { - var i; - for (i = 0; i < 4; i++) { - sel25519(p[i], q[i], b); - } -} - -function pack(r, p) { - var tx = gf(), ty = gf(), zi = gf(); - inv25519(zi, p[2]); - M(tx, p[0], zi); - M(ty, p[1], zi); - pack25519(r, ty); - r[31] ^= par25519(tx) << 7; -} - -function scalarmult(p, q, s) { - var b, i; - set25519(p[0], gf0); - set25519(p[1], gf1); - set25519(p[2], gf1); - set25519(p[3], gf0); - for (i = 255; i >= 0; --i) { - b = (s[(i/8)|0] >> (i&7)) & 1; - cswap(p, q, b); - add(q, p); - add(p, p); - cswap(p, q, b); - } -} - -function scalarbase(p, s) { - var q = [gf(), gf(), gf(), gf()]; - set25519(q[0], X); - set25519(q[1], Y); - set25519(q[2], gf1); - M(q[3], X, Y); - scalarmult(p, q, s); -} - -function crypto_sign_keypair(pk, sk, seeded) { - var d = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()]; - var i; - - if (!seeded) randombytes(sk, 32); - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - scalarbase(p, d); - pack(pk, p); - - for (i = 0; i < 32; i++) sk[i+32] = pk[i]; - return 0; -} - -var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); - -function modL(r, x) { - var carry, i, j, k; - for (i = 63; i >= 32; --i) { - carry = 0; - for (j = i - 32, k = i - 12; j < k; ++j) { - x[j] += carry - 16 * x[i] * L[j - (i - 32)]; - carry = (x[j] + 128) >> 8; - x[j] -= carry * 256; - } - x[j] += carry; - x[i] = 0; - } - carry = 0; - for (j = 0; j < 32; j++) { - x[j] += carry - (x[31] >> 4) * L[j]; - carry = x[j] >> 8; - x[j] &= 255; - } - for (j = 0; j < 32; j++) x[j] -= carry * L[j]; - for (i = 0; i < 32; i++) { - x[i+1] += x[i] >> 8; - r[i] = x[i] & 255; - } -} - -function reduce(r) { - var x = new Float64Array(64), i; - for (i = 0; i < 64; i++) x[i] = r[i]; - for (i = 0; i < 64; i++) r[i] = 0; - modL(r, x); -} - -// Note: difference from C - smlen returned, not passed as argument. -function crypto_sign(sm, m, n, sk) { - var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); - var i, j, x = new Float64Array(64); - var p = [gf(), gf(), gf(), gf()]; - - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - var smlen = n + 64; - for (i = 0; i < n; i++) sm[64 + i] = m[i]; - for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; - - crypto_hash(r, sm.subarray(32), n+32); - reduce(r); - scalarbase(p, r); - pack(sm, p); - - for (i = 32; i < 64; i++) sm[i] = sk[i]; - crypto_hash(h, sm, n + 64); - reduce(h); - - for (i = 0; i < 64; i++) x[i] = 0; - for (i = 0; i < 32; i++) x[i] = r[i]; - for (i = 0; i < 32; i++) { - for (j = 0; j < 32; j++) { - x[i+j] += h[i] * d[j]; - } - } - - modL(sm.subarray(32), x); - return smlen; -} - -function unpackneg(r, p) { - var t = gf(), chk = gf(), num = gf(), - den = gf(), den2 = gf(), den4 = gf(), - den6 = gf(); - - set25519(r[2], gf1); - unpack25519(r[1], p); - S(num, r[1]); - M(den, num, D); - Z(num, num, r[2]); - A(den, r[2], den); - - S(den2, den); - S(den4, den2); - M(den6, den4, den2); - M(t, den6, num); - M(t, t, den); - - pow2523(t, t); - M(t, t, num); - M(t, t, den); - M(t, t, den); - M(r[0], t, den); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) M(r[0], r[0], I); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) return -1; - - if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); - - M(r[3], r[0], r[1]); - return 0; -} - -function crypto_sign_open(m, sm, n, pk) { - var i, mlen; - var t = new Uint8Array(32), h = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()], - q = [gf(), gf(), gf(), gf()]; - - mlen = -1; - if (n < 64) return -1; - - if (unpackneg(q, pk)) return -1; - - for (i = 0; i < n; i++) m[i] = sm[i]; - for (i = 0; i < 32; i++) m[i+32] = pk[i]; - crypto_hash(h, m, n); - reduce(h); - scalarmult(p, q, h); - - scalarbase(q, sm.subarray(32)); - add(p, q); - pack(t, p); - - n -= 64; - if (crypto_verify_32(sm, 0, t, 0)) { - for (i = 0; i < n; i++) m[i] = 0; - return -1; - } - - for (i = 0; i < n; i++) m[i] = sm[i + 64]; - mlen = n; - return mlen; -} - -var crypto_secretbox_KEYBYTES = 32, - crypto_secretbox_NONCEBYTES = 24, - crypto_secretbox_ZEROBYTES = 32, - crypto_secretbox_BOXZEROBYTES = 16, - crypto_scalarmult_BYTES = 32, - crypto_scalarmult_SCALARBYTES = 32, - crypto_box_PUBLICKEYBYTES = 32, - crypto_box_SECRETKEYBYTES = 32, - crypto_box_BEFORENMBYTES = 32, - crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, - crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, - crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, - crypto_sign_BYTES = 64, - crypto_sign_PUBLICKEYBYTES = 32, - crypto_sign_SECRETKEYBYTES = 64, - crypto_sign_SEEDBYTES = 32, - crypto_hash_BYTES = 64; - -nacl.lowlevel = { - crypto_core_hsalsa20: crypto_core_hsalsa20, - crypto_stream_xor: crypto_stream_xor, - crypto_stream: crypto_stream, - crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, - crypto_stream_salsa20: crypto_stream_salsa20, - crypto_onetimeauth: crypto_onetimeauth, - crypto_onetimeauth_verify: crypto_onetimeauth_verify, - crypto_verify_16: crypto_verify_16, - crypto_verify_32: crypto_verify_32, - crypto_secretbox: crypto_secretbox, - crypto_secretbox_open: crypto_secretbox_open, - crypto_scalarmult: crypto_scalarmult, - crypto_scalarmult_base: crypto_scalarmult_base, - crypto_box_beforenm: crypto_box_beforenm, - crypto_box_afternm: crypto_box_afternm, - crypto_box: crypto_box, - crypto_box_open: crypto_box_open, - crypto_box_keypair: crypto_box_keypair, - crypto_hash: crypto_hash, - crypto_sign: crypto_sign, - crypto_sign_keypair: crypto_sign_keypair, - crypto_sign_open: crypto_sign_open, - - crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, - crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, - crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, - crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, - crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, - crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, - crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, - crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, - crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, - crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, - crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, - crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, - crypto_sign_BYTES: crypto_sign_BYTES, - crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, - crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, - crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, - crypto_hash_BYTES: crypto_hash_BYTES -}; - -/* High-level API */ - -function checkLengths(k, n) { - if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); - if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); -} - -function checkBoxLengths(pk, sk) { - if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); - if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); -} - -function checkArrayTypes() { - var t, i; - for (i = 0; i < arguments.length; i++) { - if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]') - throw new TypeError('unexpected type ' + t + ', use Uint8Array'); - } -} - -function cleanup(arr) { - for (var i = 0; i < arr.length; i++) arr[i] = 0; -} - -// TODO: Completely remove this in v0.15. -if (!nacl.util) { - nacl.util = {}; - nacl.util.decodeUTF8 = nacl.util.encodeUTF8 = nacl.util.encodeBase64 = nacl.util.decodeBase64 = function() { - throw new Error('nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js'); - }; -} - -nacl.randomBytes = function(n) { - var b = new Uint8Array(n); - randombytes(b, n); - return b; -}; - -nacl.secretbox = function(msg, nonce, key) { - checkArrayTypes(msg, nonce, key); - checkLengths(key, nonce); - var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); - var c = new Uint8Array(m.length); - for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; - crypto_secretbox(c, m, m.length, nonce, key); - return c.subarray(crypto_secretbox_BOXZEROBYTES); -}; - -nacl.secretbox.open = function(box, nonce, key) { - checkArrayTypes(box, nonce, key); - checkLengths(key, nonce); - var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); - var m = new Uint8Array(c.length); - for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; - if (c.length < 32) return false; - if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false; - return m.subarray(crypto_secretbox_ZEROBYTES); -}; - -nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; -nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; -nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; - -nacl.scalarMult = function(n, p) { - checkArrayTypes(n, p); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult(q, n, p); - return q; -}; - -nacl.scalarMult.base = function(n) { - checkArrayTypes(n); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult_base(q, n); - return q; -}; - -nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; -nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; - -nacl.box = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox(msg, nonce, k); -}; - -nacl.box.before = function(publicKey, secretKey) { - checkArrayTypes(publicKey, secretKey); - checkBoxLengths(publicKey, secretKey); - var k = new Uint8Array(crypto_box_BEFORENMBYTES); - crypto_box_beforenm(k, publicKey, secretKey); - return k; -}; - -nacl.box.after = nacl.secretbox; - -nacl.box.open = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox.open(msg, nonce, k); -}; - -nacl.box.open.after = nacl.secretbox.open; - -nacl.box.keyPair = function() { - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); - crypto_box_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.box.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_box_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - crypto_scalarmult_base(pk, secretKey); - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; -nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; -nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; -nacl.box.nonceLength = crypto_box_NONCEBYTES; -nacl.box.overheadLength = nacl.secretbox.overheadLength; - -nacl.sign = function(msg, secretKey) { - checkArrayTypes(msg, secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); - crypto_sign(signedMsg, msg, msg.length, secretKey); - return signedMsg; -}; - -nacl.sign.open = function(signedMsg, publicKey) { - if (arguments.length !== 2) - throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?'); - checkArrayTypes(signedMsg, publicKey); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var tmp = new Uint8Array(signedMsg.length); - var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); - if (mlen < 0) return null; - var m = new Uint8Array(mlen); - for (var i = 0; i < m.length; i++) m[i] = tmp[i]; - return m; -}; - -nacl.sign.detached = function(msg, secretKey) { - var signedMsg = nacl.sign(msg, secretKey); - var sig = new Uint8Array(crypto_sign_BYTES); - for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; - return sig; -}; - -nacl.sign.detached.verify = function(msg, sig, publicKey) { - checkArrayTypes(msg, sig, publicKey); - if (sig.length !== crypto_sign_BYTES) - throw new Error('bad signature size'); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var sm = new Uint8Array(crypto_sign_BYTES + msg.length); - var m = new Uint8Array(crypto_sign_BYTES + msg.length); - var i; - for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; - for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; - return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); -}; - -nacl.sign.keyPair = function() { - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - crypto_sign_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.sign.keyPair.fromSeed = function(seed) { - checkArrayTypes(seed); - if (seed.length !== crypto_sign_SEEDBYTES) - throw new Error('bad seed size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - for (var i = 0; i < 32; i++) sk[i] = seed[i]; - crypto_sign_keypair(pk, sk, true); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; -nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; -nacl.sign.seedLength = crypto_sign_SEEDBYTES; -nacl.sign.signatureLength = crypto_sign_BYTES; - -nacl.hash = function(msg) { - checkArrayTypes(msg); - var h = new Uint8Array(crypto_hash_BYTES); - crypto_hash(h, msg, msg.length); - return h; -}; - -nacl.hash.hashLength = crypto_hash_BYTES; - -nacl.verify = function(x, y) { - checkArrayTypes(x, y); - // Zero length arguments are considered not equal. - if (x.length === 0 || y.length === 0) return false; - if (x.length !== y.length) return false; - return (vn(x, 0, y, 0, x.length) === 0) ? true : false; -}; - -nacl.setPRNG = function(fn) { - randombytes = fn; -}; - -(function() { - // Initialize PRNG if environment provides CSPRNG. - // If not, methods calling randombytes will throw. - var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null; - if (crypto && crypto.getRandomValues) { - // Browsers. - var QUOTA = 65536; - nacl.setPRNG(function(x, n) { - var i, v = new Uint8Array(n); - for (i = 0; i < n; i += QUOTA) { - crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA))); - } - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } else if (typeof require !== 'undefined') { - // Node.js. - crypto = require('crypto'); - if (crypto && crypto.randomBytes) { - nacl.setPRNG(function(x, n) { - var i, v = crypto.randomBytes(n); - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } - } -})(); - -})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {})); diff --git a/node_modules/tweetnacl/nacl-fast.min.js b/node_modules/tweetnacl/nacl-fast.min.js deleted file mode 100644 index 8bc47da..0000000 --- a/node_modules/tweetnacl/nacl-fast.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(r){"use strict";function t(r,t,n,e){r[t]=n>>24&255,r[t+1]=n>>16&255,r[t+2]=n>>8&255,r[t+3]=255&n,r[t+4]=e>>24&255,r[t+5]=e>>16&255,r[t+6]=e>>8&255,r[t+7]=255&e}function n(r,t,n,e,o){var i,h=0;for(i=0;i>>8)-1}function e(r,t,e,o){return n(r,t,e,o,16)}function o(r,t,e,o){return n(r,t,e,o,32)}function i(r,t,n,e){for(var o,i=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,h=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,s=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,c=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,u=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,y=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,l=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,w=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,p=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,v=255&n[16]|(255&n[17])<<8|(255&n[18])<<16|(255&n[19])<<24,b=255&n[20]|(255&n[21])<<8|(255&n[22])<<16|(255&n[23])<<24,g=255&n[24]|(255&n[25])<<8|(255&n[26])<<16|(255&n[27])<<24,_=255&n[28]|(255&n[29])<<8|(255&n[30])<<16|(255&n[31])<<24,A=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,d=i,U=h,E=a,x=f,M=s,m=c,B=u,S=y,K=l,T=w,Y=p,k=v,L=b,z=g,R=_,P=A,O=0;O<20;O+=2)o=d+L|0,M^=o<<7|o>>>25,o=M+d|0,K^=o<<9|o>>>23,o=K+M|0,L^=o<<13|o>>>19,o=L+K|0,d^=o<<18|o>>>14,o=m+U|0,T^=o<<7|o>>>25,o=T+m|0,z^=o<<9|o>>>23,o=z+T|0,U^=o<<13|o>>>19,o=U+z|0,m^=o<<18|o>>>14,o=Y+B|0,R^=o<<7|o>>>25,o=R+Y|0,E^=o<<9|o>>>23,o=E+R|0,B^=o<<13|o>>>19,o=B+E|0,Y^=o<<18|o>>>14,o=P+k|0,x^=o<<7|o>>>25,o=x+P|0,S^=o<<9|o>>>23,o=S+x|0,k^=o<<13|o>>>19,o=k+S|0,P^=o<<18|o>>>14,o=d+x|0,U^=o<<7|o>>>25,o=U+d|0,E^=o<<9|o>>>23,o=E+U|0,x^=o<<13|o>>>19,o=x+E|0,d^=o<<18|o>>>14,o=m+M|0,B^=o<<7|o>>>25,o=B+m|0,S^=o<<9|o>>>23,o=S+B|0,M^=o<<13|o>>>19,o=M+S|0,m^=o<<18|o>>>14,o=Y+T|0,k^=o<<7|o>>>25,o=k+Y|0,K^=o<<9|o>>>23,o=K+k|0,T^=o<<13|o>>>19,o=T+K|0,Y^=o<<18|o>>>14,o=P+R|0,L^=o<<7|o>>>25,o=L+P|0,z^=o<<9|o>>>23,o=z+L|0,R^=o<<13|o>>>19,o=R+z|0,P^=o<<18|o>>>14;d=d+i|0,U=U+h|0,E=E+a|0,x=x+f|0,M=M+s|0,m=m+c|0,B=B+u|0,S=S+y|0,K=K+l|0,T=T+w|0,Y=Y+p|0,k=k+v|0,L=L+b|0,z=z+g|0,R=R+_|0,P=P+A|0,r[0]=d>>>0&255,r[1]=d>>>8&255,r[2]=d>>>16&255,r[3]=d>>>24&255,r[4]=U>>>0&255,r[5]=U>>>8&255,r[6]=U>>>16&255,r[7]=U>>>24&255,r[8]=E>>>0&255,r[9]=E>>>8&255,r[10]=E>>>16&255,r[11]=E>>>24&255,r[12]=x>>>0&255,r[13]=x>>>8&255,r[14]=x>>>16&255,r[15]=x>>>24&255,r[16]=M>>>0&255,r[17]=M>>>8&255,r[18]=M>>>16&255,r[19]=M>>>24&255,r[20]=m>>>0&255,r[21]=m>>>8&255,r[22]=m>>>16&255,r[23]=m>>>24&255,r[24]=B>>>0&255,r[25]=B>>>8&255,r[26]=B>>>16&255,r[27]=B>>>24&255,r[28]=S>>>0&255,r[29]=S>>>8&255,r[30]=S>>>16&255,r[31]=S>>>24&255,r[32]=K>>>0&255,r[33]=K>>>8&255,r[34]=K>>>16&255,r[35]=K>>>24&255,r[36]=T>>>0&255,r[37]=T>>>8&255,r[38]=T>>>16&255,r[39]=T>>>24&255,r[40]=Y>>>0&255,r[41]=Y>>>8&255,r[42]=Y>>>16&255,r[43]=Y>>>24&255,r[44]=k>>>0&255,r[45]=k>>>8&255,r[46]=k>>>16&255,r[47]=k>>>24&255,r[48]=L>>>0&255,r[49]=L>>>8&255,r[50]=L>>>16&255,r[51]=L>>>24&255,r[52]=z>>>0&255,r[53]=z>>>8&255,r[54]=z>>>16&255,r[55]=z>>>24&255,r[56]=R>>>0&255,r[57]=R>>>8&255,r[58]=R>>>16&255,r[59]=R>>>24&255,r[60]=P>>>0&255,r[61]=P>>>8&255,r[62]=P>>>16&255,r[63]=P>>>24&255}function h(r,t,n,e){for(var o,i=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,h=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,s=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,c=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,u=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,y=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,l=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,w=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,p=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,v=255&n[16]|(255&n[17])<<8|(255&n[18])<<16|(255&n[19])<<24,b=255&n[20]|(255&n[21])<<8|(255&n[22])<<16|(255&n[23])<<24,g=255&n[24]|(255&n[25])<<8|(255&n[26])<<16|(255&n[27])<<24,_=255&n[28]|(255&n[29])<<8|(255&n[30])<<16|(255&n[31])<<24,A=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,d=i,U=h,E=a,x=f,M=s,m=c,B=u,S=y,K=l,T=w,Y=p,k=v,L=b,z=g,R=_,P=A,O=0;O<20;O+=2)o=d+L|0,M^=o<<7|o>>>25,o=M+d|0,K^=o<<9|o>>>23,o=K+M|0,L^=o<<13|o>>>19,o=L+K|0,d^=o<<18|o>>>14,o=m+U|0,T^=o<<7|o>>>25,o=T+m|0,z^=o<<9|o>>>23,o=z+T|0,U^=o<<13|o>>>19,o=U+z|0,m^=o<<18|o>>>14,o=Y+B|0,R^=o<<7|o>>>25,o=R+Y|0,E^=o<<9|o>>>23,o=E+R|0,B^=o<<13|o>>>19,o=B+E|0,Y^=o<<18|o>>>14,o=P+k|0,x^=o<<7|o>>>25,o=x+P|0,S^=o<<9|o>>>23,o=S+x|0,k^=o<<13|o>>>19,o=k+S|0,P^=o<<18|o>>>14,o=d+x|0,U^=o<<7|o>>>25,o=U+d|0,E^=o<<9|o>>>23,o=E+U|0,x^=o<<13|o>>>19,o=x+E|0,d^=o<<18|o>>>14,o=m+M|0,B^=o<<7|o>>>25,o=B+m|0,S^=o<<9|o>>>23,o=S+B|0,M^=o<<13|o>>>19,o=M+S|0,m^=o<<18|o>>>14,o=Y+T|0,k^=o<<7|o>>>25,o=k+Y|0,K^=o<<9|o>>>23,o=K+k|0,T^=o<<13|o>>>19,o=T+K|0,Y^=o<<18|o>>>14,o=P+R|0,L^=o<<7|o>>>25,o=L+P|0,z^=o<<9|o>>>23,o=z+L|0,R^=o<<13|o>>>19,o=R+z|0,P^=o<<18|o>>>14;r[0]=d>>>0&255,r[1]=d>>>8&255,r[2]=d>>>16&255,r[3]=d>>>24&255,r[4]=m>>>0&255,r[5]=m>>>8&255,r[6]=m>>>16&255,r[7]=m>>>24&255,r[8]=Y>>>0&255,r[9]=Y>>>8&255,r[10]=Y>>>16&255,r[11]=Y>>>24&255,r[12]=P>>>0&255,r[13]=P>>>8&255,r[14]=P>>>16&255,r[15]=P>>>24&255,r[16]=B>>>0&255,r[17]=B>>>8&255,r[18]=B>>>16&255,r[19]=B>>>24&255,r[20]=S>>>0&255,r[21]=S>>>8&255,r[22]=S>>>16&255,r[23]=S>>>24&255,r[24]=K>>>0&255,r[25]=K>>>8&255,r[26]=K>>>16&255,r[27]=K>>>24&255,r[28]=T>>>0&255,r[29]=T>>>8&255,r[30]=T>>>16&255,r[31]=T>>>24&255}function a(r,t,n,e){i(r,t,n,e)}function f(r,t,n,e){h(r,t,n,e)}function s(r,t,n,e,o,i,h){var f,s,c=new Uint8Array(16),u=new Uint8Array(64);for(s=0;s<16;s++)c[s]=0;for(s=0;s<8;s++)c[s]=i[s];for(;o>=64;){for(a(u,c,h,ur),s=0;s<64;s++)r[t+s]=n[e+s]^u[s];for(f=1,s=8;s<16;s++)f=f+(255&c[s])|0,c[s]=255&f,f>>>=8;o-=64,t+=64,e+=64}if(o>0)for(a(u,c,h,ur),s=0;s=64;){for(a(s,f,o,ur),h=0;h<64;h++)r[t+h]=s[h];for(i=1,h=8;h<16;h++)i=i+(255&f[h])|0,f[h]=255&i,i>>>=8;n-=64,t+=64}if(n>0)for(a(s,f,o,ur),h=0;h>16&1),i[n-1]&=65535;i[15]=h[15]-32767-(i[14]>>16&1),o=i[15]>>16&1,i[14]&=65535,_(h,i,1-o)}for(n=0;n<16;n++)r[2*n]=255&h[n],r[2*n+1]=h[n]>>8}function d(r,t){var n=new Uint8Array(32),e=new Uint8Array(32);return A(n,r),A(e,t),o(n,0,e,0)}function U(r){var t=new Uint8Array(32);return A(t,r),1&t[0]}function E(r,t){var n;for(n=0;n<16;n++)r[n]=t[2*n]+(t[2*n+1]<<8);r[15]&=32767}function x(r,t,n){for(var e=0;e<16;e++)r[e]=t[e]+n[e]}function M(r,t,n){for(var e=0;e<16;e++)r[e]=t[e]-n[e]}function m(r,t,n){var e,o,i=0,h=0,a=0,f=0,s=0,c=0,u=0,y=0,l=0,w=0,p=0,v=0,b=0,g=0,_=0,A=0,d=0,U=0,E=0,x=0,M=0,m=0,B=0,S=0,K=0,T=0,Y=0,k=0,L=0,z=0,R=0,P=n[0],O=n[1],N=n[2],C=n[3],F=n[4],I=n[5],G=n[6],Z=n[7],j=n[8],q=n[9],V=n[10],X=n[11],D=n[12],H=n[13],J=n[14],Q=n[15];e=t[0],i+=e*P,h+=e*O,a+=e*N,f+=e*C,s+=e*F,c+=e*I,u+=e*G,y+=e*Z,l+=e*j,w+=e*q,p+=e*V,v+=e*X,b+=e*D,g+=e*H,_+=e*J,A+=e*Q,e=t[1],h+=e*P,a+=e*O,f+=e*N,s+=e*C,c+=e*F,u+=e*I,y+=e*G,l+=e*Z,w+=e*j,p+=e*q,v+=e*V,b+=e*X,g+=e*D,_+=e*H,A+=e*J,d+=e*Q,e=t[2],a+=e*P,f+=e*O,s+=e*N,c+=e*C,u+=e*F,y+=e*I,l+=e*G,w+=e*Z,p+=e*j,v+=e*q,b+=e*V,g+=e*X,_+=e*D,A+=e*H,d+=e*J,U+=e*Q,e=t[3],f+=e*P,s+=e*O,c+=e*N,u+=e*C,y+=e*F,l+=e*I,w+=e*G,p+=e*Z,v+=e*j,b+=e*q,g+=e*V,_+=e*X,A+=e*D,d+=e*H,U+=e*J,E+=e*Q,e=t[4],s+=e*P,c+=e*O,u+=e*N,y+=e*C,l+=e*F,w+=e*I,p+=e*G,v+=e*Z,b+=e*j,g+=e*q,_+=e*V,A+=e*X,d+=e*D,U+=e*H,E+=e*J,x+=e*Q,e=t[5],c+=e*P,u+=e*O,y+=e*N,l+=e*C,w+=e*F,p+=e*I,v+=e*G,b+=e*Z,g+=e*j,_+=e*q,A+=e*V,d+=e*X,U+=e*D,E+=e*H,x+=e*J,M+=e*Q,e=t[6],u+=e*P,y+=e*O,l+=e*N,w+=e*C,p+=e*F,v+=e*I,b+=e*G,g+=e*Z,_+=e*j,A+=e*q,d+=e*V,U+=e*X,E+=e*D,x+=e*H,M+=e*J,m+=e*Q,e=t[7],y+=e*P,l+=e*O,w+=e*N,p+=e*C,v+=e*F,b+=e*I,g+=e*G,_+=e*Z,A+=e*j,d+=e*q,U+=e*V,E+=e*X,x+=e*D,M+=e*H,m+=e*J,B+=e*Q,e=t[8],l+=e*P,w+=e*O,p+=e*N,v+=e*C,b+=e*F,g+=e*I,_+=e*G,A+=e*Z,d+=e*j,U+=e*q,E+=e*V,x+=e*X,M+=e*D,m+=e*H,B+=e*J,S+=e*Q,e=t[9],w+=e*P,p+=e*O,v+=e*N,b+=e*C,g+=e*F,_+=e*I,A+=e*G,d+=e*Z,U+=e*j,E+=e*q,x+=e*V,M+=e*X,m+=e*D,B+=e*H,S+=e*J,K+=e*Q,e=t[10],p+=e*P,v+=e*O,b+=e*N,g+=e*C,_+=e*F,A+=e*I,d+=e*G,U+=e*Z,E+=e*j,x+=e*q,M+=e*V,m+=e*X,B+=e*D,S+=e*H,K+=e*J,T+=e*Q,e=t[11],v+=e*P,b+=e*O,g+=e*N,_+=e*C,A+=e*F,d+=e*I,U+=e*G,E+=e*Z,x+=e*j,M+=e*q,m+=e*V,B+=e*X;S+=e*D;K+=e*H,T+=e*J,Y+=e*Q,e=t[12],b+=e*P,g+=e*O,_+=e*N,A+=e*C,d+=e*F,U+=e*I,E+=e*G,x+=e*Z,M+=e*j,m+=e*q,B+=e*V,S+=e*X,K+=e*D,T+=e*H,Y+=e*J,k+=e*Q,e=t[13],g+=e*P,_+=e*O,A+=e*N,d+=e*C,U+=e*F,E+=e*I,x+=e*G,M+=e*Z,m+=e*j,B+=e*q,S+=e*V,K+=e*X,T+=e*D,Y+=e*H,k+=e*J,L+=e*Q,e=t[14],_+=e*P,A+=e*O,d+=e*N,U+=e*C,E+=e*F,x+=e*I,M+=e*G,m+=e*Z,B+=e*j,S+=e*q,K+=e*V,T+=e*X,Y+=e*D,k+=e*H,L+=e*J,z+=e*Q,e=t[15],A+=e*P,d+=e*O,U+=e*N,E+=e*C,x+=e*F,M+=e*I,m+=e*G,B+=e*Z,S+=e*j,K+=e*q,T+=e*V,Y+=e*X,k+=e*D,L+=e*H,z+=e*J,R+=e*Q,i+=38*d,h+=38*U,a+=38*E,f+=38*x,s+=38*M,c+=38*m,u+=38*B,y+=38*S,l+=38*K,w+=38*T,p+=38*Y,v+=38*k,b+=38*L,g+=38*z,_+=38*R,o=1,e=i+o+65535,o=Math.floor(e/65536),i=e-65536*o,e=h+o+65535,o=Math.floor(e/65536),h=e-65536*o,e=a+o+65535,o=Math.floor(e/65536),a=e-65536*o,e=f+o+65535,o=Math.floor(e/65536),f=e-65536*o,e=s+o+65535,o=Math.floor(e/65536),s=e-65536*o,e=c+o+65535,o=Math.floor(e/65536),c=e-65536*o,e=u+o+65535,o=Math.floor(e/65536),u=e-65536*o,e=y+o+65535,o=Math.floor(e/65536),y=e-65536*o,e=l+o+65535,o=Math.floor(e/65536),l=e-65536*o,e=w+o+65535,o=Math.floor(e/65536),w=e-65536*o,e=p+o+65535,o=Math.floor(e/65536),p=e-65536*o,e=v+o+65535,o=Math.floor(e/65536),v=e-65536*o,e=b+o+65535,o=Math.floor(e/65536),b=e-65536*o,e=g+o+65535,o=Math.floor(e/65536),g=e-65536*o,e=_+o+65535,o=Math.floor(e/65536),_=e-65536*o,e=A+o+65535,o=Math.floor(e/65536),A=e-65536*o,i+=o-1+37*(o-1),o=1,e=i+o+65535,o=Math.floor(e/65536),i=e-65536*o,e=h+o+65535,o=Math.floor(e/65536),h=e-65536*o,e=a+o+65535,o=Math.floor(e/65536),a=e-65536*o,e=f+o+65535,o=Math.floor(e/65536),f=e-65536*o,e=s+o+65535,o=Math.floor(e/65536),s=e-65536*o,e=c+o+65535,o=Math.floor(e/65536),c=e-65536*o,e=u+o+65535,o=Math.floor(e/65536),u=e-65536*o,e=y+o+65535,o=Math.floor(e/65536),y=e-65536*o,e=l+o+65535,o=Math.floor(e/65536),l=e-65536*o,e=w+o+65535,o=Math.floor(e/65536),w=e-65536*o,e=p+o+65535,o=Math.floor(e/65536),p=e-65536*o,e=v+o+65535,o=Math.floor(e/65536),v=e-65536*o,e=b+o+65535,o=Math.floor(e/65536),b=e-65536*o,e=g+o+65535,o=Math.floor(e/65536),g=e-65536*o,e=_+o+65535,o=Math.floor(e/65536),_=e-65536*o,e=A+o+65535,o=Math.floor(e/65536),A=e-65536*o,i+=o-1+37*(o-1),r[0]=i,r[1]=h,r[2]=a,r[3]=f,r[4]=s,r[5]=c,r[6]=u,r[7]=y,r[8]=l,r[9]=w,r[10]=p,r[11]=v,r[12]=b,r[13]=g;r[14]=_;r[15]=A}function B(r,t){m(r,t,t)}function S(r,t){var n,e=$();for(n=0;n<16;n++)e[n]=t[n];for(n=253;n>=0;n--)B(e,e),2!==n&&4!==n&&m(e,e,t);for(n=0;n<16;n++)r[n]=e[n]}function K(r,t){var n,e=$();for(n=0;n<16;n++)e[n]=t[n];for(n=250;n>=0;n--)B(e,e),1!==n&&m(e,e,t);for(n=0;n<16;n++)r[n]=e[n]}function T(r,t,n){var e,o,i=new Uint8Array(32),h=new Float64Array(80),a=$(),f=$(),s=$(),c=$(),u=$(),y=$();for(o=0;o<31;o++)i[o]=t[o];for(i[31]=127&t[31]|64,i[0]&=248,E(h,n),o=0;o<16;o++)f[o]=h[o],c[o]=a[o]=s[o]=0;for(a[0]=c[0]=1,o=254;o>=0;--o)e=i[o>>>3]>>>(7&o)&1,_(a,f,e),_(s,c,e),x(u,a,s),M(a,a,s),x(s,f,c),M(f,f,c),B(c,u),B(y,a),m(a,s,a),m(s,f,u),x(u,a,s),M(a,a,s),B(f,a),M(s,c,y),m(a,s,ir),x(a,a,c),m(s,s,a),m(a,c,y),m(c,f,h),B(f,u),_(a,f,e),_(s,c,e);for(o=0;o<16;o++)h[o+16]=a[o],h[o+32]=s[o],h[o+48]=f[o],h[o+64]=c[o];var l=h.subarray(32),w=h.subarray(16);return S(l,l),m(w,w,l),A(r,w),0}function Y(r,t){return T(r,t,nr)}function k(r,t){return rr(t,32),Y(r,t)}function L(r,t,n){var e=new Uint8Array(32);return T(e,n,t),f(r,tr,e,ur)}function z(r,t,n,e,o,i){var h=new Uint8Array(32);return L(h,o,i),lr(r,t,n,e,h)}function R(r,t,n,e,o,i){var h=new Uint8Array(32);return L(h,o,i),wr(r,t,n,e,h)}function P(r,t,n,e){for(var o,i,h,a,f,s,c,u,y,l,w,p,v,b,g,_,A,d,U,E,x,M,m,B,S,K,T=new Int32Array(16),Y=new Int32Array(16),k=r[0],L=r[1],z=r[2],R=r[3],P=r[4],O=r[5],N=r[6],C=r[7],F=t[0],I=t[1],G=t[2],Z=t[3],j=t[4],q=t[5],V=t[6],X=t[7],D=0;e>=128;){for(U=0;U<16;U++)E=8*U+D,T[U]=n[E+0]<<24|n[E+1]<<16|n[E+2]<<8|n[E+3],Y[U]=n[E+4]<<24|n[E+5]<<16|n[E+6]<<8|n[E+7];for(U=0;U<80;U++)if(o=k,i=L,h=z,a=R,f=P,s=O,c=N,u=C,y=F,l=I,w=G,p=Z,v=j,b=q,g=V,_=X,x=C,M=X,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=(P>>>14|j<<18)^(P>>>18|j<<14)^(j>>>9|P<<23),M=(j>>>14|P<<18)^(j>>>18|P<<14)^(P>>>9|j<<23),m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,x=P&O^~P&N,M=j&q^~j&V,m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,x=pr[2*U],M=pr[2*U+1],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,x=T[U%16],M=Y[U%16],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,A=65535&S|K<<16,d=65535&m|B<<16,x=A,M=d,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=(k>>>28|F<<4)^(F>>>2|k<<30)^(F>>>7|k<<25),M=(F>>>28|k<<4)^(k>>>2|F<<30)^(k>>>7|F<<25),m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,x=k&L^k&z^L&z,M=F&I^F&G^I&G,m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,u=65535&S|K<<16,_=65535&m|B<<16,x=a,M=p,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=A,M=d,m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,a=65535&S|K<<16,p=65535&m|B<<16,L=o,z=i,R=h,P=a,O=f,N=s,C=c,k=u,I=y,G=l,Z=w,j=p,q=v,V=b,X=g,F=_,U%16===15)for(E=0;E<16;E++)x=T[E],M=Y[E],m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=T[(E+9)%16],M=Y[(E+9)%16],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,A=T[(E+1)%16],d=Y[(E+1)%16],x=(A>>>1|d<<31)^(A>>>8|d<<24)^A>>>7,M=(d>>>1|A<<31)^(d>>>8|A<<24)^(d>>>7|A<<25),m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,A=T[(E+14)%16],d=Y[(E+14)%16],x=(A>>>19|d<<13)^(d>>>29|A<<3)^A>>>6,M=(d>>>19|A<<13)^(A>>>29|d<<3)^(d>>>6|A<<26),m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,T[E]=65535&S|K<<16,Y[E]=65535&m|B<<16;x=k,M=F,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[0],M=t[0],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[0]=k=65535&S|K<<16,t[0]=F=65535&m|B<<16,x=L,M=I,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[1],M=t[1],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[1]=L=65535&S|K<<16,t[1]=I=65535&m|B<<16,x=z,M=G,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[2],M=t[2],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[2]=z=65535&S|K<<16,t[2]=G=65535&m|B<<16,x=R,M=Z,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[3],M=t[3],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[3]=R=65535&S|K<<16,t[3]=Z=65535&m|B<<16,x=P,M=j,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[4],M=t[4],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[4]=P=65535&S|K<<16,t[4]=j=65535&m|B<<16,x=O,M=q,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[5],M=t[5],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[5]=O=65535&S|K<<16,t[5]=q=65535&m|B<<16,x=N,M=V,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[6],M=t[6],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[6]=N=65535&S|K<<16,t[6]=V=65535&m|B<<16,x=C,M=X,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[7],M=t[7],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[7]=C=65535&S|K<<16,t[7]=X=65535&m|B<<16,D+=128,e-=128}return e}function O(r,n,e){var o,i=new Int32Array(8),h=new Int32Array(8),a=new Uint8Array(256),f=e;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,h[0]=4089235720,h[1]=2227873595,h[2]=4271175723,h[3]=1595750129,h[4]=2917565137,h[5]=725511199,h[6]=4215389547,h[7]=327033209,P(i,h,n,e),e%=128,o=0;o=0;--o)e=n[o/8|0]>>(7&o)&1,C(r,t,e),N(t,r),N(r,r),C(r,t,e)}function G(r,t){var n=[$(),$(),$(),$()];b(n[0],fr),b(n[1],sr),b(n[2],or),m(n[3],fr,sr),I(r,n,t)}function Z(r,t,n){var e,o=new Uint8Array(64),i=[$(),$(),$(),$()];for(n||rr(t,32),O(o,t,32),o[0]&=248,o[31]&=127,o[31]|=64,G(i,o),F(r,i),e=0;e<32;e++)t[e+32]=r[e];return 0}function j(r,t){var n,e,o,i;for(e=63;e>=32;--e){for(n=0,o=e-32,i=e-12;o>8,t[o]-=256*n;t[o]+=n,t[e]=0}for(n=0,o=0;o<32;o++)t[o]+=n-(t[31]>>4)*vr[o],n=t[o]>>8,t[o]&=255;for(o=0;o<32;o++)t[o]-=n*vr[o];for(e=0;e<32;e++)t[e+1]+=t[e]>>8,r[e]=255&t[e]}function q(r){var t,n=new Float64Array(64);for(t=0;t<64;t++)n[t]=r[t];for(t=0;t<64;t++)r[t]=0;j(r,n)}function V(r,t,n,e){var o,i,h=new Uint8Array(64),a=new Uint8Array(64),f=new Uint8Array(64),s=new Float64Array(64),c=[$(),$(),$(),$()];O(h,e,32),h[0]&=248,h[31]&=127,h[31]|=64;var u=n+64;for(o=0;o>7&&M(r[0],er,r[0]),m(r[3],r[0],r[1]),0)}function D(r,t,n,e){var i,h,a=new Uint8Array(32),f=new Uint8Array(64),s=[$(),$(),$(),$()],c=[$(),$(),$(),$()];if(h=-1,n<64)return-1;if(X(c,e))return-1;for(i=0;i>>13|n<<3),e=255&r[4]|(255&r[5])<<8,this.r[2]=7939&(n>>>10|e<<6),o=255&r[6]|(255&r[7])<<8,this.r[3]=8191&(e>>>7|o<<9),i=255&r[8]|(255&r[9])<<8,this.r[4]=255&(o>>>4|i<<12),this.r[5]=i>>>1&8190,h=255&r[10]|(255&r[11])<<8,this.r[6]=8191&(i>>>14|h<<2),a=255&r[12]|(255&r[13])<<8,this.r[7]=8065&(h>>>11|a<<5),f=255&r[14]|(255&r[15])<<8,this.r[8]=8191&(a>>>8|f<<8),this.r[9]=f>>>5&127,this.pad[0]=255&r[16]|(255&r[17])<<8,this.pad[1]=255&r[18]|(255&r[19])<<8,this.pad[2]=255&r[20]|(255&r[21])<<8,this.pad[3]=255&r[22]|(255&r[23])<<8,this.pad[4]=255&r[24]|(255&r[25])<<8,this.pad[5]=255&r[26]|(255&r[27])<<8,this.pad[6]=255&r[28]|(255&r[29])<<8,this.pad[7]=255&r[30]|(255&r[31])<<8};yr.prototype.blocks=function(r,t,n){for(var e,o,i,h,a,f,s,c,u,y,l,w,p,v,b,g,_,A,d,U=this.fin?0:2048,E=this.h[0],x=this.h[1],M=this.h[2],m=this.h[3],B=this.h[4],S=this.h[5],K=this.h[6],T=this.h[7],Y=this.h[8],k=this.h[9],L=this.r[0],z=this.r[1],R=this.r[2],P=this.r[3],O=this.r[4],N=this.r[5],C=this.r[6],F=this.r[7],I=this.r[8],G=this.r[9];n>=16;)e=255&r[t+0]|(255&r[t+1])<<8,E+=8191&e,o=255&r[t+2]|(255&r[t+3])<<8,x+=8191&(e>>>13|o<<3),i=255&r[t+4]|(255&r[t+5])<<8,M+=8191&(o>>>10|i<<6),h=255&r[t+6]|(255&r[t+7])<<8,m+=8191&(i>>>7|h<<9),a=255&r[t+8]|(255&r[t+9])<<8,B+=8191&(h>>>4|a<<12),S+=a>>>1&8191,f=255&r[t+10]|(255&r[t+11])<<8,K+=8191&(a>>>14|f<<2),s=255&r[t+12]|(255&r[t+13])<<8,T+=8191&(f>>>11|s<<5),c=255&r[t+14]|(255&r[t+15])<<8,Y+=8191&(s>>>8|c<<8),k+=c>>>5|U,u=0,y=u,y+=E*L,y+=x*(5*G),y+=M*(5*I),y+=m*(5*F),y+=B*(5*C),u=y>>>13,y&=8191,y+=S*(5*N),y+=K*(5*O),y+=T*(5*P),y+=Y*(5*R),y+=k*(5*z),u+=y>>>13,y&=8191,l=u,l+=E*z,l+=x*L,l+=M*(5*G),l+=m*(5*I),l+=B*(5*F),u=l>>>13,l&=8191,l+=S*(5*C),l+=K*(5*N),l+=T*(5*O),l+=Y*(5*P),l+=k*(5*R),u+=l>>>13,l&=8191,w=u,w+=E*R,w+=x*z,w+=M*L,w+=m*(5*G),w+=B*(5*I),u=w>>>13,w&=8191,w+=S*(5*F),w+=K*(5*C),w+=T*(5*N),w+=Y*(5*O),w+=k*(5*P),u+=w>>>13,w&=8191,p=u,p+=E*P,p+=x*R,p+=M*z,p+=m*L,p+=B*(5*G),u=p>>>13,p&=8191,p+=S*(5*I),p+=K*(5*F),p+=T*(5*C),p+=Y*(5*N),p+=k*(5*O),u+=p>>>13,p&=8191,v=u,v+=E*O,v+=x*P,v+=M*R,v+=m*z,v+=B*L,u=v>>>13,v&=8191,v+=S*(5*G),v+=K*(5*I),v+=T*(5*F),v+=Y*(5*C),v+=k*(5*N),u+=v>>>13,v&=8191,b=u,b+=E*N,b+=x*O,b+=M*P,b+=m*R,b+=B*z,u=b>>>13,b&=8191,b+=S*L,b+=K*(5*G),b+=T*(5*I),b+=Y*(5*F),b+=k*(5*C),u+=b>>>13,b&=8191,g=u,g+=E*C,g+=x*N,g+=M*O,g+=m*P,g+=B*R,u=g>>>13,g&=8191,g+=S*z,g+=K*L,g+=T*(5*G),g+=Y*(5*I),g+=k*(5*F),u+=g>>>13,g&=8191,_=u,_+=E*F,_+=x*C,_+=M*N,_+=m*O,_+=B*P,u=_>>>13,_&=8191,_+=S*R,_+=K*z,_+=T*L,_+=Y*(5*G),_+=k*(5*I),u+=_>>>13,_&=8191,A=u,A+=E*I,A+=x*F,A+=M*C,A+=m*N,A+=B*O,u=A>>>13,A&=8191,A+=S*P,A+=K*R,A+=T*z,A+=Y*L,A+=k*(5*G),u+=A>>>13,A&=8191,d=u,d+=E*G,d+=x*I,d+=M*F,d+=m*C,d+=B*N,u=d>>>13,d&=8191,d+=S*O,d+=K*P,d+=T*R,d+=Y*z,d+=k*L,u+=d>>>13,d&=8191,u=(u<<2)+u|0,u=u+y|0,y=8191&u,u>>>=13,l+=u,E=y,x=l,M=w,m=p,B=v,S=b,K=g,T=_,Y=A,k=d,t+=16,n-=16;this.h[0]=E,this.h[1]=x,this.h[2]=M,this.h[3]=m,this.h[4]=B,this.h[5]=S,this.h[6]=K,this.h[7]=T,this.h[8]=Y,this.h[9]=k},yr.prototype.finish=function(r,t){var n,e,o,i,h=new Uint16Array(10);if(this.leftover){for(i=this.leftover,this.buffer[i++]=1;i<16;i++)this.buffer[i]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(n=this.h[1]>>>13,this.h[1]&=8191,i=2;i<10;i++)this.h[i]+=n,n=this.h[i]>>>13,this.h[i]&=8191;for(this.h[0]+=5*n,n=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=n,n=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=n,h[0]=this.h[0]+5,n=h[0]>>>13,h[0]&=8191,i=1;i<10;i++)h[i]=this.h[i]+n,n=h[i]>>>13,h[i]&=8191;for(h[9]-=8192,e=(1^n)-1,i=0;i<10;i++)h[i]&=e;for(e=~e,i=0;i<10;i++)this.h[i]=this.h[i]&e|h[i];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),o=this.h[0]+this.pad[0],this.h[0]=65535&o,i=1;i<8;i++)o=(this.h[i]+this.pad[i]|0)+(o>>>16)|0,this.h[i]=65535&o;r[t+0]=this.h[0]>>>0&255,r[t+1]=this.h[0]>>>8&255,r[t+2]=this.h[1]>>>0&255,r[t+3]=this.h[1]>>>8&255,r[t+4]=this.h[2]>>>0&255,r[t+5]=this.h[2]>>>8&255,r[t+6]=this.h[3]>>>0&255,r[t+7]=this.h[3]>>>8&255,r[t+8]=this.h[4]>>>0&255,r[t+9]=this.h[4]>>>8&255,r[t+10]=this.h[5]>>>0&255,r[t+11]=this.h[5]>>>8&255,r[t+12]=this.h[6]>>>0&255,r[t+13]=this.h[6]>>>8&255,r[t+14]=this.h[7]>>>0&255,r[t+15]=this.h[7]>>>8&255},yr.prototype.update=function(r,t,n){var e,o;if(this.leftover){for(o=16-this.leftover,o>n&&(o=n),e=0;e=16&&(o=n-n%16,this.blocks(r,t,o),t+=o,n-=o),n){for(e=0;e=0},r.sign.keyPair=function(){var r=new Uint8Array(Tr),t=new Uint8Array(Yr);return Z(r,t),{publicKey:r,secretKey:t}},r.sign.keyPair.fromSecretKey=function(r){if(Q(r),r.length!==Yr)throw new Error("bad secret key size");for(var t=new Uint8Array(Tr),n=0;n void): void; -} diff --git a/node_modules/tweetnacl/nacl.js b/node_modules/tweetnacl/nacl.js deleted file mode 100644 index f72dd78..0000000 --- a/node_modules/tweetnacl/nacl.js +++ /dev/null @@ -1,1175 +0,0 @@ -(function(nacl) { -'use strict'; - -// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. -// Public domain. -// -// Implementation derived from TweetNaCl version 20140427. -// See for details: http://tweetnacl.cr.yp.to/ - -var u64 = function(h, l) { this.hi = h|0 >>> 0; this.lo = l|0 >>> 0; }; -var gf = function(init) { - var i, r = new Float64Array(16); - if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; - return r; -}; - -// Pluggable, initialized in high-level API below. -var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; - -var _0 = new Uint8Array(16); -var _9 = new Uint8Array(32); _9[0] = 9; - -var gf0 = gf(), - gf1 = gf([1]), - _121665 = gf([0xdb41, 1]), - D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), - D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), - X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), - Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), - I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); - -function L32(x, c) { return (x << c) | (x >>> (32 - c)); } - -function ld32(x, i) { - var u = x[i+3] & 0xff; - u = (u<<8)|(x[i+2] & 0xff); - u = (u<<8)|(x[i+1] & 0xff); - return (u<<8)|(x[i+0] & 0xff); -} - -function dl64(x, i) { - var h = (x[i] << 24) | (x[i+1] << 16) | (x[i+2] << 8) | x[i+3]; - var l = (x[i+4] << 24) | (x[i+5] << 16) | (x[i+6] << 8) | x[i+7]; - return new u64(h, l); -} - -function st32(x, j, u) { - var i; - for (i = 0; i < 4; i++) { x[j+i] = u & 255; u >>>= 8; } -} - -function ts64(x, i, u) { - x[i] = (u.hi >> 24) & 0xff; - x[i+1] = (u.hi >> 16) & 0xff; - x[i+2] = (u.hi >> 8) & 0xff; - x[i+3] = u.hi & 0xff; - x[i+4] = (u.lo >> 24) & 0xff; - x[i+5] = (u.lo >> 16) & 0xff; - x[i+6] = (u.lo >> 8) & 0xff; - x[i+7] = u.lo & 0xff; -} - -function vn(x, xi, y, yi, n) { - var i,d = 0; - for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; - return (1 & ((d - 1) >>> 8)) - 1; -} - -function crypto_verify_16(x, xi, y, yi) { - return vn(x,xi,y,yi,16); -} - -function crypto_verify_32(x, xi, y, yi) { - return vn(x,xi,y,yi,32); -} - -function core(out,inp,k,c,h) { - var w = new Uint32Array(16), x = new Uint32Array(16), - y = new Uint32Array(16), t = new Uint32Array(4); - var i, j, m; - - for (i = 0; i < 4; i++) { - x[5*i] = ld32(c, 4*i); - x[1+i] = ld32(k, 4*i); - x[6+i] = ld32(inp, 4*i); - x[11+i] = ld32(k, 16+4*i); - } - - for (i = 0; i < 16; i++) y[i] = x[i]; - - for (i = 0; i < 20; i++) { - for (j = 0; j < 4; j++) { - for (m = 0; m < 4; m++) t[m] = x[(5*j+4*m)%16]; - t[1] ^= L32((t[0]+t[3])|0, 7); - t[2] ^= L32((t[1]+t[0])|0, 9); - t[3] ^= L32((t[2]+t[1])|0,13); - t[0] ^= L32((t[3]+t[2])|0,18); - for (m = 0; m < 4; m++) w[4*j+(j+m)%4] = t[m]; - } - for (m = 0; m < 16; m++) x[m] = w[m]; - } - - if (h) { - for (i = 0; i < 16; i++) x[i] = (x[i] + y[i]) | 0; - for (i = 0; i < 4; i++) { - x[5*i] = (x[5*i] - ld32(c, 4*i)) | 0; - x[6+i] = (x[6+i] - ld32(inp, 4*i)) | 0; - } - for (i = 0; i < 4; i++) { - st32(out,4*i,x[5*i]); - st32(out,16+4*i,x[6+i]); - } - } else { - for (i = 0; i < 16; i++) st32(out, 4 * i, (x[i] + y[i]) | 0); - } -} - -function crypto_core_salsa20(out,inp,k,c) { - core(out,inp,k,c,false); - return 0; -} - -function crypto_core_hsalsa20(out,inp,k,c) { - core(out,inp,k,c,true); - return 0; -} - -var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); - // "expand 32-byte k" - -function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - if (!b) return 0; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = (m?m[mpos+i]:0) ^ x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - if (m) mpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = (m?m[mpos+i]:0) ^ x[i]; - } - return 0; -} - -function crypto_stream_salsa20(c,cpos,d,n,k) { - return crypto_stream_salsa20_xor(c,cpos,null,0,d,n,k); -} - -function crypto_stream(c,cpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - return crypto_stream_salsa20(c,cpos,d,n.subarray(16),s); -} - -function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,n.subarray(16),s); -} - -function add1305(h, c) { - var j, u = 0; - for (j = 0; j < 17; j++) { - u = (u + ((h[j] + c[j]) | 0)) | 0; - h[j] = u & 255; - u >>>= 8; - } -} - -var minusp = new Uint32Array([ - 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252 -]); - -function crypto_onetimeauth(out, outpos, m, mpos, n, k) { - var s, i, j, u; - var x = new Uint32Array(17), r = new Uint32Array(17), - h = new Uint32Array(17), c = new Uint32Array(17), - g = new Uint32Array(17); - for (j = 0; j < 17; j++) r[j]=h[j]=0; - for (j = 0; j < 16; j++) r[j]=k[j]; - r[3]&=15; - r[4]&=252; - r[7]&=15; - r[8]&=252; - r[11]&=15; - r[12]&=252; - r[15]&=15; - - while (n > 0) { - for (j = 0; j < 17; j++) c[j] = 0; - for (j = 0; (j < 16) && (j < n); ++j) c[j] = m[mpos+j]; - c[j] = 1; - mpos += j; n -= j; - add1305(h,c); - for (i = 0; i < 17; i++) { - x[i] = 0; - for (j = 0; j < 17; j++) x[i] = (x[i] + (h[j] * ((j <= i) ? r[i - j] : ((320 * r[i + 17 - j])|0))) | 0) | 0; - } - for (i = 0; i < 17; i++) h[i] = x[i]; - u = 0; - for (j = 0; j < 16; j++) { - u = (u + h[j]) | 0; - h[j] = u & 255; - u >>>= 8; - } - u = (u + h[16]) | 0; h[16] = u & 3; - u = (5 * (u >>> 2)) | 0; - for (j = 0; j < 16; j++) { - u = (u + h[j]) | 0; - h[j] = u & 255; - u >>>= 8; - } - u = (u + h[16]) | 0; h[16] = u; - } - - for (j = 0; j < 17; j++) g[j] = h[j]; - add1305(h,minusp); - s = (-(h[16] >>> 7) | 0); - for (j = 0; j < 17; j++) h[j] ^= s & (g[j] ^ h[j]); - - for (j = 0; j < 16; j++) c[j] = k[j + 16]; - c[16] = 0; - add1305(h,c); - for (j = 0; j < 16; j++) out[outpos+j] = h[j]; - return 0; -} - -function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { - var x = new Uint8Array(16); - crypto_onetimeauth(x,0,m,mpos,n,k); - return crypto_verify_16(h,hpos,x,0); -} - -function crypto_secretbox(c,m,d,n,k) { - var i; - if (d < 32) return -1; - crypto_stream_xor(c,0,m,0,d,n,k); - crypto_onetimeauth(c, 16, c, 32, d - 32, c); - for (i = 0; i < 16; i++) c[i] = 0; - return 0; -} - -function crypto_secretbox_open(m,c,d,n,k) { - var i; - var x = new Uint8Array(32); - if (d < 32) return -1; - crypto_stream(x,0,32,n,k); - if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; - crypto_stream_xor(m,0,c,0,d,n,k); - for (i = 0; i < 32; i++) m[i] = 0; - return 0; -} - -function set25519(r, a) { - var i; - for (i = 0; i < 16; i++) r[i] = a[i]|0; -} - -function car25519(o) { - var c; - var i; - for (i = 0; i < 16; i++) { - o[i] += 65536; - c = Math.floor(o[i] / 65536); - o[(i+1)*(i<15?1:0)] += c - 1 + 37 * (c-1) * (i===15?1:0); - o[i] -= (c * 65536); - } -} - -function sel25519(p, q, b) { - var t, c = ~(b-1); - for (var i = 0; i < 16; i++) { - t = c & (p[i] ^ q[i]); - p[i] ^= t; - q[i] ^= t; - } -} - -function pack25519(o, n) { - var i, j, b; - var m = gf(), t = gf(); - for (i = 0; i < 16; i++) t[i] = n[i]; - car25519(t); - car25519(t); - car25519(t); - for (j = 0; j < 2; j++) { - m[0] = t[0] - 0xffed; - for (i = 1; i < 15; i++) { - m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); - m[i-1] &= 0xffff; - } - m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); - b = (m[15]>>16) & 1; - m[14] &= 0xffff; - sel25519(t, m, 1-b); - } - for (i = 0; i < 16; i++) { - o[2*i] = t[i] & 0xff; - o[2*i+1] = t[i]>>8; - } -} - -function neq25519(a, b) { - var c = new Uint8Array(32), d = new Uint8Array(32); - pack25519(c, a); - pack25519(d, b); - return crypto_verify_32(c, 0, d, 0); -} - -function par25519(a) { - var d = new Uint8Array(32); - pack25519(d, a); - return d[0] & 1; -} - -function unpack25519(o, n) { - var i; - for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); - o[15] &= 0x7fff; -} - -function A(o, a, b) { - var i; - for (i = 0; i < 16; i++) o[i] = (a[i] + b[i])|0; -} - -function Z(o, a, b) { - var i; - for (i = 0; i < 16; i++) o[i] = (a[i] - b[i])|0; -} - -function M(o, a, b) { - var i, j, t = new Float64Array(31); - for (i = 0; i < 31; i++) t[i] = 0; - for (i = 0; i < 16; i++) { - for (j = 0; j < 16; j++) { - t[i+j] += a[i] * b[j]; - } - } - for (i = 0; i < 15; i++) { - t[i] += 38 * t[i+16]; - } - for (i = 0; i < 16; i++) o[i] = t[i]; - car25519(o); - car25519(o); -} - -function S(o, a) { - M(o, a, a); -} - -function inv25519(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 253; a >= 0; a--) { - S(c, c); - if(a !== 2 && a !== 4) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function pow2523(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 250; a >= 0; a--) { - S(c, c); - if(a !== 1) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function crypto_scalarmult(q, n, p) { - var z = new Uint8Array(32); - var x = new Float64Array(80), r, i; - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(); - for (i = 0; i < 31; i++) z[i] = n[i]; - z[31]=(n[31]&127)|64; - z[0]&=248; - unpack25519(x,p); - for (i = 0; i < 16; i++) { - b[i]=x[i]; - d[i]=a[i]=c[i]=0; - } - a[0]=d[0]=1; - for (i=254; i>=0; --i) { - r=(z[i>>>3]>>>(i&7))&1; - sel25519(a,b,r); - sel25519(c,d,r); - A(e,a,c); - Z(a,a,c); - A(c,b,d); - Z(b,b,d); - S(d,e); - S(f,a); - M(a,c,a); - M(c,b,e); - A(e,a,c); - Z(a,a,c); - S(b,a); - Z(c,d,f); - M(a,c,_121665); - A(a,a,d); - M(c,c,a); - M(a,d,f); - M(d,b,x); - S(b,e); - sel25519(a,b,r); - sel25519(c,d,r); - } - for (i = 0; i < 16; i++) { - x[i+16]=a[i]; - x[i+32]=c[i]; - x[i+48]=b[i]; - x[i+64]=d[i]; - } - var x32 = x.subarray(32); - var x16 = x.subarray(16); - inv25519(x32,x32); - M(x16,x16,x32); - pack25519(q,x16); - return 0; -} - -function crypto_scalarmult_base(q, n) { - return crypto_scalarmult(q, n, _9); -} - -function crypto_box_keypair(y, x) { - randombytes(x, 32); - return crypto_scalarmult_base(y, x); -} - -function crypto_box_beforenm(k, y, x) { - var s = new Uint8Array(32); - crypto_scalarmult(s, x, y); - return crypto_core_hsalsa20(k, _0, s, sigma); -} - -var crypto_box_afternm = crypto_secretbox; -var crypto_box_open_afternm = crypto_secretbox_open; - -function crypto_box(c, m, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_afternm(c, m, d, n, k); -} - -function crypto_box_open(m, c, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_open_afternm(m, c, d, n, k); -} - -function add64() { - var a = 0, b = 0, c = 0, d = 0, m16 = 65535, l, h, i; - for (i = 0; i < arguments.length; i++) { - l = arguments[i].lo; - h = arguments[i].hi; - a += (l & m16); b += (l >>> 16); - c += (h & m16); d += (h >>> 16); - } - - b += (a >>> 16); - c += (b >>> 16); - d += (c >>> 16); - - return new u64((c & m16) | (d << 16), (a & m16) | (b << 16)); -} - -function shr64(x, c) { - return new u64((x.hi >>> c), (x.lo >>> c) | (x.hi << (32 - c))); -} - -function xor64() { - var l = 0, h = 0, i; - for (i = 0; i < arguments.length; i++) { - l ^= arguments[i].lo; - h ^= arguments[i].hi; - } - return new u64(h, l); -} - -function R(x, c) { - var h, l, c1 = 32 - c; - if (c < 32) { - h = (x.hi >>> c) | (x.lo << c1); - l = (x.lo >>> c) | (x.hi << c1); - } else if (c < 64) { - h = (x.lo >>> c) | (x.hi << c1); - l = (x.hi >>> c) | (x.lo << c1); - } - return new u64(h, l); -} - -function Ch(x, y, z) { - var h = (x.hi & y.hi) ^ (~x.hi & z.hi), - l = (x.lo & y.lo) ^ (~x.lo & z.lo); - return new u64(h, l); -} - -function Maj(x, y, z) { - var h = (x.hi & y.hi) ^ (x.hi & z.hi) ^ (y.hi & z.hi), - l = (x.lo & y.lo) ^ (x.lo & z.lo) ^ (y.lo & z.lo); - return new u64(h, l); -} - -function Sigma0(x) { return xor64(R(x,28), R(x,34), R(x,39)); } -function Sigma1(x) { return xor64(R(x,14), R(x,18), R(x,41)); } -function sigma0(x) { return xor64(R(x, 1), R(x, 8), shr64(x,7)); } -function sigma1(x) { return xor64(R(x,19), R(x,61), shr64(x,6)); } - -var K = [ - new u64(0x428a2f98, 0xd728ae22), new u64(0x71374491, 0x23ef65cd), - new u64(0xb5c0fbcf, 0xec4d3b2f), new u64(0xe9b5dba5, 0x8189dbbc), - new u64(0x3956c25b, 0xf348b538), new u64(0x59f111f1, 0xb605d019), - new u64(0x923f82a4, 0xaf194f9b), new u64(0xab1c5ed5, 0xda6d8118), - new u64(0xd807aa98, 0xa3030242), new u64(0x12835b01, 0x45706fbe), - new u64(0x243185be, 0x4ee4b28c), new u64(0x550c7dc3, 0xd5ffb4e2), - new u64(0x72be5d74, 0xf27b896f), new u64(0x80deb1fe, 0x3b1696b1), - new u64(0x9bdc06a7, 0x25c71235), new u64(0xc19bf174, 0xcf692694), - new u64(0xe49b69c1, 0x9ef14ad2), new u64(0xefbe4786, 0x384f25e3), - new u64(0x0fc19dc6, 0x8b8cd5b5), new u64(0x240ca1cc, 0x77ac9c65), - new u64(0x2de92c6f, 0x592b0275), new u64(0x4a7484aa, 0x6ea6e483), - new u64(0x5cb0a9dc, 0xbd41fbd4), new u64(0x76f988da, 0x831153b5), - new u64(0x983e5152, 0xee66dfab), new u64(0xa831c66d, 0x2db43210), - new u64(0xb00327c8, 0x98fb213f), new u64(0xbf597fc7, 0xbeef0ee4), - new u64(0xc6e00bf3, 0x3da88fc2), new u64(0xd5a79147, 0x930aa725), - new u64(0x06ca6351, 0xe003826f), new u64(0x14292967, 0x0a0e6e70), - new u64(0x27b70a85, 0x46d22ffc), new u64(0x2e1b2138, 0x5c26c926), - new u64(0x4d2c6dfc, 0x5ac42aed), new u64(0x53380d13, 0x9d95b3df), - new u64(0x650a7354, 0x8baf63de), new u64(0x766a0abb, 0x3c77b2a8), - new u64(0x81c2c92e, 0x47edaee6), new u64(0x92722c85, 0x1482353b), - new u64(0xa2bfe8a1, 0x4cf10364), new u64(0xa81a664b, 0xbc423001), - new u64(0xc24b8b70, 0xd0f89791), new u64(0xc76c51a3, 0x0654be30), - new u64(0xd192e819, 0xd6ef5218), new u64(0xd6990624, 0x5565a910), - new u64(0xf40e3585, 0x5771202a), new u64(0x106aa070, 0x32bbd1b8), - new u64(0x19a4c116, 0xb8d2d0c8), new u64(0x1e376c08, 0x5141ab53), - new u64(0x2748774c, 0xdf8eeb99), new u64(0x34b0bcb5, 0xe19b48a8), - new u64(0x391c0cb3, 0xc5c95a63), new u64(0x4ed8aa4a, 0xe3418acb), - new u64(0x5b9cca4f, 0x7763e373), new u64(0x682e6ff3, 0xd6b2b8a3), - new u64(0x748f82ee, 0x5defb2fc), new u64(0x78a5636f, 0x43172f60), - new u64(0x84c87814, 0xa1f0ab72), new u64(0x8cc70208, 0x1a6439ec), - new u64(0x90befffa, 0x23631e28), new u64(0xa4506ceb, 0xde82bde9), - new u64(0xbef9a3f7, 0xb2c67915), new u64(0xc67178f2, 0xe372532b), - new u64(0xca273ece, 0xea26619c), new u64(0xd186b8c7, 0x21c0c207), - new u64(0xeada7dd6, 0xcde0eb1e), new u64(0xf57d4f7f, 0xee6ed178), - new u64(0x06f067aa, 0x72176fba), new u64(0x0a637dc5, 0xa2c898a6), - new u64(0x113f9804, 0xbef90dae), new u64(0x1b710b35, 0x131c471b), - new u64(0x28db77f5, 0x23047d84), new u64(0x32caab7b, 0x40c72493), - new u64(0x3c9ebe0a, 0x15c9bebc), new u64(0x431d67c4, 0x9c100d4c), - new u64(0x4cc5d4be, 0xcb3e42b6), new u64(0x597f299c, 0xfc657e2a), - new u64(0x5fcb6fab, 0x3ad6faec), new u64(0x6c44198c, 0x4a475817) -]; - -function crypto_hashblocks(x, m, n) { - var z = [], b = [], a = [], w = [], t, i, j; - - for (i = 0; i < 8; i++) z[i] = a[i] = dl64(x, 8*i); - - var pos = 0; - while (n >= 128) { - for (i = 0; i < 16; i++) w[i] = dl64(m, 8*i+pos); - for (i = 0; i < 80; i++) { - for (j = 0; j < 8; j++) b[j] = a[j]; - t = add64(a[7], Sigma1(a[4]), Ch(a[4], a[5], a[6]), K[i], w[i%16]); - b[7] = add64(t, Sigma0(a[0]), Maj(a[0], a[1], a[2])); - b[3] = add64(b[3], t); - for (j = 0; j < 8; j++) a[(j+1)%8] = b[j]; - if (i%16 === 15) { - for (j = 0; j < 16; j++) { - w[j] = add64(w[j], w[(j+9)%16], sigma0(w[(j+1)%16]), sigma1(w[(j+14)%16])); - } - } - } - - for (i = 0; i < 8; i++) { - a[i] = add64(a[i], z[i]); - z[i] = a[i]; - } - - pos += 128; - n -= 128; - } - - for (i = 0; i < 8; i++) ts64(x, 8*i, z[i]); - return n; -} - -var iv = new Uint8Array([ - 0x6a,0x09,0xe6,0x67,0xf3,0xbc,0xc9,0x08, - 0xbb,0x67,0xae,0x85,0x84,0xca,0xa7,0x3b, - 0x3c,0x6e,0xf3,0x72,0xfe,0x94,0xf8,0x2b, - 0xa5,0x4f,0xf5,0x3a,0x5f,0x1d,0x36,0xf1, - 0x51,0x0e,0x52,0x7f,0xad,0xe6,0x82,0xd1, - 0x9b,0x05,0x68,0x8c,0x2b,0x3e,0x6c,0x1f, - 0x1f,0x83,0xd9,0xab,0xfb,0x41,0xbd,0x6b, - 0x5b,0xe0,0xcd,0x19,0x13,0x7e,0x21,0x79 -]); - -function crypto_hash(out, m, n) { - var h = new Uint8Array(64), x = new Uint8Array(256); - var i, b = n; - - for (i = 0; i < 64; i++) h[i] = iv[i]; - - crypto_hashblocks(h, m, n); - n %= 128; - - for (i = 0; i < 256; i++) x[i] = 0; - for (i = 0; i < n; i++) x[i] = m[b-n+i]; - x[n] = 128; - - n = 256-128*(n<112?1:0); - x[n-9] = 0; - ts64(x, n-8, new u64((b / 0x20000000) | 0, b << 3)); - crypto_hashblocks(h, x, n); - - for (i = 0; i < 64; i++) out[i] = h[i]; - - return 0; -} - -function add(p, q) { - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(), - g = gf(), h = gf(), t = gf(); - - Z(a, p[1], p[0]); - Z(t, q[1], q[0]); - M(a, a, t); - A(b, p[0], p[1]); - A(t, q[0], q[1]); - M(b, b, t); - M(c, p[3], q[3]); - M(c, c, D2); - M(d, p[2], q[2]); - A(d, d, d); - Z(e, b, a); - Z(f, d, c); - A(g, d, c); - A(h, b, a); - - M(p[0], e, f); - M(p[1], h, g); - M(p[2], g, f); - M(p[3], e, h); -} - -function cswap(p, q, b) { - var i; - for (i = 0; i < 4; i++) { - sel25519(p[i], q[i], b); - } -} - -function pack(r, p) { - var tx = gf(), ty = gf(), zi = gf(); - inv25519(zi, p[2]); - M(tx, p[0], zi); - M(ty, p[1], zi); - pack25519(r, ty); - r[31] ^= par25519(tx) << 7; -} - -function scalarmult(p, q, s) { - var b, i; - set25519(p[0], gf0); - set25519(p[1], gf1); - set25519(p[2], gf1); - set25519(p[3], gf0); - for (i = 255; i >= 0; --i) { - b = (s[(i/8)|0] >> (i&7)) & 1; - cswap(p, q, b); - add(q, p); - add(p, p); - cswap(p, q, b); - } -} - -function scalarbase(p, s) { - var q = [gf(), gf(), gf(), gf()]; - set25519(q[0], X); - set25519(q[1], Y); - set25519(q[2], gf1); - M(q[3], X, Y); - scalarmult(p, q, s); -} - -function crypto_sign_keypair(pk, sk, seeded) { - var d = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()]; - var i; - - if (!seeded) randombytes(sk, 32); - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - scalarbase(p, d); - pack(pk, p); - - for (i = 0; i < 32; i++) sk[i+32] = pk[i]; - return 0; -} - -var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); - -function modL(r, x) { - var carry, i, j, k; - for (i = 63; i >= 32; --i) { - carry = 0; - for (j = i - 32, k = i - 12; j < k; ++j) { - x[j] += carry - 16 * x[i] * L[j - (i - 32)]; - carry = (x[j] + 128) >> 8; - x[j] -= carry * 256; - } - x[j] += carry; - x[i] = 0; - } - carry = 0; - for (j = 0; j < 32; j++) { - x[j] += carry - (x[31] >> 4) * L[j]; - carry = x[j] >> 8; - x[j] &= 255; - } - for (j = 0; j < 32; j++) x[j] -= carry * L[j]; - for (i = 0; i < 32; i++) { - x[i+1] += x[i] >> 8; - r[i] = x[i] & 255; - } -} - -function reduce(r) { - var x = new Float64Array(64), i; - for (i = 0; i < 64; i++) x[i] = r[i]; - for (i = 0; i < 64; i++) r[i] = 0; - modL(r, x); -} - -// Note: difference from C - smlen returned, not passed as argument. -function crypto_sign(sm, m, n, sk) { - var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); - var i, j, x = new Float64Array(64); - var p = [gf(), gf(), gf(), gf()]; - - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - var smlen = n + 64; - for (i = 0; i < n; i++) sm[64 + i] = m[i]; - for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; - - crypto_hash(r, sm.subarray(32), n+32); - reduce(r); - scalarbase(p, r); - pack(sm, p); - - for (i = 32; i < 64; i++) sm[i] = sk[i]; - crypto_hash(h, sm, n + 64); - reduce(h); - - for (i = 0; i < 64; i++) x[i] = 0; - for (i = 0; i < 32; i++) x[i] = r[i]; - for (i = 0; i < 32; i++) { - for (j = 0; j < 32; j++) { - x[i+j] += h[i] * d[j]; - } - } - - modL(sm.subarray(32), x); - return smlen; -} - -function unpackneg(r, p) { - var t = gf(), chk = gf(), num = gf(), - den = gf(), den2 = gf(), den4 = gf(), - den6 = gf(); - - set25519(r[2], gf1); - unpack25519(r[1], p); - S(num, r[1]); - M(den, num, D); - Z(num, num, r[2]); - A(den, r[2], den); - - S(den2, den); - S(den4, den2); - M(den6, den4, den2); - M(t, den6, num); - M(t, t, den); - - pow2523(t, t); - M(t, t, num); - M(t, t, den); - M(t, t, den); - M(r[0], t, den); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) M(r[0], r[0], I); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) return -1; - - if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); - - M(r[3], r[0], r[1]); - return 0; -} - -function crypto_sign_open(m, sm, n, pk) { - var i, mlen; - var t = new Uint8Array(32), h = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()], - q = [gf(), gf(), gf(), gf()]; - - mlen = -1; - if (n < 64) return -1; - - if (unpackneg(q, pk)) return -1; - - for (i = 0; i < n; i++) m[i] = sm[i]; - for (i = 0; i < 32; i++) m[i+32] = pk[i]; - crypto_hash(h, m, n); - reduce(h); - scalarmult(p, q, h); - - scalarbase(q, sm.subarray(32)); - add(p, q); - pack(t, p); - - n -= 64; - if (crypto_verify_32(sm, 0, t, 0)) { - for (i = 0; i < n; i++) m[i] = 0; - return -1; - } - - for (i = 0; i < n; i++) m[i] = sm[i + 64]; - mlen = n; - return mlen; -} - -var crypto_secretbox_KEYBYTES = 32, - crypto_secretbox_NONCEBYTES = 24, - crypto_secretbox_ZEROBYTES = 32, - crypto_secretbox_BOXZEROBYTES = 16, - crypto_scalarmult_BYTES = 32, - crypto_scalarmult_SCALARBYTES = 32, - crypto_box_PUBLICKEYBYTES = 32, - crypto_box_SECRETKEYBYTES = 32, - crypto_box_BEFORENMBYTES = 32, - crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, - crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, - crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, - crypto_sign_BYTES = 64, - crypto_sign_PUBLICKEYBYTES = 32, - crypto_sign_SECRETKEYBYTES = 64, - crypto_sign_SEEDBYTES = 32, - crypto_hash_BYTES = 64; - -nacl.lowlevel = { - crypto_core_hsalsa20: crypto_core_hsalsa20, - crypto_stream_xor: crypto_stream_xor, - crypto_stream: crypto_stream, - crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, - crypto_stream_salsa20: crypto_stream_salsa20, - crypto_onetimeauth: crypto_onetimeauth, - crypto_onetimeauth_verify: crypto_onetimeauth_verify, - crypto_verify_16: crypto_verify_16, - crypto_verify_32: crypto_verify_32, - crypto_secretbox: crypto_secretbox, - crypto_secretbox_open: crypto_secretbox_open, - crypto_scalarmult: crypto_scalarmult, - crypto_scalarmult_base: crypto_scalarmult_base, - crypto_box_beforenm: crypto_box_beforenm, - crypto_box_afternm: crypto_box_afternm, - crypto_box: crypto_box, - crypto_box_open: crypto_box_open, - crypto_box_keypair: crypto_box_keypair, - crypto_hash: crypto_hash, - crypto_sign: crypto_sign, - crypto_sign_keypair: crypto_sign_keypair, - crypto_sign_open: crypto_sign_open, - - crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, - crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, - crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, - crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, - crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, - crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, - crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, - crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, - crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, - crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, - crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, - crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, - crypto_sign_BYTES: crypto_sign_BYTES, - crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, - crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, - crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, - crypto_hash_BYTES: crypto_hash_BYTES -}; - -/* High-level API */ - -function checkLengths(k, n) { - if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); - if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); -} - -function checkBoxLengths(pk, sk) { - if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); - if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); -} - -function checkArrayTypes() { - var t, i; - for (i = 0; i < arguments.length; i++) { - if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]') - throw new TypeError('unexpected type ' + t + ', use Uint8Array'); - } -} - -function cleanup(arr) { - for (var i = 0; i < arr.length; i++) arr[i] = 0; -} - -// TODO: Completely remove this in v0.15. -if (!nacl.util) { - nacl.util = {}; - nacl.util.decodeUTF8 = nacl.util.encodeUTF8 = nacl.util.encodeBase64 = nacl.util.decodeBase64 = function() { - throw new Error('nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js'); - }; -} - -nacl.randomBytes = function(n) { - var b = new Uint8Array(n); - randombytes(b, n); - return b; -}; - -nacl.secretbox = function(msg, nonce, key) { - checkArrayTypes(msg, nonce, key); - checkLengths(key, nonce); - var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); - var c = new Uint8Array(m.length); - for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; - crypto_secretbox(c, m, m.length, nonce, key); - return c.subarray(crypto_secretbox_BOXZEROBYTES); -}; - -nacl.secretbox.open = function(box, nonce, key) { - checkArrayTypes(box, nonce, key); - checkLengths(key, nonce); - var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); - var m = new Uint8Array(c.length); - for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; - if (c.length < 32) return false; - if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false; - return m.subarray(crypto_secretbox_ZEROBYTES); -}; - -nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; -nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; -nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; - -nacl.scalarMult = function(n, p) { - checkArrayTypes(n, p); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult(q, n, p); - return q; -}; - -nacl.scalarMult.base = function(n) { - checkArrayTypes(n); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult_base(q, n); - return q; -}; - -nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; -nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; - -nacl.box = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox(msg, nonce, k); -}; - -nacl.box.before = function(publicKey, secretKey) { - checkArrayTypes(publicKey, secretKey); - checkBoxLengths(publicKey, secretKey); - var k = new Uint8Array(crypto_box_BEFORENMBYTES); - crypto_box_beforenm(k, publicKey, secretKey); - return k; -}; - -nacl.box.after = nacl.secretbox; - -nacl.box.open = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox.open(msg, nonce, k); -}; - -nacl.box.open.after = nacl.secretbox.open; - -nacl.box.keyPair = function() { - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); - crypto_box_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.box.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_box_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - crypto_scalarmult_base(pk, secretKey); - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; -nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; -nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; -nacl.box.nonceLength = crypto_box_NONCEBYTES; -nacl.box.overheadLength = nacl.secretbox.overheadLength; - -nacl.sign = function(msg, secretKey) { - checkArrayTypes(msg, secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); - crypto_sign(signedMsg, msg, msg.length, secretKey); - return signedMsg; -}; - -nacl.sign.open = function(signedMsg, publicKey) { - if (arguments.length !== 2) - throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?'); - checkArrayTypes(signedMsg, publicKey); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var tmp = new Uint8Array(signedMsg.length); - var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); - if (mlen < 0) return null; - var m = new Uint8Array(mlen); - for (var i = 0; i < m.length; i++) m[i] = tmp[i]; - return m; -}; - -nacl.sign.detached = function(msg, secretKey) { - var signedMsg = nacl.sign(msg, secretKey); - var sig = new Uint8Array(crypto_sign_BYTES); - for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; - return sig; -}; - -nacl.sign.detached.verify = function(msg, sig, publicKey) { - checkArrayTypes(msg, sig, publicKey); - if (sig.length !== crypto_sign_BYTES) - throw new Error('bad signature size'); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var sm = new Uint8Array(crypto_sign_BYTES + msg.length); - var m = new Uint8Array(crypto_sign_BYTES + msg.length); - var i; - for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; - for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; - return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); -}; - -nacl.sign.keyPair = function() { - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - crypto_sign_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.sign.keyPair.fromSeed = function(seed) { - checkArrayTypes(seed); - if (seed.length !== crypto_sign_SEEDBYTES) - throw new Error('bad seed size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - for (var i = 0; i < 32; i++) sk[i] = seed[i]; - crypto_sign_keypair(pk, sk, true); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; -nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; -nacl.sign.seedLength = crypto_sign_SEEDBYTES; -nacl.sign.signatureLength = crypto_sign_BYTES; - -nacl.hash = function(msg) { - checkArrayTypes(msg); - var h = new Uint8Array(crypto_hash_BYTES); - crypto_hash(h, msg, msg.length); - return h; -}; - -nacl.hash.hashLength = crypto_hash_BYTES; - -nacl.verify = function(x, y) { - checkArrayTypes(x, y); - // Zero length arguments are considered not equal. - if (x.length === 0 || y.length === 0) return false; - if (x.length !== y.length) return false; - return (vn(x, 0, y, 0, x.length) === 0) ? true : false; -}; - -nacl.setPRNG = function(fn) { - randombytes = fn; -}; - -(function() { - // Initialize PRNG if environment provides CSPRNG. - // If not, methods calling randombytes will throw. - var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null; - if (crypto && crypto.getRandomValues) { - // Browsers. - var QUOTA = 65536; - nacl.setPRNG(function(x, n) { - var i, v = new Uint8Array(n); - for (i = 0; i < n; i += QUOTA) { - crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA))); - } - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } else if (typeof require !== 'undefined') { - // Node.js. - crypto = require('crypto'); - if (crypto && crypto.randomBytes) { - nacl.setPRNG(function(x, n) { - var i, v = crypto.randomBytes(n); - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } - } -})(); - -})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {})); diff --git a/node_modules/tweetnacl/nacl.min.js b/node_modules/tweetnacl/nacl.min.js deleted file mode 100644 index 4484974..0000000 --- a/node_modules/tweetnacl/nacl.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(r){"use strict";function n(r,n){return r<>>32-n}function e(r,n){var e=255&r[n+3];return e=e<<8|255&r[n+2],e=e<<8|255&r[n+1],e<<8|255&r[n+0]}function t(r,n){var e=r[n]<<24|r[n+1]<<16|r[n+2]<<8|r[n+3],t=r[n+4]<<24|r[n+5]<<16|r[n+6]<<8|r[n+7];return new sr(e,t)}function o(r,n,e){var t;for(t=0;t<4;t++)r[n+t]=255&e,e>>>=8}function i(r,n,e){r[n]=e.hi>>24&255,r[n+1]=e.hi>>16&255,r[n+2]=e.hi>>8&255,r[n+3]=255&e.hi,r[n+4]=e.lo>>24&255,r[n+5]=e.lo>>16&255,r[n+6]=e.lo>>8&255,r[n+7]=255&e.lo}function a(r,n,e,t,o){var i,a=0;for(i=0;i>>8)-1}function f(r,n,e,t){return a(r,n,e,t,16)}function u(r,n,e,t){return a(r,n,e,t,32)}function c(r,t,i,a,f){var u,c,w,y=new Uint32Array(16),l=new Uint32Array(16),s=new Uint32Array(16),h=new Uint32Array(4);for(u=0;u<4;u++)l[5*u]=e(a,4*u),l[1+u]=e(i,4*u),l[6+u]=e(t,4*u),l[11+u]=e(i,16+4*u);for(u=0;u<16;u++)s[u]=l[u];for(u=0;u<20;u++){for(c=0;c<4;c++){for(w=0;w<4;w++)h[w]=l[(5*c+4*w)%16];for(h[1]^=n(h[0]+h[3]|0,7),h[2]^=n(h[1]+h[0]|0,9),h[3]^=n(h[2]+h[1]|0,13),h[0]^=n(h[3]+h[2]|0,18),w=0;w<4;w++)y[4*c+(c+w)%4]=h[w]}for(w=0;w<16;w++)l[w]=y[w]}if(f){for(u=0;u<16;u++)l[u]=l[u]+s[u]|0;for(u=0;u<4;u++)l[5*u]=l[5*u]-e(a,4*u)|0,l[6+u]=l[6+u]-e(t,4*u)|0;for(u=0;u<4;u++)o(r,4*u,l[5*u]),o(r,16+4*u,l[6+u])}else for(u=0;u<16;u++)o(r,4*u,l[u]+s[u]|0)}function w(r,n,e,t){return c(r,n,e,t,!1),0}function y(r,n,e,t){return c(r,n,e,t,!0),0}function l(r,n,e,t,o,i,a){var f,u,c=new Uint8Array(16),y=new Uint8Array(64);if(!o)return 0;for(u=0;u<16;u++)c[u]=0;for(u=0;u<8;u++)c[u]=i[u];for(;o>=64;){for(w(y,c,a,Br),u=0;u<64;u++)r[n+u]=(e?e[t+u]:0)^y[u];for(f=1,u=8;u<16;u++)f=f+(255&c[u])|0,c[u]=255&f,f>>>=8;o-=64,n+=64,e&&(t+=64)}if(o>0)for(w(y,c,a,Br),u=0;u>>=8}function b(r,n,e,t,o,i){var a,f,u,c,w=new Uint32Array(17),y=new Uint32Array(17),l=new Uint32Array(17),s=new Uint32Array(17),h=new Uint32Array(17);for(u=0;u<17;u++)y[u]=l[u]=0;for(u=0;u<16;u++)y[u]=i[u];for(y[3]&=15,y[4]&=252,y[7]&=15,y[8]&=252,y[11]&=15,y[12]&=252,y[15]&=15;o>0;){for(u=0;u<17;u++)s[u]=0;for(u=0;u<16&&u>>=8;for(c=c+l[16]|0,l[16]=3&c,c=5*(c>>>2)|0,u=0;u<16;u++)c=c+l[u]|0,l[u]=255&c,c>>>=8;c=c+l[16]|0,l[16]=c}for(u=0;u<17;u++)h[u]=l[u];for(v(l,Sr),a=0|-(l[16]>>>7),u=0;u<17;u++)l[u]^=a&(h[u]^l[u]);for(u=0;u<16;u++)s[u]=i[u+16];for(s[16]=0,v(l,s),u=0;u<16;u++)r[n+u]=l[u];return 0}function p(r,n,e,t,o,i){var a=new Uint8Array(16);return b(a,0,e,t,o,i),f(r,n,a,0)}function _(r,n,e,t,o){var i;if(e<32)return-1;for(g(r,0,n,0,e,t,o),b(r,16,r,32,e-32,r),i=0;i<16;i++)r[i]=0;return 0}function A(r,n,e,t,o){var i,a=new Uint8Array(32);if(e<32)return-1;if(h(a,0,32,t,o),0!==p(n,16,n,32,e-32,a))return-1;for(g(r,0,n,0,e,t,o),i=0;i<32;i++)r[i]=0;return 0}function U(r,n){var e;for(e=0;e<16;e++)r[e]=0|n[e]}function E(r){var n,e;for(e=0;e<16;e++)r[e]+=65536,n=Math.floor(r[e]/65536),r[(e+1)*(e<15?1:0)]+=n-1+37*(n-1)*(15===e?1:0),r[e]-=65536*n}function d(r,n,e){for(var t,o=~(e-1),i=0;i<16;i++)t=o&(r[i]^n[i]),r[i]^=t,n[i]^=t}function x(r,n){var e,t,o,i=hr(),a=hr();for(e=0;e<16;e++)a[e]=n[e];for(E(a),E(a),E(a),t=0;t<2;t++){for(i[0]=a[0]-65517,e=1;e<15;e++)i[e]=a[e]-65535-(i[e-1]>>16&1),i[e-1]&=65535;i[15]=a[15]-32767-(i[14]>>16&1),o=i[15]>>16&1,i[14]&=65535,d(a,i,1-o)}for(e=0;e<16;e++)r[2*e]=255&a[e],r[2*e+1]=a[e]>>8}function m(r,n){var e=new Uint8Array(32),t=new Uint8Array(32);return x(e,r),x(t,n),u(e,0,t,0)}function B(r){var n=new Uint8Array(32);return x(n,r),1&n[0]}function S(r,n){var e;for(e=0;e<16;e++)r[e]=n[2*e]+(n[2*e+1]<<8);r[15]&=32767}function K(r,n,e){var t;for(t=0;t<16;t++)r[t]=n[t]+e[t]|0}function T(r,n,e){var t;for(t=0;t<16;t++)r[t]=n[t]-e[t]|0}function Y(r,n,e){var t,o,i=new Float64Array(31);for(t=0;t<31;t++)i[t]=0;for(t=0;t<16;t++)for(o=0;o<16;o++)i[t+o]+=n[t]*e[o];for(t=0;t<15;t++)i[t]+=38*i[t+16];for(t=0;t<16;t++)r[t]=i[t];E(r),E(r)}function L(r,n){Y(r,n,n)}function k(r,n){var e,t=hr();for(e=0;e<16;e++)t[e]=n[e];for(e=253;e>=0;e--)L(t,t),2!==e&&4!==e&&Y(t,t,n);for(e=0;e<16;e++)r[e]=t[e]}function z(r,n){var e,t=hr();for(e=0;e<16;e++)t[e]=n[e];for(e=250;e>=0;e--)L(t,t),1!==e&&Y(t,t,n);for(e=0;e<16;e++)r[e]=t[e]}function R(r,n,e){var t,o,i=new Uint8Array(32),a=new Float64Array(80),f=hr(),u=hr(),c=hr(),w=hr(),y=hr(),l=hr();for(o=0;o<31;o++)i[o]=n[o];for(i[31]=127&n[31]|64,i[0]&=248,S(a,e),o=0;o<16;o++)u[o]=a[o],w[o]=f[o]=c[o]=0;for(f[0]=w[0]=1,o=254;o>=0;--o)t=i[o>>>3]>>>(7&o)&1,d(f,u,t),d(c,w,t),K(y,f,c),T(f,f,c),K(c,u,w),T(u,u,w),L(w,y),L(l,f),Y(f,c,f),Y(c,u,y),K(y,f,c),T(f,f,c),L(u,f),T(c,w,l),Y(f,c,Ar),K(f,f,w),Y(c,c,f),Y(f,w,l),Y(w,u,a),L(u,y),d(f,u,t),d(c,w,t);for(o=0;o<16;o++)a[o+16]=f[o],a[o+32]=c[o],a[o+48]=u[o],a[o+64]=w[o];var s=a.subarray(32),h=a.subarray(16);return k(s,s),Y(h,h,s),x(r,h),0}function P(r,n){return R(r,n,br)}function O(r,n){return gr(n,32),P(r,n)}function F(r,n,e){var t=new Uint8Array(32);return R(t,e,n),y(r,vr,t,Br)}function N(r,n,e,t,o,i){var a=new Uint8Array(32);return F(a,o,i),Kr(r,n,e,t,a)}function C(r,n,e,t,o,i){var a=new Uint8Array(32);return F(a,o,i),Tr(r,n,e,t,a)}function M(){var r,n,e,t=0,o=0,i=0,a=0,f=65535;for(e=0;e>>16,i+=n&f,a+=n>>>16;return o+=t>>>16,i+=o>>>16,a+=i>>>16,new sr(i&f|a<<16,t&f|o<<16)}function G(r,n){return new sr(r.hi>>>n,r.lo>>>n|r.hi<<32-n)}function Z(){var r,n=0,e=0;for(r=0;r>>n|r.lo<>>n|r.hi<>>n|r.hi<>>n|r.lo<=128;){for(a=0;a<16;a++)y[a]=t(n,8*a+l);for(a=0;a<80;a++){for(f=0;f<8;f++)c[f]=w[f];for(o=M(w[7],X(w[4]),q(w[4],w[5],w[6]),Yr[a],y[a%16]),c[7]=M(o,V(w[0]),I(w[0],w[1],w[2])),c[3]=M(c[3],o),f=0;f<8;f++)w[(f+1)%8]=c[f];if(a%16===15)for(f=0;f<16;f++)y[f]=M(y[f],y[(f+9)%16],D(y[(f+1)%16]),H(y[(f+14)%16]))}for(a=0;a<8;a++)w[a]=M(w[a],u[a]),u[a]=w[a];l+=128,e-=128}for(a=0;a<8;a++)i(r,8*a,u[a]);return e}function Q(r,n,e){var t,o=new Uint8Array(64),a=new Uint8Array(256),f=e;for(t=0;t<64;t++)o[t]=Lr[t];for(J(o,n,e),e%=128,t=0;t<256;t++)a[t]=0;for(t=0;t=0;--o)t=e[o/8|0]>>(7&o)&1,$(r,n,t),W(n,r),W(r,r),$(r,n,t)}function er(r,n){var e=[hr(),hr(),hr(),hr()];U(e[0],dr),U(e[1],xr),U(e[2],_r),Y(e[3],dr,xr),nr(r,e,n)}function tr(r,n,e){var t,o=new Uint8Array(64),i=[hr(),hr(),hr(),hr()];for(e||gr(n,32),Q(o,n,32),o[0]&=248,o[31]&=127,o[31]|=64,er(i,o),rr(r,i),t=0;t<32;t++)n[t+32]=r[t];return 0}function or(r,n){var e,t,o,i;for(t=63;t>=32;--t){for(e=0,o=t-32,i=t-12;o>8,n[o]-=256*e;n[o]+=e,n[t]=0}for(e=0,o=0;o<32;o++)n[o]+=e-(n[31]>>4)*kr[o],e=n[o]>>8,n[o]&=255;for(o=0;o<32;o++)n[o]-=e*kr[o];for(t=0;t<32;t++)n[t+1]+=n[t]>>8,r[t]=255&n[t]}function ir(r){var n,e=new Float64Array(64);for(n=0;n<64;n++)e[n]=r[n];for(n=0;n<64;n++)r[n]=0;or(r,e)}function ar(r,n,e,t){var o,i,a=new Uint8Array(64),f=new Uint8Array(64),u=new Uint8Array(64),c=new Float64Array(64),w=[hr(),hr(),hr(),hr()];Q(a,t,32),a[0]&=248,a[31]&=127,a[31]|=64;var y=e+64;for(o=0;o>7&&T(r[0],pr,r[0]),Y(r[3],r[0],r[1]),0)}function ur(r,n,e,t){var o,i,a=new Uint8Array(32),f=new Uint8Array(64),c=[hr(),hr(),hr(),hr()],w=[hr(),hr(),hr(),hr()];if(i=-1,e<64)return-1;if(fr(w,t))return-1;for(o=0;o=0},r.sign.keyPair=function(){var r=new Uint8Array(Vr),n=new Uint8Array(Xr);return tr(r,n),{publicKey:r,secretKey:n}},r.sign.keyPair.fromSecretKey=function(r){if(yr(r),r.length!==Xr)throw new Error("bad secret key size");for(var n=new Uint8Array(Vr),e=0;e/dev/null && browserify test/browser/init.js test/*.quick.js | uglifyjs -c -m -o test/browser/_bundle-quick.js 2>/dev/null", - "lint": "eslint nacl.js nacl-fast.js test/*.js test/benchmark/*.js", - "test": "npm run test-node-all && npm run test-browser", - "test-browser": "NACL_SRC=${NACL_SRC:='nacl.min.js'} && npm run build-test-browser && cat $NACL_SRC test/browser/_bundle.js | tape-run | faucet", - "test-node": "tape test/*.js | faucet", - "test-node-all": "make -C test/c && tape test/*.js test/c/*.js | faucet" - }, - "types": "nacl.d.ts", - "version": "0.14.5" -} diff --git a/node_modules/uri-js/README.md b/node_modules/uri-js/README.md deleted file mode 100644 index 3f225e7..0000000 --- a/node_modules/uri-js/README.md +++ /dev/null @@ -1,199 +0,0 @@ -# URI.js - -URI.js is an [RFC 3986](http://www.ietf.org/rfc/rfc3986.txt) compliant, scheme extendable URI parsing/validating/resolving library for all JavaScript environments (browsers, Node.js, etc). -It is also compliant with the IRI ([RFC 3987](http://www.ietf.org/rfc/rfc3987.txt)), IDNA ([RFC 5890](http://www.ietf.org/rfc/rfc5890.txt)), IPv6 Address ([RFC 5952](http://www.ietf.org/rfc/rfc5952.txt)), IPv6 Zone Identifier ([RFC 6874](http://www.ietf.org/rfc/rfc6874.txt)) specifications. - -URI.js has an extensive test suite, and works in all (Node.js, web) environments. It weighs in at 6.2kb (gzipped, 16kb deflated). - -## API - -### Parsing - - URI.parse("uri://user:pass@example.com:123/one/two.three?q1=a1&q2=a2#body"); - //returns: - //{ - // scheme : "uri", - // userinfo : "user:pass", - // host : "example.com", - // port : 123, - // path : "/one/two.three", - // query : "q1=a1&q2=a2", - // fragment : "body" - //} - -### Serializing - - URI.serialize({scheme : "http", host : "example.com", fragment : "footer"}) === "http://example.com/#footer" - -### Resolving - - URI.resolve("uri://a/b/c/d?q", "../../g") === "uri://a/g" - -### Normalizing - - URI.normalize("HTTP://ABC.com:80/%7Esmith/home.html") === "http://abc.com/~smith/home.html" - -### Comparison - - URI.equal("example://a/b/c/%7Bfoo%7D", "eXAMPLE://a/./b/../b/%63/%7bfoo%7d") === true - -### IP Support - - //IPv4 normalization - URI.normalize("//192.068.001.000") === "//192.68.1.0" - - //IPv6 normalization - URI.normalize("//[2001:0:0DB8::0:0001]") === "//[2001:0:db8::1]" - - //IPv6 zone identifier support - URI.parse("//[2001:db8::7%25en1]"); - //returns: - //{ - // host : "2001:db8::7%en1" - //} - -### IRI Support - - //convert IRI to URI - URI.serialize(URI.parse("http://examplé.org/rosé")) === "http://xn--exampl-gva.org/ros%C3%A9" - //convert URI to IRI - URI.serialize(URI.parse("http://xn--exampl-gva.org/ros%C3%A9"), {iri:true}) === "http://examplé.org/rosé" - -### Options - -All of the above functions can accept an additional options argument that is an object that can contain one or more of the following properties: - -* `scheme` (string) - - Indicates the scheme that the URI should be treated as, overriding the URI's normal scheme parsing behavior. - -* `reference` (string) - - If set to `"suffix"`, it indicates that the URI is in the suffix format, and the validator will use the option's `scheme` property to determine the URI's scheme. - -* `tolerant` (boolean, false) - - If set to `true`, the parser will relax URI resolving rules. - -* `absolutePath` (boolean, false) - - If set to `true`, the serializer will not resolve a relative `path` component. - -* `iri` (boolean, false) - - If set to `true`, the serializer will unescape non-ASCII characters as per [RFC 3987](http://www.ietf.org/rfc/rfc3987.txt). - -* `unicodeSupport` (boolean, false) - - If set to `true`, the parser will unescape non-ASCII characters in the parsed output as per [RFC 3987](http://www.ietf.org/rfc/rfc3987.txt). - -* `domainHost` (boolean, false) - - If set to `true`, the library will treat the `host` component as a domain name, and convert IDNs (International Domain Names) as per [RFC 5891](http://www.ietf.org/rfc/rfc5891.txt). - -## Scheme Extendable - -URI.js supports inserting custom [scheme](http://en.wikipedia.org/wiki/URI_scheme) dependent processing rules. Currently, URI.js has built in support for the following schemes: - -* http \[[RFC 2616](http://www.ietf.org/rfc/rfc2616.txt)\] -* https \[[RFC 2818](http://www.ietf.org/rfc/rfc2818.txt)\] -* mailto \[[RFC 6068](http://www.ietf.org/rfc/rfc6068.txt)\] -* urn \[[RFC 2141](http://www.ietf.org/rfc/rfc2141.txt)\] -* urn:uuid \[[RFC 4122](http://www.ietf.org/rfc/rfc4122.txt)\] - -### HTTP Support - - URI.equal("HTTP://ABC.COM:80", "http://abc.com/") === true - -### Mailto Support - - URI.parse("mailto:alpha@example.com,bravo@example.com?subject=SUBSCRIBE&body=Sign%20me%20up!"); - //returns: - //{ - // scheme : "mailto", - // to : ["alpha@example.com", "bravo@example.com"], - // subject : "SUBSCRIBE", - // body : "Sign me up!" - //} - - URI.serialize({ - scheme : "mailto", - to : ["alpha@example.com"], - subject : "REMOVE", - body : "Please remove me", - headers : { - cc : "charlie@example.com" - } - }) === "mailto:alpha@example.com?cc=charlie@example.com&subject=REMOVE&body=Please%20remove%20me" - -### URN Support - - URI.parse("urn:example:foo"); - //returns: - //{ - // scheme : "urn", - // nid : "example", - // nss : "foo", - //} - -#### URN UUID Support - - URI.parse("urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"); - //returns: - //{ - // scheme : "urn", - // nid : "example", - // uuid : "f81d4fae-7dec-11d0-a765-00a0c91e6bf6", - //} - -## Usage - -To load in a browser, use the following tag: - - - -To load in a CommonJS (Node.js) environment, first install with npm by running on the command line: - - npm install uri-js - -Then, in your code, load it using: - - const URI = require("uri-js"); - -If you are writing your code in ES6+ (ESNEXT) or TypeScript, you would load it using: - - import * as URI from "uri-js"; - -Or you can load just what you need using named exports: - - import { parse, serialize, resolve, resolveComponents, normalize, equal, removeDotSegments, pctEncChar, pctDecChars, escapeComponent, unescapeComponent } from "uri-js"; - -## Breaking changes - -### Breaking changes from 3.x - -URN parsing has been completely changed to better align with the specification. Scheme is now always `urn`, but has two new properties: `nid` which contains the Namspace Identifier, and `nss` which contains the Namespace Specific String. The `nss` property will be removed by higher order scheme handlers, such as the UUID URN scheme handler. - -The UUID of a URN can now be found in the `uuid` property. - -### Breaking changes from 2.x - -URI validation has been removed as it was slow, exposed a vulnerabilty, and was generally not useful. - -### Breaking changes from 1.x - -The `errors` array on parsed components is now an `error` string. - -## License ([Simplified BSD](http://en.wikipedia.org/wiki/BSD_licenses#2-clause)) - -Copyright 2011 Gary Court. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY GARY COURT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of Gary Court. diff --git a/node_modules/uri-js/bower.json b/node_modules/uri-js/bower.json deleted file mode 100644 index 7a40440..0000000 --- a/node_modules/uri-js/bower.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "uri-js", - "description": "An RFC 3986/3987 compliant, scheme extendable URI/IRI parsing/validating/resolving library for JavaScript.", - "main": "dist/es5/uri.all.js", - "moduleType": [ - "globals", - "amd", - "node", - "es6" - ], - "authors": [ - "Gary Court " - ], - "license": "BSD-2-Clause", - "keywords": [ - "URI", - "IRI", - "IDN", - "URN", - "HTTP", - "HTTPS", - "MAILTO", - "RFC3986", - "RFC3987", - "RFC5891", - "RFC2616", - "RFC2818", - "RFC2141", - "RFC4122", - "RFC6068" - ], - "homepage": "https://github.com/garycourt/uri-js", - "repository": { - "type": "git", - "url": "http://github.com/garycourt/uri-js" - }, - "dependencies": { - "punycode": "^2.1.0" - }, - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/node_modules/uri-js/dist/es5/uri.all.d.ts b/node_modules/uri-js/dist/es5/uri.all.d.ts deleted file mode 100644 index 320f534..0000000 --- a/node_modules/uri-js/dist/es5/uri.all.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -export interface URIComponents { - scheme?: string; - userinfo?: string; - host?: string; - port?: number | string; - path?: string; - query?: string; - fragment?: string; - reference?: string; - error?: string; -} -export interface URIOptions { - scheme?: string; - reference?: string; - tolerant?: boolean; - absolutePath?: boolean; - iri?: boolean; - unicodeSupport?: boolean; - domainHost?: boolean; -} -export interface URISchemeHandler { - scheme: string; - parse(components: ParentComponents, options: Options): Components; - serialize(components: Components, options: Options): ParentComponents; - unicodeSupport?: boolean; - domainHost?: boolean; - absolutePath?: boolean; -} -export interface URIRegExps { - NOT_SCHEME: RegExp; - NOT_USERINFO: RegExp; - NOT_HOST: RegExp; - NOT_PATH: RegExp; - NOT_PATH_NOSCHEME: RegExp; - NOT_QUERY: RegExp; - NOT_FRAGMENT: RegExp; - ESCAPE: RegExp; - UNRESERVED: RegExp; - OTHER_CHARS: RegExp; - PCT_ENCODED: RegExp; - IPV4ADDRESS: RegExp; - IPV6ADDRESS: RegExp; -} -export declare const SCHEMES: { - [scheme: string]: URISchemeHandler; -}; -export declare function pctEncChar(chr: string): string; -export declare function pctDecChars(str: string): string; -export declare function parse(uriString: string, options?: URIOptions): URIComponents; -export declare function removeDotSegments(input: string): string; -export declare function serialize(components: URIComponents, options?: URIOptions): string; -export declare function resolveComponents(base: URIComponents, relative: URIComponents, options?: URIOptions, skipNormalization?: boolean): URIComponents; -export declare function resolve(baseURI: string, relativeURI: string, options?: URIOptions): string; -export declare function normalize(uri: string, options?: URIOptions): string; -export declare function normalize(uri: URIComponents, options?: URIOptions): URIComponents; -export declare function equal(uriA: string, uriB: string, options?: URIOptions): boolean; -export declare function equal(uriA: URIComponents, uriB: URIComponents, options?: URIOptions): boolean; -export declare function escapeComponent(str: string, options?: URIOptions): string; -export declare function unescapeComponent(str: string, options?: URIOptions): string; diff --git a/node_modules/uri-js/dist/es5/uri.all.js b/node_modules/uri-js/dist/es5/uri.all.js deleted file mode 100644 index 2df0609..0000000 --- a/node_modules/uri-js/dist/es5/uri.all.js +++ /dev/null @@ -1,1389 +0,0 @@ -/** @license URI.js v4.2.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (factory((global.URI = global.URI || {}))); -}(this, (function (exports) { 'use strict'; - -function merge() { - for (var _len = arguments.length, sets = Array(_len), _key = 0; _key < _len; _key++) { - sets[_key] = arguments[_key]; - } - - if (sets.length > 1) { - sets[0] = sets[0].slice(0, -1); - var xl = sets.length - 1; - for (var x = 1; x < xl; ++x) { - sets[x] = sets[x].slice(1, -1); - } - sets[xl] = sets[xl].slice(1); - return sets.join(''); - } else { - return sets[0]; - } -} -function subexp(str) { - return "(?:" + str + ")"; -} -function typeOf(o) { - return o === undefined ? "undefined" : o === null ? "null" : Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase(); -} -function toUpperCase(str) { - return str.toUpperCase(); -} -function toArray(obj) { - return obj !== undefined && obj !== null ? obj instanceof Array ? obj : typeof obj.length !== "number" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj) : []; -} -function assign(target, source) { - var obj = target; - if (source) { - for (var key in source) { - obj[key] = source[key]; - } - } - return obj; -} - -function buildExps(isIRI) { - var ALPHA$$ = "[A-Za-z]", - CR$ = "[\\x0D]", - DIGIT$$ = "[0-9]", - DQUOTE$$ = "[\\x22]", - HEXDIG$$ = merge(DIGIT$$, "[A-Fa-f]"), - //case-insensitive - LF$$ = "[\\x0A]", - SP$$ = "[\\x20]", - PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)), - //expanded - GEN_DELIMS$$ = "[\\:\\/\\?\\#\\[\\]\\@]", - SUB_DELIMS$$ = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]", - RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$), - UCSCHAR$$ = isIRI ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]", - //subset, excludes bidi control characters - IPRIVATE$$ = isIRI ? "[\\uE000-\\uF8FF]" : "[]", - //subset - UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, "[\\-\\.\\_\\~]", UCSCHAR$$), - SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, "[\\+\\-\\.]") + "*"), - USERINFO$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]")) + "*"), - DEC_OCTET$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("[1-9]" + DIGIT$$) + "|" + DIGIT$$), - DEC_OCTET_RELAXED$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("0?[1-9]" + DIGIT$$) + "|0?0?" + DIGIT$$), - //relaxed parsing rules - IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$), - H16$ = subexp(HEXDIG$$ + "{1,4}"), - LS32$ = subexp(subexp(H16$ + "\\:" + H16$) + "|" + IPV4ADDRESS$), - IPV6ADDRESS1$ = subexp(subexp(H16$ + "\\:") + "{6}" + LS32$), - // 6( h16 ":" ) ls32 - IPV6ADDRESS2$ = subexp("\\:\\:" + subexp(H16$ + "\\:") + "{5}" + LS32$), - // "::" 5( h16 ":" ) ls32 - IPV6ADDRESS3$ = subexp(subexp(H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{4}" + LS32$), - //[ h16 ] "::" 4( h16 ":" ) ls32 - IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,1}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{3}" + LS32$), - //[ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 - IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,2}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{2}" + LS32$), - //[ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 - IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,3}" + H16$) + "?\\:\\:" + H16$ + "\\:" + LS32$), - //[ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 - IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,4}" + H16$) + "?\\:\\:" + LS32$), - //[ *4( h16 ":" ) h16 ] "::" ls32 - IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,5}" + H16$) + "?\\:\\:" + H16$), - //[ *5( h16 ":" ) h16 ] "::" h16 - IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,6}" + H16$) + "?\\:\\:"), - //[ *6( h16 ":" ) h16 ] "::" - IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join("|")), - ZONEID$ = subexp(subexp(UNRESERVED$$ + "|" + PCT_ENCODED$) + "+"), - //RFC 6874 - IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + "\\%25" + ZONEID$), - //RFC 6874 - IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + ZONEID$), - //RFC 6874, with relaxed parsing rules - IPVFUTURE$ = subexp("[vV]" + HEXDIG$$ + "+\\." + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]") + "+"), - IP_LITERAL$ = subexp("\\[" + subexp(IPV6ADDRZ_RELAXED$ + "|" + IPV6ADDRESS$ + "|" + IPVFUTURE$) + "\\]"), - //RFC 6874 - REG_NAME$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$)) + "*"), - HOST$ = subexp(IP_LITERAL$ + "|" + IPV4ADDRESS$ + "(?!" + REG_NAME$ + ")" + "|" + REG_NAME$), - PORT$ = subexp(DIGIT$$ + "*"), - AUTHORITY$ = subexp(subexp(USERINFO$ + "@") + "?" + HOST$ + subexp("\\:" + PORT$) + "?"), - PCHAR$ = subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@]")), - SEGMENT$ = subexp(PCHAR$ + "*"), - SEGMENT_NZ$ = subexp(PCHAR$ + "+"), - SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\@]")) + "+"), - PATH_ABEMPTY$ = subexp(subexp("\\/" + SEGMENT$) + "*"), - PATH_ABSOLUTE$ = subexp("\\/" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + "?"), - //simplified - PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), - //simplified - PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), - //simplified - PATH_EMPTY$ = "(?!" + PCHAR$ + ")", - PATH$ = subexp(PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), - QUERY$ = subexp(subexp(PCHAR$ + "|" + merge("[\\/\\?]", IPRIVATE$$)) + "*"), - FRAGMENT$ = subexp(subexp(PCHAR$ + "|[\\/\\?]") + "*"), - HIER_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), - URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), - RELATIVE_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$), - RELATIVE$ = subexp(RELATIVE_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), - URI_REFERENCE$ = subexp(URI$ + "|" + RELATIVE$), - ABSOLUTE_URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?"), - GENERIC_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", - RELATIVE_REF$ = "^(){0}" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", - ABSOLUTE_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?$", - SAMEDOC_REF$ = "^" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", - AUTHORITY_REF$ = "^" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?$"; - return { - NOT_SCHEME: new RegExp(merge("[^]", ALPHA$$, DIGIT$$, "[\\+\\-\\.]"), "g"), - NOT_USERINFO: new RegExp(merge("[^\\%\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_HOST: new RegExp(merge("[^\\%\\[\\]\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_PATH: new RegExp(merge("[^\\%\\/\\:\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_PATH_NOSCHEME: new RegExp(merge("[^\\%\\/\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_QUERY: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]", IPRIVATE$$), "g"), - NOT_FRAGMENT: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]"), "g"), - ESCAPE: new RegExp(merge("[^]", UNRESERVED$$, SUB_DELIMS$$), "g"), - UNRESERVED: new RegExp(UNRESERVED$$, "g"), - OTHER_CHARS: new RegExp(merge("[^\\%]", UNRESERVED$$, RESERVED$$), "g"), - PCT_ENCODED: new RegExp(PCT_ENCODED$, "g"), - IPV4ADDRESS: new RegExp("^(" + IPV4ADDRESS$ + ")$"), - IPV6ADDRESS: new RegExp("^\\[?(" + IPV6ADDRESS$ + ")" + subexp(subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + "(" + ZONEID$ + ")") + "?\\]?$") //RFC 6874, with relaxed parsing rules - }; -} -var URI_PROTOCOL = buildExps(false); - -var IRI_PROTOCOL = buildExps(true); - -var slicedToArray = function () { - function sliceIterator(arr, i) { - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"]) _i["return"](); - } finally { - if (_d) throw _e; - } - } - - return _arr; - } - - return function (arr, i) { - if (Array.isArray(arr)) { - return arr; - } else if (Symbol.iterator in Object(arr)) { - return sliceIterator(arr, i); - } else { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); - } - }; -}(); - - - - - - - - - - - - - -var toConsumableArray = function (arr) { - if (Array.isArray(arr)) { - for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; - - return arr2; - } else { - return Array.from(arr); - } -}; - -/** Highest positive signed 32-bit float value */ - -var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 - -/** Bootstring parameters */ -var base = 36; -var tMin = 1; -var tMax = 26; -var skew = 38; -var damp = 700; -var initialBias = 72; -var initialN = 128; // 0x80 -var delimiter = '-'; // '\x2D' - -/** Regular expressions */ -var regexPunycode = /^xn--/; -var regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars -var regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators - -/** Error messages */ -var errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' -}; - -/** Convenience shortcuts */ -var baseMinusTMin = base - tMin; -var floor = Math.floor; -var stringFromCharCode = String.fromCharCode; - -/*--------------------------------------------------------------------------*/ - -/** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ -function error$1(type) { - throw new RangeError(errors[type]); -} - -/** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ -function map(array, fn) { - var result = []; - var length = array.length; - while (length--) { - result[length] = fn(array[length]); - } - return result; -} - -/** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ -function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; -} - -/** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ -function ucs2decode(string) { - var output = []; - var counter = 0; - var length = string.length; - while (counter < length) { - var value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // It's a high surrogate, and there is a next character. - var extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { - // Low surrogate. - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // It's an unmatched surrogate; only append this code unit, in case the - // next code unit is the high surrogate of a surrogate pair. - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; -} - -/** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ -var ucs2encode = function ucs2encode(array) { - return String.fromCodePoint.apply(String, toConsumableArray(array)); -}; - -/** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ -var basicToDigit = function basicToDigit(codePoint) { - if (codePoint - 0x30 < 0x0A) { - return codePoint - 0x16; - } - if (codePoint - 0x41 < 0x1A) { - return codePoint - 0x41; - } - if (codePoint - 0x61 < 0x1A) { - return codePoint - 0x61; - } - return base; -}; - -/** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ -var digitToBasic = function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); -}; - -/** - * Bias adaptation function as per section 3.4 of RFC 3492. - * https://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ -var adapt = function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); -}; - -/** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ -var decode = function decode(input) { - // Don't use UCS-2. - var output = []; - var inputLength = input.length; - var i = 0; - var n = initialN; - var bias = initialBias; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - var basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (var j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error$1('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (var index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{ - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - var oldi = i; - for (var w = 1, k = base;; /* no condition */k += base) { - - if (index >= inputLength) { - error$1('invalid-input'); - } - - var digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error$1('overflow'); - } - - i += digit * w; - var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; - - if (digit < t) { - break; - } - - var baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error$1('overflow'); - } - - w *= baseMinusT; - } - - var out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error$1('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output. - output.splice(i++, 0, n); - } - - return String.fromCodePoint.apply(String, output); -}; - -/** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ -var encode = function encode(input) { - var output = []; - - // Convert the input in UCS-2 to an array of Unicode code points. - input = ucs2decode(input); - - // Cache the length. - var inputLength = input.length; - - // Initialize the state. - var n = initialN; - var delta = 0; - var bias = initialBias; - - // Handle the basic code points. - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = input[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var _currentValue2 = _step.value; - - if (_currentValue2 < 0x80) { - output.push(stringFromCharCode(_currentValue2)); - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - var basicLength = output.length; - var handledCPCount = basicLength; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string with a delimiter unless it's empty. - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - var m = maxInt; - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = input[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var currentValue = _step2.value; - - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow. - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - var handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error$1('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - var _iteratorNormalCompletion3 = true; - var _didIteratorError3 = false; - var _iteratorError3 = undefined; - - try { - for (var _iterator3 = input[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var _currentValue = _step3.value; - - if (_currentValue < n && ++delta > maxInt) { - error$1('overflow'); - } - if (_currentValue == n) { - // Represent delta as a generalized variable-length integer. - var q = delta; - for (var k = base;; /* no condition */k += base) { - var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; - if (q < t) { - break; - } - var qMinusT = q - t; - var baseMinusT = base - t; - output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - } catch (err) { - _didIteratorError3 = true; - _iteratorError3 = err; - } finally { - try { - if (!_iteratorNormalCompletion3 && _iterator3.return) { - _iterator3.return(); - } - } finally { - if (_didIteratorError3) { - throw _iteratorError3; - } - } - } - - ++delta; - ++n; - } - return output.join(''); -}; - -/** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ -var toUnicode = function toUnicode(input) { - return mapDomain(input, function (string) { - return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string; - }); -}; - -/** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ -var toASCII = function toASCII(input) { - return mapDomain(input, function (string) { - return regexNonASCII.test(string) ? 'xn--' + encode(string) : string; - }); -}; - -/*--------------------------------------------------------------------------*/ - -/** Define the public API */ -var punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '2.1.0', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode -}; - -/** - * URI.js - * - * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript. - * @author Gary Court - * @see http://github.com/garycourt/uri-js - */ -/** - * Copyright 2011 Gary Court. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of Gary Court. - */ -var SCHEMES = {}; -function pctEncChar(chr) { - var c = chr.charCodeAt(0); - var e = void 0; - if (c < 16) e = "%0" + c.toString(16).toUpperCase();else if (c < 128) e = "%" + c.toString(16).toUpperCase();else if (c < 2048) e = "%" + (c >> 6 | 192).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase();else e = "%" + (c >> 12 | 224).toString(16).toUpperCase() + "%" + (c >> 6 & 63 | 128).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase(); - return e; -} -function pctDecChars(str) { - var newStr = ""; - var i = 0; - var il = str.length; - while (i < il) { - var c = parseInt(str.substr(i + 1, 2), 16); - if (c < 128) { - newStr += String.fromCharCode(c); - i += 3; - } else if (c >= 194 && c < 224) { - if (il - i >= 6) { - var c2 = parseInt(str.substr(i + 4, 2), 16); - newStr += String.fromCharCode((c & 31) << 6 | c2 & 63); - } else { - newStr += str.substr(i, 6); - } - i += 6; - } else if (c >= 224) { - if (il - i >= 9) { - var _c = parseInt(str.substr(i + 4, 2), 16); - var c3 = parseInt(str.substr(i + 7, 2), 16); - newStr += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63); - } else { - newStr += str.substr(i, 9); - } - i += 9; - } else { - newStr += str.substr(i, 3); - i += 3; - } - } - return newStr; -} -function _normalizeComponentEncoding(components, protocol) { - function decodeUnreserved(str) { - var decStr = pctDecChars(str); - return !decStr.match(protocol.UNRESERVED) ? str : decStr; - } - if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, ""); - if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - return components; -} - -function _stripLeadingZeros(str) { - return str.replace(/^0*(.*)/, "$1") || "0"; -} -function _normalizeIPv4(host, protocol) { - var matches = host.match(protocol.IPV4ADDRESS) || []; - - var _matches = slicedToArray(matches, 2), - address = _matches[1]; - - if (address) { - return address.split(".").map(_stripLeadingZeros).join("."); - } else { - return host; - } -} -function _normalizeIPv6(host, protocol) { - var matches = host.match(protocol.IPV6ADDRESS) || []; - - var _matches2 = slicedToArray(matches, 3), - address = _matches2[1], - zone = _matches2[2]; - - if (address) { - var _address$toLowerCase$ = address.toLowerCase().split('::').reverse(), - _address$toLowerCase$2 = slicedToArray(_address$toLowerCase$, 2), - last = _address$toLowerCase$2[0], - first = _address$toLowerCase$2[1]; - - var firstFields = first ? first.split(":").map(_stripLeadingZeros) : []; - var lastFields = last.split(":").map(_stripLeadingZeros); - var isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]); - var fieldCount = isLastFieldIPv4Address ? 7 : 8; - var lastFieldsStart = lastFields.length - fieldCount; - var fields = Array(fieldCount); - for (var x = 0; x < fieldCount; ++x) { - fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || ''; - } - if (isLastFieldIPv4Address) { - fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol); - } - var allZeroFields = fields.reduce(function (acc, field, index) { - if (!field || field === "0") { - var lastLongest = acc[acc.length - 1]; - if (lastLongest && lastLongest.index + lastLongest.length === index) { - lastLongest.length++; - } else { - acc.push({ index: index, length: 1 }); - } - } - return acc; - }, []); - var longestZeroFields = allZeroFields.sort(function (a, b) { - return b.length - a.length; - })[0]; - var newHost = void 0; - if (longestZeroFields && longestZeroFields.length > 1) { - var newFirst = fields.slice(0, longestZeroFields.index); - var newLast = fields.slice(longestZeroFields.index + longestZeroFields.length); - newHost = newFirst.join(":") + "::" + newLast.join(":"); - } else { - newHost = fields.join(":"); - } - if (zone) { - newHost += "%" + zone; - } - return newHost; - } else { - return host; - } -} -var URI_PARSE = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i; -var NO_MATCH_IS_UNDEFINED = "".match(/(){0}/)[1] === undefined; -function parse(uriString) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var components = {}; - var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL; - if (options.reference === "suffix") uriString = (options.scheme ? options.scheme + ":" : "") + "//" + uriString; - var matches = uriString.match(URI_PARSE); - if (matches) { - if (NO_MATCH_IS_UNDEFINED) { - //store each component - components.scheme = matches[1]; - components.userinfo = matches[3]; - components.host = matches[4]; - components.port = parseInt(matches[5], 10); - components.path = matches[6] || ""; - components.query = matches[7]; - components.fragment = matches[8]; - //fix port number - if (isNaN(components.port)) { - components.port = matches[5]; - } - } else { - //IE FIX for improper RegExp matching - //store each component - components.scheme = matches[1] || undefined; - components.userinfo = uriString.indexOf("@") !== -1 ? matches[3] : undefined; - components.host = uriString.indexOf("//") !== -1 ? matches[4] : undefined; - components.port = parseInt(matches[5], 10); - components.path = matches[6] || ""; - components.query = uriString.indexOf("?") !== -1 ? matches[7] : undefined; - components.fragment = uriString.indexOf("#") !== -1 ? matches[8] : undefined; - //fix port number - if (isNaN(components.port)) { - components.port = uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? matches[4] : undefined; - } - } - if (components.host) { - //normalize IP hosts - components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol); - } - //determine reference type - if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) { - components.reference = "same-document"; - } else if (components.scheme === undefined) { - components.reference = "relative"; - } else if (components.fragment === undefined) { - components.reference = "absolute"; - } else { - components.reference = "uri"; - } - //check for reference errors - if (options.reference && options.reference !== "suffix" && options.reference !== components.reference) { - components.error = components.error || "URI is not a " + options.reference + " reference."; - } - //find scheme handler - var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; - //check if scheme can't handle IRIs - if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) { - //if host component is a domain name - if (components.host && (options.domainHost || schemeHandler && schemeHandler.domainHost)) { - //convert Unicode IDN -> ASCII IDN - try { - components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()); - } catch (e) { - components.error = components.error || "Host's domain name can not be converted to ASCII via punycode: " + e; - } - } - //convert IRI -> URI - _normalizeComponentEncoding(components, URI_PROTOCOL); - } else { - //normalize encodings - _normalizeComponentEncoding(components, protocol); - } - //perform scheme specific parsing - if (schemeHandler && schemeHandler.parse) { - schemeHandler.parse(components, options); - } - } else { - components.error = components.error || "URI can not be parsed."; - } - return components; -} - -function _recomposeAuthority(components, options) { - var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL; - var uriTokens = []; - if (components.userinfo !== undefined) { - uriTokens.push(components.userinfo); - uriTokens.push("@"); - } - if (components.host !== undefined) { - //normalize IP hosts, add brackets and escape zone separator for IPv6 - uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, function (_, $1, $2) { - return "[" + $1 + ($2 ? "%25" + $2 : "") + "]"; - })); - } - if (typeof components.port === "number") { - uriTokens.push(":"); - uriTokens.push(components.port.toString(10)); - } - return uriTokens.length ? uriTokens.join("") : undefined; -} - -var RDS1 = /^\.\.?\//; -var RDS2 = /^\/\.(\/|$)/; -var RDS3 = /^\/\.\.(\/|$)/; -var RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/; -function removeDotSegments(input) { - var output = []; - while (input.length) { - if (input.match(RDS1)) { - input = input.replace(RDS1, ""); - } else if (input.match(RDS2)) { - input = input.replace(RDS2, "/"); - } else if (input.match(RDS3)) { - input = input.replace(RDS3, "/"); - output.pop(); - } else if (input === "." || input === "..") { - input = ""; - } else { - var im = input.match(RDS5); - if (im) { - var s = im[0]; - input = input.slice(s.length); - output.push(s); - } else { - throw new Error("Unexpected dot segment condition"); - } - } - } - return output.join(""); -} - -function serialize(components) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var protocol = options.iri ? IRI_PROTOCOL : URI_PROTOCOL; - var uriTokens = []; - //find scheme handler - var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; - //perform scheme specific serialization - if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options); - if (components.host) { - //if host component is an IPv6 address - if (protocol.IPV6ADDRESS.test(components.host)) {} - //TODO: normalize IPv6 address as per RFC 5952 - - //if host component is a domain name - else if (options.domainHost || schemeHandler && schemeHandler.domainHost) { - //convert IDN via punycode - try { - components.host = !options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host); - } catch (e) { - components.error = components.error || "Host's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; - } - } - } - //normalize encoding - _normalizeComponentEncoding(components, protocol); - if (options.reference !== "suffix" && components.scheme) { - uriTokens.push(components.scheme); - uriTokens.push(":"); - } - var authority = _recomposeAuthority(components, options); - if (authority !== undefined) { - if (options.reference !== "suffix") { - uriTokens.push("//"); - } - uriTokens.push(authority); - if (components.path && components.path.charAt(0) !== "/") { - uriTokens.push("/"); - } - } - if (components.path !== undefined) { - var s = components.path; - if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) { - s = removeDotSegments(s); - } - if (authority === undefined) { - s = s.replace(/^\/\//, "/%2F"); //don't allow the path to start with "//" - } - uriTokens.push(s); - } - if (components.query !== undefined) { - uriTokens.push("?"); - uriTokens.push(components.query); - } - if (components.fragment !== undefined) { - uriTokens.push("#"); - uriTokens.push(components.fragment); - } - return uriTokens.join(""); //merge tokens into a string -} - -function resolveComponents(base, relative) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var skipNormalization = arguments[3]; - - var target = {}; - if (!skipNormalization) { - base = parse(serialize(base, options), options); //normalize base components - relative = parse(serialize(relative, options), options); //normalize relative components - } - options = options || {}; - if (!options.tolerant && relative.scheme) { - target.scheme = relative.scheme; - //target.authority = relative.authority; - target.userinfo = relative.userinfo; - target.host = relative.host; - target.port = relative.port; - target.path = removeDotSegments(relative.path || ""); - target.query = relative.query; - } else { - if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) { - //target.authority = relative.authority; - target.userinfo = relative.userinfo; - target.host = relative.host; - target.port = relative.port; - target.path = removeDotSegments(relative.path || ""); - target.query = relative.query; - } else { - if (!relative.path) { - target.path = base.path; - if (relative.query !== undefined) { - target.query = relative.query; - } else { - target.query = base.query; - } - } else { - if (relative.path.charAt(0) === "/") { - target.path = removeDotSegments(relative.path); - } else { - if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) { - target.path = "/" + relative.path; - } else if (!base.path) { - target.path = relative.path; - } else { - target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path; - } - target.path = removeDotSegments(target.path); - } - target.query = relative.query; - } - //target.authority = base.authority; - target.userinfo = base.userinfo; - target.host = base.host; - target.port = base.port; - } - target.scheme = base.scheme; - } - target.fragment = relative.fragment; - return target; -} - -function resolve(baseURI, relativeURI, options) { - var schemelessOptions = assign({ scheme: 'null' }, options); - return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions); -} - -function normalize(uri, options) { - if (typeof uri === "string") { - uri = serialize(parse(uri, options), options); - } else if (typeOf(uri) === "object") { - uri = parse(serialize(uri, options), options); - } - return uri; -} - -function equal(uriA, uriB, options) { - if (typeof uriA === "string") { - uriA = serialize(parse(uriA, options), options); - } else if (typeOf(uriA) === "object") { - uriA = serialize(uriA, options); - } - if (typeof uriB === "string") { - uriB = serialize(parse(uriB, options), options); - } else if (typeOf(uriB) === "object") { - uriB = serialize(uriB, options); - } - return uriA === uriB; -} - -function escapeComponent(str, options) { - return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE, pctEncChar); -} - -function unescapeComponent(str, options) { - return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED, pctDecChars); -} - -var handler = { - scheme: "http", - domainHost: true, - parse: function parse(components, options) { - //report missing host - if (!components.host) { - components.error = components.error || "HTTP URIs must have a host."; - } - return components; - }, - serialize: function serialize(components, options) { - //normalize the default port - if (components.port === (String(components.scheme).toLowerCase() !== "https" ? 80 : 443) || components.port === "") { - components.port = undefined; - } - //normalize the empty path - if (!components.path) { - components.path = "/"; - } - //NOTE: We do not parse query strings for HTTP URIs - //as WWW Form Url Encoded query strings are part of the HTML4+ spec, - //and not the HTTP spec. - return components; - } -}; - -var handler$1 = { - scheme: "https", - domainHost: handler.domainHost, - parse: handler.parse, - serialize: handler.serialize -}; - -var O = {}; -var isIRI = true; -//RFC 3986 -var UNRESERVED$$ = "[A-Za-z0-9\\-\\.\\_\\~" + (isIRI ? "\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF" : "") + "]"; -var HEXDIG$$ = "[0-9A-Fa-f]"; //case-insensitive -var PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)); //expanded -//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; = -//const ATEXT$$ = "[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]"; -//const WSP$$ = "[\\x20\\x09]"; -//const OBS_QTEXT$$ = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"; //(%d1-8 / %d11-12 / %d14-31 / %d127) -//const QTEXT$$ = merge("[\\x21\\x23-\\x5B\\x5D-\\x7E]", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext -//const VCHAR$$ = "[\\x21-\\x7E]"; -//const WSP$$ = "[\\x20\\x09]"; -//const OBS_QP$ = subexp("\\\\" + merge("[\\x00\\x0D\\x0A]", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext -//const FWS$ = subexp(subexp(WSP$$ + "*" + "\\x0D\\x0A") + "?" + WSP$$ + "+"); -//const QUOTED_PAIR$ = subexp(subexp("\\\\" + subexp(VCHAR$$ + "|" + WSP$$)) + "|" + OBS_QP$); -//const QUOTED_STRING$ = subexp('\\"' + subexp(FWS$ + "?" + QCONTENT$) + "*" + FWS$ + "?" + '\\"'); -var ATEXT$$ = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]"; -var QTEXT$$ = "[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]"; -var VCHAR$$ = merge(QTEXT$$, "[\\\"\\\\]"); -var SOME_DELIMS$$ = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"; -var UNRESERVED = new RegExp(UNRESERVED$$, "g"); -var PCT_ENCODED = new RegExp(PCT_ENCODED$, "g"); -var NOT_LOCAL_PART = new RegExp(merge("[^]", ATEXT$$, "[\\.]", '[\\"]', VCHAR$$), "g"); -var NOT_HFNAME = new RegExp(merge("[^]", UNRESERVED$$, SOME_DELIMS$$), "g"); -var NOT_HFVALUE = NOT_HFNAME; -function decodeUnreserved(str) { - var decStr = pctDecChars(str); - return !decStr.match(UNRESERVED) ? str : decStr; -} -var handler$2 = { - scheme: "mailto", - parse: function parse$$1(components, options) { - var mailtoComponents = components; - var to = mailtoComponents.to = mailtoComponents.path ? mailtoComponents.path.split(",") : []; - mailtoComponents.path = undefined; - if (mailtoComponents.query) { - var unknownHeaders = false; - var headers = {}; - var hfields = mailtoComponents.query.split("&"); - for (var x = 0, xl = hfields.length; x < xl; ++x) { - var hfield = hfields[x].split("="); - switch (hfield[0]) { - case "to": - var toAddrs = hfield[1].split(","); - for (var _x = 0, _xl = toAddrs.length; _x < _xl; ++_x) { - to.push(toAddrs[_x]); - } - break; - case "subject": - mailtoComponents.subject = unescapeComponent(hfield[1], options); - break; - case "body": - mailtoComponents.body = unescapeComponent(hfield[1], options); - break; - default: - unknownHeaders = true; - headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options); - break; - } - } - if (unknownHeaders) mailtoComponents.headers = headers; - } - mailtoComponents.query = undefined; - for (var _x2 = 0, _xl2 = to.length; _x2 < _xl2; ++_x2) { - var addr = to[_x2].split("@"); - addr[0] = unescapeComponent(addr[0]); - if (!options.unicodeSupport) { - //convert Unicode IDN -> ASCII IDN - try { - addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase()); - } catch (e) { - mailtoComponents.error = mailtoComponents.error || "Email address's domain name can not be converted to ASCII via punycode: " + e; - } - } else { - addr[1] = unescapeComponent(addr[1], options).toLowerCase(); - } - to[_x2] = addr.join("@"); - } - return mailtoComponents; - }, - serialize: function serialize$$1(mailtoComponents, options) { - var components = mailtoComponents; - var to = toArray(mailtoComponents.to); - if (to) { - for (var x = 0, xl = to.length; x < xl; ++x) { - var toAddr = String(to[x]); - var atIdx = toAddr.lastIndexOf("@"); - var localPart = toAddr.slice(0, atIdx).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar); - var domain = toAddr.slice(atIdx + 1); - //convert IDN via punycode - try { - domain = !options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain); - } catch (e) { - components.error = components.error || "Email address's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; - } - to[x] = localPart + "@" + domain; - } - components.path = to.join(","); - } - var headers = mailtoComponents.headers = mailtoComponents.headers || {}; - if (mailtoComponents.subject) headers["subject"] = mailtoComponents.subject; - if (mailtoComponents.body) headers["body"] = mailtoComponents.body; - var fields = []; - for (var name in headers) { - if (headers[name] !== O[name]) { - fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + "=" + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)); - } - } - if (fields.length) { - components.query = fields.join("&"); - } - return components; - } -}; - -var URN_PARSE = /^([^\:]+)\:(.*)/; -//RFC 2141 -var handler$3 = { - scheme: "urn", - parse: function parse$$1(components, options) { - var matches = components.path && components.path.match(URN_PARSE); - var urnComponents = components; - if (matches) { - var scheme = options.scheme || urnComponents.scheme || "urn"; - var nid = matches[1].toLowerCase(); - var nss = matches[2]; - var urnScheme = scheme + ":" + (options.nid || nid); - var schemeHandler = SCHEMES[urnScheme]; - urnComponents.nid = nid; - urnComponents.nss = nss; - urnComponents.path = undefined; - if (schemeHandler) { - urnComponents = schemeHandler.parse(urnComponents, options); - } - } else { - urnComponents.error = urnComponents.error || "URN can not be parsed."; - } - return urnComponents; - }, - serialize: function serialize$$1(urnComponents, options) { - var scheme = options.scheme || urnComponents.scheme || "urn"; - var nid = urnComponents.nid; - var urnScheme = scheme + ":" + (options.nid || nid); - var schemeHandler = SCHEMES[urnScheme]; - if (schemeHandler) { - urnComponents = schemeHandler.serialize(urnComponents, options); - } - var uriComponents = urnComponents; - var nss = urnComponents.nss; - uriComponents.path = (nid || options.nid) + ":" + nss; - return uriComponents; - } -}; - -var UUID = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/; -//RFC 4122 -var handler$4 = { - scheme: "urn:uuid", - parse: function parse(urnComponents, options) { - var uuidComponents = urnComponents; - uuidComponents.uuid = uuidComponents.nss; - uuidComponents.nss = undefined; - if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) { - uuidComponents.error = uuidComponents.error || "UUID is not valid."; - } - return uuidComponents; - }, - serialize: function serialize(uuidComponents, options) { - var urnComponents = uuidComponents; - //normalize UUID - urnComponents.nss = (uuidComponents.uuid || "").toLowerCase(); - return urnComponents; - } -}; - -SCHEMES[handler.scheme] = handler; -SCHEMES[handler$1.scheme] = handler$1; -SCHEMES[handler$2.scheme] = handler$2; -SCHEMES[handler$3.scheme] = handler$3; -SCHEMES[handler$4.scheme] = handler$4; - -exports.SCHEMES = SCHEMES; -exports.pctEncChar = pctEncChar; -exports.pctDecChars = pctDecChars; -exports.parse = parse; -exports.removeDotSegments = removeDotSegments; -exports.serialize = serialize; -exports.resolveComponents = resolveComponents; -exports.resolve = resolve; -exports.normalize = normalize; -exports.equal = equal; -exports.escapeComponent = escapeComponent; -exports.unescapeComponent = unescapeComponent; - -Object.defineProperty(exports, '__esModule', { value: true }); - -}))); -//# sourceMappingURL=uri.all.js.map diff --git a/node_modules/uri-js/dist/es5/uri.all.js.map b/node_modules/uri-js/dist/es5/uri.all.js.map deleted file mode 100644 index 536ffa8..0000000 --- a/node_modules/uri-js/dist/es5/uri.all.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uri.all.js","sources":["../../src/index.ts","../../src/schemes/urn-uuid.ts","../../src/schemes/urn.ts","../../src/schemes/mailto.ts","../../src/schemes/https.ts","../../src/schemes/http.ts","../../src/uri.ts","../../node_modules/punycode/punycode.es6.js","../../src/regexps-iri.ts","../../src/regexps-uri.ts","../../src/util.ts"],"sourcesContent":["import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\"; //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler = {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (components.port === (String(components.scheme).toLowerCase() !== \"https\" ? 80 : 443) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;","/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author Gary Court\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = ((\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else { //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(components.port.toString(10));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\"); //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options); //normalize base components\n\t\trelative = parse(serialize(relative, options), options); //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n","import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n","import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"), //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\", //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\", //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$), //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp( subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), // 6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp( \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), // \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp( H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\" h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\" ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"), //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$), //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$), //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"), //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"), //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n","export function merge(...sets:Array):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\n}"],"names":["SCHEMES","uuid","scheme","urn","mailto","https","http","urnComponents","nss","uuidComponents","toLowerCase","options","error","tolerant","match","UUID","undefined","handler","uriComponents","path","nid","schemeHandler","serialize","urnScheme","parse","matches","components","URN_PARSE","query","fields","join","length","push","name","replace","PCT_ENCODED","decodeUnreserved","toUpperCase","NOT_HFNAME","pctEncChar","headers","NOT_HFVALUE","O","mailtoComponents","body","subject","to","x","localPart","domain","iri","e","punycode","toASCII","unescapeComponent","toUnicode","toAddr","slice","atIdx","NOT_LOCAL_PART","lastIndexOf","String","xl","toArray","addr","unicodeSupport","split","unknownHeaders","hfield","toAddrs","hfields","decStr","UNRESERVED","str","pctDecChars","RegExp","merge","UNRESERVED$$","SOME_DELIMS$$","ATEXT$$","VCHAR$$","PCT_ENCODED$","QTEXT$$","subexp","HEXDIG$$","isIRI","domainHost","port","host","toString","URI_PROTOCOL","IRI_PROTOCOL","ESCAPE","escapeComponent","uriA","uriB","typeOf","equal","uri","normalize","resolveComponents","baseURI","schemelessOptions","relativeURI","assign","resolve","target","fragment","relative","base","userinfo","removeDotSegments","charAt","skipNormalization","uriTokens","s","authority","absolutePath","reference","_recomposeAuthority","protocol","IPV6ADDRESS","test","output","Error","input","im","RDS5","pop","RDS3","RDS2","RDS1","$1","$2","_normalizeIPv6","_normalizeIPv4","_","uriString","isNaN","indexOf","parseInt","NO_MATCH_IS_UNDEFINED","URI_PARSE","newHost","zone","newFirst","newLast","longestZeroFields","index","b","a","allZeroFields","sort","acc","lastLongest","field","reduce","fieldCount","isLastFieldIPv4Address","firstFields","lastFields","lastFieldsStart","Array","IPV4ADDRESS","last","map","_stripLeadingZeros","first","address","reverse","NOT_FRAGMENT","NOT_QUERY","NOT_PATH","NOT_PATH_NOSCHEME","NOT_HOST","NOT_USERINFO","NOT_SCHEME","_normalizeComponentEncoding","newStr","substr","i","fromCharCode","c","c2","c3","il","chr","charCodeAt","encode","decode","ucs2encode","ucs2decode","regexNonASCII","string","mapDomain","regexPunycode","n","delta","handledCPCount","adapt","handledCPCountPlusOne","basicLength","stringFromCharCode","digitToBasic","q","floor","qMinusT","baseMinusT","t","k","bias","tMin","tMax","currentValue","maxInt","m","inputLength","delimiter","initialBias","initialN","fromCodePoint","splice","out","oldi","w","digit","basicToDigit","basic","j","baseMinusTMin","skew","numPoints","firstTime","damp","flag","codePoint","array","value","extra","counter","result","encoded","labels","fn","regexSeparators","parts","RangeError","errors","type","Math","buildExps","IPV6ADDRESS$","ZONEID$","IPV4ADDRESS$","RESERVED$$","SUB_DELIMS$$","IPRIVATE$$","ALPHA$$","DIGIT$$","AUTHORITY_REF$","USERINFO$","HOST$","PORT$","SAMEDOC_REF$","FRAGMENT$","ABSOLUTE_REF$","SCHEME$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH_ROOTLESS$","PATH_EMPTY$","QUERY$","RELATIVE_REF$","PATH_NOSCHEME$","GENERIC_REF$","ABSOLUTE_URI$","HIER_PART$","URI_REFERENCE$","URI$","RELATIVE$","RELATIVE_PART$","AUTHORITY$","PCHAR$","PATH$","SEGMENT_NZ$","SEGMENT_NZ_NC$","SEGMENT$","IP_LITERAL$","REG_NAME$","IPV6ADDRZ_RELAXED$","IPVFUTURE$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","H16$","LS32$","DEC_OCTET_RELAXED$","DEC_OCTET$","UCSCHAR$$","GEN_DELIMS$$","SP$$","DQUOTE$$","CR$","obj","key","source","setInterval","call","prototype","o","Object","shift","sets"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/es5/uri.all.min.d.ts b/node_modules/uri-js/dist/es5/uri.all.min.d.ts deleted file mode 100644 index 320f534..0000000 --- a/node_modules/uri-js/dist/es5/uri.all.min.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -export interface URIComponents { - scheme?: string; - userinfo?: string; - host?: string; - port?: number | string; - path?: string; - query?: string; - fragment?: string; - reference?: string; - error?: string; -} -export interface URIOptions { - scheme?: string; - reference?: string; - tolerant?: boolean; - absolutePath?: boolean; - iri?: boolean; - unicodeSupport?: boolean; - domainHost?: boolean; -} -export interface URISchemeHandler { - scheme: string; - parse(components: ParentComponents, options: Options): Components; - serialize(components: Components, options: Options): ParentComponents; - unicodeSupport?: boolean; - domainHost?: boolean; - absolutePath?: boolean; -} -export interface URIRegExps { - NOT_SCHEME: RegExp; - NOT_USERINFO: RegExp; - NOT_HOST: RegExp; - NOT_PATH: RegExp; - NOT_PATH_NOSCHEME: RegExp; - NOT_QUERY: RegExp; - NOT_FRAGMENT: RegExp; - ESCAPE: RegExp; - UNRESERVED: RegExp; - OTHER_CHARS: RegExp; - PCT_ENCODED: RegExp; - IPV4ADDRESS: RegExp; - IPV6ADDRESS: RegExp; -} -export declare const SCHEMES: { - [scheme: string]: URISchemeHandler; -}; -export declare function pctEncChar(chr: string): string; -export declare function pctDecChars(str: string): string; -export declare function parse(uriString: string, options?: URIOptions): URIComponents; -export declare function removeDotSegments(input: string): string; -export declare function serialize(components: URIComponents, options?: URIOptions): string; -export declare function resolveComponents(base: URIComponents, relative: URIComponents, options?: URIOptions, skipNormalization?: boolean): URIComponents; -export declare function resolve(baseURI: string, relativeURI: string, options?: URIOptions): string; -export declare function normalize(uri: string, options?: URIOptions): string; -export declare function normalize(uri: URIComponents, options?: URIOptions): URIComponents; -export declare function equal(uriA: string, uriB: string, options?: URIOptions): boolean; -export declare function equal(uriA: URIComponents, uriB: URIComponents, options?: URIOptions): boolean; -export declare function escapeComponent(str: string, options?: URIOptions): string; -export declare function unescapeComponent(str: string, options?: URIOptions): string; diff --git a/node_modules/uri-js/dist/es5/uri.all.min.js b/node_modules/uri-js/dist/es5/uri.all.min.js deleted file mode 100644 index 1b791ef..0000000 --- a/node_modules/uri-js/dist/es5/uri.all.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/** @license URI.js v4.2.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */ -!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r(e.URI=e.URI||{})}(this,function(e){"use strict";function r(){for(var e=arguments.length,r=Array(e),n=0;n1){r[0]=r[0].slice(0,-1);for(var t=r.length-1,o=1;o1&&(t=n[0]+"@",e=n[1]),e=e.replace(j,"."),t+f(e.split("."),r).join(".")}function p(e){for(var r=[],n=0,t=e.length;n=55296&&o<=56319&&n>6|192).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase():"%"+(r>>12|224).toString(16).toUpperCase()+"%"+(r>>6&63|128).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase()}function d(e){for(var r="",n=0,t=e.length;n=194&&o<224){if(t-n>=6){var a=parseInt(e.substr(n+4,2),16);r+=String.fromCharCode((31&o)<<6|63&a)}else r+=e.substr(n,6);n+=6}else if(o>=224){if(t-n>=9){var i=parseInt(e.substr(n+4,2),16),u=parseInt(e.substr(n+7,2),16);r+=String.fromCharCode((15&o)<<12|(63&i)<<6|63&u)}else r+=e.substr(n,9);n+=9}else r+=e.substr(n,3),n+=3}return r}function l(e,r){function n(e){var n=d(e);return n.match(r.UNRESERVED)?n:e}return e.scheme&&(e.scheme=String(e.scheme).replace(r.PCT_ENCODED,n).toLowerCase().replace(r.NOT_SCHEME,"")),e.userinfo!==undefined&&(e.userinfo=String(e.userinfo).replace(r.PCT_ENCODED,n).replace(r.NOT_USERINFO,h).replace(r.PCT_ENCODED,o)),e.host!==undefined&&(e.host=String(e.host).replace(r.PCT_ENCODED,n).toLowerCase().replace(r.NOT_HOST,h).replace(r.PCT_ENCODED,o)),e.path!==undefined&&(e.path=String(e.path).replace(r.PCT_ENCODED,n).replace(e.scheme?r.NOT_PATH:r.NOT_PATH_NOSCHEME,h).replace(r.PCT_ENCODED,o)),e.query!==undefined&&(e.query=String(e.query).replace(r.PCT_ENCODED,n).replace(r.NOT_QUERY,h).replace(r.PCT_ENCODED,o)),e.fragment!==undefined&&(e.fragment=String(e.fragment).replace(r.PCT_ENCODED,n).replace(r.NOT_FRAGMENT,h).replace(r.PCT_ENCODED,o)),e}function g(e){return e.replace(/^0*(.*)/,"$1")||"0"}function v(e,r){var n=e.match(r.IPV4ADDRESS)||[],t=R(n,2),o=t[1];return o?o.split(".").map(g).join("."):e}function m(e,r){var n=e.match(r.IPV6ADDRESS)||[],t=R(n,3),o=t[1],a=t[2];if(o){for(var i=o.toLowerCase().split("::").reverse(),u=R(i,2),s=u[0],f=u[1],c=f?f.split(":").map(g):[],p=s.split(":").map(g),h=r.IPV4ADDRESS.test(p[p.length-1]),d=h?7:8,l=p.length-d,m=Array(d),E=0;E1){var A=m.slice(0,y.index),D=m.slice(y.index+y.length);S=A.join(":")+"::"+D.join(":")}else S=m.join(":");return a&&(S+="%"+a),S}return e}function E(e){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},n={},t=!1!==r.iri?N:F;"suffix"===r.reference&&(e=(r.scheme?r.scheme+":":"")+"//"+e);var o=e.match(J);if(o){K?(n.scheme=o[1],n.userinfo=o[3],n.host=o[4],n.port=parseInt(o[5],10),n.path=o[6]||"",n.query=o[7],n.fragment=o[8],isNaN(n.port)&&(n.port=o[5])):(n.scheme=o[1]||undefined,n.userinfo=-1!==e.indexOf("@")?o[3]:undefined,n.host=-1!==e.indexOf("//")?o[4]:undefined,n.port=parseInt(o[5],10),n.path=o[6]||"",n.query=-1!==e.indexOf("?")?o[7]:undefined,n.fragment=-1!==e.indexOf("#")?o[8]:undefined,isNaN(n.port)&&(n.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?o[4]:undefined)),n.host&&(n.host=m(v(n.host,t),t)),n.scheme!==undefined||n.userinfo!==undefined||n.host!==undefined||n.port!==undefined||n.path||n.query!==undefined?n.scheme===undefined?n.reference="relative":n.fragment===undefined?n.reference="absolute":n.reference="uri":n.reference="same-document",r.reference&&"suffix"!==r.reference&&r.reference!==n.reference&&(n.error=n.error||"URI is not a "+r.reference+" reference.");var a=B[(r.scheme||n.scheme||"").toLowerCase()];if(r.unicodeSupport||a&&a.unicodeSupport)l(n,t);else{if(n.host&&(r.domainHost||a&&a.domainHost))try{n.host=Y.toASCII(n.host.replace(t.PCT_ENCODED,d).toLowerCase())}catch(i){n.error=n.error||"Host's domain name can not be converted to ASCII via punycode: "+i}l(n,F)}a&&a.parse&&a.parse(n,r)}else n.error=n.error||"URI can not be parsed.";return n}function C(e,r){var n=!1!==r.iri?N:F,t=[];return e.userinfo!==undefined&&(t.push(e.userinfo),t.push("@")),e.host!==undefined&&t.push(m(v(String(e.host),n),n).replace(n.IPV6ADDRESS,function(e,r,n){return"["+r+(n?"%25"+n:"")+"]"})),"number"==typeof e.port&&(t.push(":"),t.push(e.port.toString(10))),t.length?t.join(""):undefined}function y(e){for(var r=[];e.length;)if(e.match(W))e=e.replace(W,"");else if(e.match(X))e=e.replace(X,"/");else if(e.match(ee))e=e.replace(ee,"/"),r.pop();else if("."===e||".."===e)e="";else{var n=e.match(re);if(!n)throw new Error("Unexpected dot segment condition");var t=n[0];e=e.slice(t.length),r.push(t)}return r.join("")}function S(e){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},n=r.iri?N:F,t=[],o=B[(r.scheme||e.scheme||"").toLowerCase()];if(o&&o.serialize&&o.serialize(e,r),e.host)if(n.IPV6ADDRESS.test(e.host));else if(r.domainHost||o&&o.domainHost)try{e.host=r.iri?Y.toUnicode(e.host):Y.toASCII(e.host.replace(n.PCT_ENCODED,d).toLowerCase())}catch(u){e.error=e.error||"Host's domain name can not be converted to "+(r.iri?"Unicode":"ASCII")+" via punycode: "+u}l(e,n),"suffix"!==r.reference&&e.scheme&&(t.push(e.scheme),t.push(":"));var a=C(e,r);if(a!==undefined&&("suffix"!==r.reference&&t.push("//"),t.push(a),e.path&&"/"!==e.path.charAt(0)&&t.push("/")),e.path!==undefined){var i=e.path;r.absolutePath||o&&o.absolutePath||(i=y(i)),a===undefined&&(i=i.replace(/^\/\//,"/%2F")),t.push(i)}return e.query!==undefined&&(t.push("?"),t.push(e.query)),e.fragment!==undefined&&(t.push("#"),t.push(e.fragment)),t.join("")}function A(e,r){var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{},t=arguments[3],o={};return t||(e=E(S(e,n),n),r=E(S(r,n),n)),n=n||{},!n.tolerant&&r.scheme?(o.scheme=r.scheme,o.userinfo=r.userinfo,o.host=r.host,o.port=r.port,o.path=y(r.path||""),o.query=r.query):(r.userinfo!==undefined||r.host!==undefined||r.port!==undefined?(o.userinfo=r.userinfo,o.host=r.host,o.port=r.port,o.path=y(r.path||""),o.query=r.query):(r.path?("/"===r.path.charAt(0)?o.path=y(r.path):(e.userinfo===undefined&&e.host===undefined&&e.port===undefined||e.path?e.path?o.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+r.path:o.path=r.path:o.path="/"+r.path,o.path=y(o.path)),o.query=r.query):(o.path=e.path,r.query!==undefined?o.query=r.query:o.query=e.query),o.userinfo=e.userinfo,o.host=e.host,o.port=e.port),o.scheme=e.scheme),o.fragment=r.fragment,o}function D(e,r,n){var t=i({scheme:"null"},n);return S(A(E(e,t),E(r,t),t,!0),t)}function w(e,r){return"string"==typeof e?e=S(E(e,r),r):"object"===t(e)&&(e=E(S(e,r),r)),e}function b(e,r,n){return"string"==typeof e?e=S(E(e,n),n):"object"===t(e)&&(e=S(e,n)),"string"==typeof r?r=S(E(r,n),n):"object"===t(r)&&(r=S(r,n)),e===r}function x(e,r){return e&&e.toString().replace(r&&r.iri?N.ESCAPE:F.ESCAPE,h)}function O(e,r){return e&&e.toString().replace(r&&r.iri?N.PCT_ENCODED:F.PCT_ENCODED,d)}function I(e){var r=d(e);return r.match(fe)?r:e}var F=u(!1),N=u(!0),R=function(){function e(e,r){var n=[],t=!0,o=!1,a=undefined;try{for(var i,u=e[Symbol.iterator]();!(t=(i=u.next()).done)&&(n.push(i.value),!r||n.length!==r);t=!0);}catch(s){o=!0,a=s}finally{try{!t&&u["return"]&&u["return"]()}finally{if(o)throw a}}return n}return function(r,n){if(Array.isArray(r))return r;if(Symbol.iterator in Object(r))return e(r,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),T=function(e){if(Array.isArray(e)){for(var r=0,n=Array(e.length);r= 0x80 (not a basic code point)","invalid-input":"Invalid input"},H=Math.floor,z=String.fromCharCode,L=function(e){return String.fromCodePoint.apply(String,T(e))},$=function(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:36},M=function(e,r){return e+22+75*(e<26)-((0!=r)<<5)},V=function(e,r,n){var t=0;for(e=n?H(e/700):e>>1,e+=H(e/r);e>455;t+=36)e=H(e/35);return H(t+36*e/(e+38))},k=function(e){var r=[],n=e.length,t=0,o=128,a=72,i=e.lastIndexOf("-");i<0&&(i=0);for(var u=0;u=128&&s("not-basic"),r.push(e.charCodeAt(u));for(var f=i>0?i+1:0;f=n&&s("invalid-input");var d=$(e.charCodeAt(f++));(d>=36||d>H((_-t)/p))&&s("overflow"),t+=d*p;var l=h<=a?1:h>=a+26?26:h-a;if(dH(_/g)&&s("overflow"),p*=g}var v=r.length+1;a=V(t-c,v,0==c),H(t/v)>_-o&&s("overflow"),o+=H(t/v),t%=v,r.splice(t++,0,o)}return String.fromCodePoint.apply(String,r)},Z=function(e){var r=[];e=p(e);var n=e.length,t=128,o=0,a=72,i=!0,u=!1,f=undefined;try{for(var c,h=e[Symbol.iterator]();!(i=(c=h.next()).done);i=!0){var d=c.value;d<128&&r.push(z(d))}}catch(j){u=!0,f=j}finally{try{!i&&h["return"]&&h["return"]()}finally{if(u)throw f}}var l=r.length,g=l;for(l&&r.push("-");g=t&&AH((_-o)/D)&&s("overflow"),o+=(v-t)*D,t=v;var w=!0,b=!1,x=undefined;try{for(var O,I=e[Symbol.iterator]();!(w=(O=I.next()).done);w=!0){var F=O.value;if(F_&&s("overflow"),F==t){for(var N=o,R=36;;R+=36){var T=R<=a?1:R>=a+26?26:R-a;if(NA-Z\\x5E-\\x7E]",'[\\"\\\\]'),fe=new RegExp(ae,"g"),ce=new RegExp(ue,"g"),pe=new RegExp(r("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',se),"g"),he=new RegExp(r("[^]",ae,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),de=he,le={scheme:"mailto",parse:function(e,r){var n=e,t=n.to=n.path?n.path.split(","):[];if(n.path=undefined,n.query){for(var o=!1,a={},i=n.query.split("&"),u=0,s=i.length;u):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\n}","import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"), //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\", //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\", //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$), //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp( subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), // 6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp( \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), // \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp( H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\" h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\" ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"), //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$), //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$), //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"), //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"), //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n","/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author Gary Court\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = ((\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else { //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(components.port.toString(10));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\"); //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options); //normalize base components\n\t\trelative = parse(serialize(relative, options), options); //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\"; //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler = {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;","import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (components.port === (String(components.scheme).toLowerCase() !== \"https\" ? 80 : 443) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;","import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n"]} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/index.d.ts b/node_modules/uri-js/dist/esnext/index.d.ts deleted file mode 100644 index be95efb..0000000 --- a/node_modules/uri-js/dist/esnext/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./uri"; diff --git a/node_modules/uri-js/dist/esnext/index.js b/node_modules/uri-js/dist/esnext/index.js deleted file mode 100644 index de8868f..0000000 --- a/node_modules/uri-js/dist/esnext/index.js +++ /dev/null @@ -1,13 +0,0 @@ -import { SCHEMES } from "./uri"; -import http from "./schemes/http"; -SCHEMES[http.scheme] = http; -import https from "./schemes/https"; -SCHEMES[https.scheme] = https; -import mailto from "./schemes/mailto"; -SCHEMES[mailto.scheme] = mailto; -import urn from "./schemes/urn"; -SCHEMES[urn.scheme] = urn; -import uuid from "./schemes/urn-uuid"; -SCHEMES[uuid.scheme] = uuid; -export * from "./uri"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/index.js.map b/node_modules/uri-js/dist/esnext/index.js.map deleted file mode 100644 index e9e4008..0000000 --- a/node_modules/uri-js/dist/esnext/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAClC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAE5B,OAAO,KAAK,MAAM,iBAAiB,CAAC;AACpC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AAE9B,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAEhC,OAAO,GAAG,MAAM,eAAe,CAAC;AAChC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;AAE1B,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAE5B,cAAc,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/regexps-iri.d.ts b/node_modules/uri-js/dist/esnext/regexps-iri.d.ts deleted file mode 100644 index 6fc0f5d..0000000 --- a/node_modules/uri-js/dist/esnext/regexps-iri.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { URIRegExps } from "./uri"; -declare const _default: URIRegExps; -export default _default; diff --git a/node_modules/uri-js/dist/esnext/regexps-iri.js b/node_modules/uri-js/dist/esnext/regexps-iri.js deleted file mode 100644 index 86239cf..0000000 --- a/node_modules/uri-js/dist/esnext/regexps-iri.js +++ /dev/null @@ -1,3 +0,0 @@ -import { buildExps } from "./regexps-uri"; -export default buildExps(true); -//# sourceMappingURL=regexps-iri.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/regexps-iri.js.map b/node_modules/uri-js/dist/esnext/regexps-iri.js.map deleted file mode 100644 index 2269c58..0000000 --- a/node_modules/uri-js/dist/esnext/regexps-iri.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"regexps-iri.js","sourceRoot":"","sources":["../../src/regexps-iri.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,eAAe,SAAS,CAAC,IAAI,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/regexps-uri.d.ts b/node_modules/uri-js/dist/esnext/regexps-uri.d.ts deleted file mode 100644 index 10ec87b..0000000 --- a/node_modules/uri-js/dist/esnext/regexps-uri.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { URIRegExps } from "./uri"; -export declare function buildExps(isIRI: boolean): URIRegExps; -declare const _default: URIRegExps; -export default _default; diff --git a/node_modules/uri-js/dist/esnext/regexps-uri.js b/node_modules/uri-js/dist/esnext/regexps-uri.js deleted file mode 100644 index 6e7e9a0..0000000 --- a/node_modules/uri-js/dist/esnext/regexps-uri.js +++ /dev/null @@ -1,42 +0,0 @@ -import { merge, subexp } from "./util"; -export function buildExps(isIRI) { - const ALPHA$$ = "[A-Za-z]", CR$ = "[\\x0D]", DIGIT$$ = "[0-9]", DQUOTE$$ = "[\\x22]", HEXDIG$$ = merge(DIGIT$$, "[A-Fa-f]"), //case-insensitive - LF$$ = "[\\x0A]", SP$$ = "[\\x20]", PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)), //expanded - GEN_DELIMS$$ = "[\\:\\/\\?\\#\\[\\]\\@]", SUB_DELIMS$$ = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]", RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$), UCSCHAR$$ = isIRI ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]", //subset, excludes bidi control characters - IPRIVATE$$ = isIRI ? "[\\uE000-\\uF8FF]" : "[]", //subset - UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, "[\\-\\.\\_\\~]", UCSCHAR$$), SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, "[\\+\\-\\.]") + "*"), USERINFO$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]")) + "*"), DEC_OCTET$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("[1-9]" + DIGIT$$) + "|" + DIGIT$$), DEC_OCTET_RELAXED$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("0?[1-9]" + DIGIT$$) + "|0?0?" + DIGIT$$), //relaxed parsing rules - IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$), H16$ = subexp(HEXDIG$$ + "{1,4}"), LS32$ = subexp(subexp(H16$ + "\\:" + H16$) + "|" + IPV4ADDRESS$), IPV6ADDRESS1$ = subexp(subexp(H16$ + "\\:") + "{6}" + LS32$), // 6( h16 ":" ) ls32 - IPV6ADDRESS2$ = subexp("\\:\\:" + subexp(H16$ + "\\:") + "{5}" + LS32$), // "::" 5( h16 ":" ) ls32 - IPV6ADDRESS3$ = subexp(subexp(H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{4}" + LS32$), //[ h16 ] "::" 4( h16 ":" ) ls32 - IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,1}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{3}" + LS32$), //[ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 - IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,2}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{2}" + LS32$), //[ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 - IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,3}" + H16$) + "?\\:\\:" + H16$ + "\\:" + LS32$), //[ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 - IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,4}" + H16$) + "?\\:\\:" + LS32$), //[ *4( h16 ":" ) h16 ] "::" ls32 - IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,5}" + H16$) + "?\\:\\:" + H16$), //[ *5( h16 ":" ) h16 ] "::" h16 - IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,6}" + H16$) + "?\\:\\:"), //[ *6( h16 ":" ) h16 ] "::" - IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join("|")), ZONEID$ = subexp(subexp(UNRESERVED$$ + "|" + PCT_ENCODED$) + "+"), //RFC 6874 - IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + "\\%25" + ZONEID$), //RFC 6874 - IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + ZONEID$), //RFC 6874, with relaxed parsing rules - IPVFUTURE$ = subexp("[vV]" + HEXDIG$$ + "+\\." + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]") + "+"), IP_LITERAL$ = subexp("\\[" + subexp(IPV6ADDRZ_RELAXED$ + "|" + IPV6ADDRESS$ + "|" + IPVFUTURE$) + "\\]"), //RFC 6874 - REG_NAME$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$)) + "*"), HOST$ = subexp(IP_LITERAL$ + "|" + IPV4ADDRESS$ + "(?!" + REG_NAME$ + ")" + "|" + REG_NAME$), PORT$ = subexp(DIGIT$$ + "*"), AUTHORITY$ = subexp(subexp(USERINFO$ + "@") + "?" + HOST$ + subexp("\\:" + PORT$) + "?"), PCHAR$ = subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@]")), SEGMENT$ = subexp(PCHAR$ + "*"), SEGMENT_NZ$ = subexp(PCHAR$ + "+"), SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\@]")) + "+"), PATH_ABEMPTY$ = subexp(subexp("\\/" + SEGMENT$) + "*"), PATH_ABSOLUTE$ = subexp("\\/" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + "?"), //simplified - PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified - PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified - PATH_EMPTY$ = "(?!" + PCHAR$ + ")", PATH$ = subexp(PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), QUERY$ = subexp(subexp(PCHAR$ + "|" + merge("[\\/\\?]", IPRIVATE$$)) + "*"), FRAGMENT$ = subexp(subexp(PCHAR$ + "|[\\/\\?]") + "*"), HIER_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), RELATIVE_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$), RELATIVE$ = subexp(RELATIVE_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), URI_REFERENCE$ = subexp(URI$ + "|" + RELATIVE$), ABSOLUTE_URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?"), GENERIC_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", RELATIVE_REF$ = "^(){0}" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", ABSOLUTE_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?$", SAMEDOC_REF$ = "^" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", AUTHORITY_REF$ = "^" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?$"; - return { - NOT_SCHEME: new RegExp(merge("[^]", ALPHA$$, DIGIT$$, "[\\+\\-\\.]"), "g"), - NOT_USERINFO: new RegExp(merge("[^\\%\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_HOST: new RegExp(merge("[^\\%\\[\\]\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_PATH: new RegExp(merge("[^\\%\\/\\:\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_PATH_NOSCHEME: new RegExp(merge("[^\\%\\/\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_QUERY: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]", IPRIVATE$$), "g"), - NOT_FRAGMENT: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]"), "g"), - ESCAPE: new RegExp(merge("[^]", UNRESERVED$$, SUB_DELIMS$$), "g"), - UNRESERVED: new RegExp(UNRESERVED$$, "g"), - OTHER_CHARS: new RegExp(merge("[^\\%]", UNRESERVED$$, RESERVED$$), "g"), - PCT_ENCODED: new RegExp(PCT_ENCODED$, "g"), - IPV4ADDRESS: new RegExp("^(" + IPV4ADDRESS$ + ")$"), - IPV6ADDRESS: new RegExp("^\\[?(" + IPV6ADDRESS$ + ")" + subexp(subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + "(" + ZONEID$ + ")") + "?\\]?$") //RFC 6874, with relaxed parsing rules - }; -} -export default buildExps(false); -//# sourceMappingURL=regexps-uri.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/regexps-uri.js.map b/node_modules/uri-js/dist/esnext/regexps-uri.js.map deleted file mode 100644 index cb028b8..0000000 --- a/node_modules/uri-js/dist/esnext/regexps-uri.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"regexps-uri.js","sourceRoot":"","sources":["../../src/regexps-uri.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/http.d.ts b/node_modules/uri-js/dist/esnext/schemes/http.d.ts deleted file mode 100644 index 3899956..0000000 --- a/node_modules/uri-js/dist/esnext/schemes/http.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { URISchemeHandler } from "../uri"; -declare const handler: URISchemeHandler; -export default handler; diff --git a/node_modules/uri-js/dist/esnext/schemes/http.js b/node_modules/uri-js/dist/esnext/schemes/http.js deleted file mode 100644 index a280369..0000000 --- a/node_modules/uri-js/dist/esnext/schemes/http.js +++ /dev/null @@ -1,27 +0,0 @@ -const handler = { - scheme: "http", - domainHost: true, - parse: function (components, options) { - //report missing host - if (!components.host) { - components.error = components.error || "HTTP URIs must have a host."; - } - return components; - }, - serialize: function (components, options) { - //normalize the default port - if (components.port === (String(components.scheme).toLowerCase() !== "https" ? 80 : 443) || components.port === "") { - components.port = undefined; - } - //normalize the empty path - if (!components.path) { - components.path = "/"; - } - //NOTE: We do not parse query strings for HTTP URIs - //as WWW Form Url Encoded query strings are part of the HTML4+ spec, - //and not the HTTP spec. - return components; - } -}; -export default handler; -//# sourceMappingURL=http.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/http.js.map b/node_modules/uri-js/dist/esnext/schemes/http.js.map deleted file mode 100644 index 83e2ad5..0000000 --- a/node_modules/uri-js/dist/esnext/schemes/http.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/schemes/http.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAoB;IAChC,MAAM,EAAG,MAAM;IAEf,UAAU,EAAG,IAAI;IAEjB,KAAK,EAAG,UAAU,UAAwB,EAAE,OAAkB;QAC7D,qBAAqB;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACrB,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,6BAA6B,CAAC;SACrE;QAED,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,SAAS,EAAG,UAAU,UAAwB,EAAE,OAAkB;QACjE,4BAA4B;QAC5B,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,EAAE,EAAE;YACnH,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC;SAC5B;QAED,0BAA0B;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACrB,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;SACtB;QAED,mDAAmD;QACnD,oEAAoE;QACpE,wBAAwB;QAExB,OAAO,UAAU,CAAC;IACnB,CAAC;CACD,CAAC;AAEF,eAAe,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/https.d.ts b/node_modules/uri-js/dist/esnext/schemes/https.d.ts deleted file mode 100644 index 3899956..0000000 --- a/node_modules/uri-js/dist/esnext/schemes/https.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { URISchemeHandler } from "../uri"; -declare const handler: URISchemeHandler; -export default handler; diff --git a/node_modules/uri-js/dist/esnext/schemes/https.js b/node_modules/uri-js/dist/esnext/schemes/https.js deleted file mode 100644 index fc3c71a..0000000 --- a/node_modules/uri-js/dist/esnext/schemes/https.js +++ /dev/null @@ -1,9 +0,0 @@ -import http from "./http"; -const handler = { - scheme: "https", - domainHost: http.domainHost, - parse: http.parse, - serialize: http.serialize -}; -export default handler; -//# sourceMappingURL=https.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/https.js.map b/node_modules/uri-js/dist/esnext/schemes/https.js.map deleted file mode 100644 index 385b8ef..0000000 --- a/node_modules/uri-js/dist/esnext/schemes/https.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"https.js","sourceRoot":"","sources":["../../../src/schemes/https.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,MAAM,OAAO,GAAoB;IAChC,MAAM,EAAG,OAAO;IAChB,UAAU,EAAG,IAAI,CAAC,UAAU;IAC5B,KAAK,EAAG,IAAI,CAAC,KAAK;IAClB,SAAS,EAAG,IAAI,CAAC,SAAS;CAC1B,CAAA;AAED,eAAe,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts b/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts deleted file mode 100644 index b0db4bf..0000000 --- a/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { URISchemeHandler, URIComponents } from "../uri"; -export interface MailtoHeaders { - [hfname: string]: string; -} -export interface MailtoComponents extends URIComponents { - to: Array; - headers?: MailtoHeaders; - subject?: string; - body?: string; -} -declare const handler: URISchemeHandler; -export default handler; diff --git a/node_modules/uri-js/dist/esnext/schemes/mailto.js b/node_modules/uri-js/dist/esnext/schemes/mailto.js deleted file mode 100644 index 2553713..0000000 --- a/node_modules/uri-js/dist/esnext/schemes/mailto.js +++ /dev/null @@ -1,148 +0,0 @@ -import { pctEncChar, pctDecChars, unescapeComponent } from "../uri"; -import punycode from "punycode"; -import { merge, subexp, toUpperCase, toArray } from "../util"; -const O = {}; -const isIRI = true; -//RFC 3986 -const UNRESERVED$$ = "[A-Za-z0-9\\-\\.\\_\\~" + (isIRI ? "\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF" : "") + "]"; -const HEXDIG$$ = "[0-9A-Fa-f]"; //case-insensitive -const PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)); //expanded -//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; = -//const ATEXT$$ = "[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]"; -//const WSP$$ = "[\\x20\\x09]"; -//const OBS_QTEXT$$ = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"; //(%d1-8 / %d11-12 / %d14-31 / %d127) -//const QTEXT$$ = merge("[\\x21\\x23-\\x5B\\x5D-\\x7E]", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext -//const VCHAR$$ = "[\\x21-\\x7E]"; -//const WSP$$ = "[\\x20\\x09]"; -//const OBS_QP$ = subexp("\\\\" + merge("[\\x00\\x0D\\x0A]", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext -//const FWS$ = subexp(subexp(WSP$$ + "*" + "\\x0D\\x0A") + "?" + WSP$$ + "+"); -//const QUOTED_PAIR$ = subexp(subexp("\\\\" + subexp(VCHAR$$ + "|" + WSP$$)) + "|" + OBS_QP$); -//const QUOTED_STRING$ = subexp('\\"' + subexp(FWS$ + "?" + QCONTENT$) + "*" + FWS$ + "?" + '\\"'); -const ATEXT$$ = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]"; -const QTEXT$$ = "[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]"; -const VCHAR$$ = merge(QTEXT$$, "[\\\"\\\\]"); -const DOT_ATOM_TEXT$ = subexp(ATEXT$$ + "+" + subexp("\\." + ATEXT$$ + "+") + "*"); -const QUOTED_PAIR$ = subexp("\\\\" + VCHAR$$); -const QCONTENT$ = subexp(QTEXT$$ + "|" + QUOTED_PAIR$); -const QUOTED_STRING$ = subexp('\\"' + QCONTENT$ + "*" + '\\"'); -//RFC 6068 -const DTEXT_NO_OBS$$ = "[\\x21-\\x5A\\x5E-\\x7E]"; //%d33-90 / %d94-126 -const SOME_DELIMS$$ = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"; -const QCHAR$ = subexp(UNRESERVED$$ + "|" + PCT_ENCODED$ + "|" + SOME_DELIMS$$); -const DOMAIN$ = subexp(DOT_ATOM_TEXT$ + "|" + "\\[" + DTEXT_NO_OBS$$ + "*" + "\\]"); -const LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + "|" + QUOTED_STRING$); -const ADDR_SPEC$ = subexp(LOCAL_PART$ + "\\@" + DOMAIN$); -const TO$ = subexp(ADDR_SPEC$ + subexp("\\," + ADDR_SPEC$) + "*"); -const HFNAME$ = subexp(QCHAR$ + "*"); -const HFVALUE$ = HFNAME$; -const HFIELD$ = subexp(HFNAME$ + "\\=" + HFVALUE$); -const HFIELDS2$ = subexp(HFIELD$ + subexp("\\&" + HFIELD$) + "*"); -const HFIELDS$ = subexp("\\?" + HFIELDS2$); -const MAILTO_URI = new RegExp("^mailto\\:" + TO$ + "?" + HFIELDS$ + "?$"); -const UNRESERVED = new RegExp(UNRESERVED$$, "g"); -const PCT_ENCODED = new RegExp(PCT_ENCODED$, "g"); -const NOT_LOCAL_PART = new RegExp(merge("[^]", ATEXT$$, "[\\.]", '[\\"]', VCHAR$$), "g"); -const NOT_DOMAIN = new RegExp(merge("[^]", ATEXT$$, "[\\.]", "[\\[]", DTEXT_NO_OBS$$, "[\\]]"), "g"); -const NOT_HFNAME = new RegExp(merge("[^]", UNRESERVED$$, SOME_DELIMS$$), "g"); -const NOT_HFVALUE = NOT_HFNAME; -const TO = new RegExp("^" + TO$ + "$"); -const HFIELDS = new RegExp("^" + HFIELDS2$ + "$"); -function decodeUnreserved(str) { - const decStr = pctDecChars(str); - return (!decStr.match(UNRESERVED) ? str : decStr); -} -const handler = { - scheme: "mailto", - parse: function (components, options) { - const mailtoComponents = components; - const to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(",") : []); - mailtoComponents.path = undefined; - if (mailtoComponents.query) { - let unknownHeaders = false; - const headers = {}; - const hfields = mailtoComponents.query.split("&"); - for (let x = 0, xl = hfields.length; x < xl; ++x) { - const hfield = hfields[x].split("="); - switch (hfield[0]) { - case "to": - const toAddrs = hfield[1].split(","); - for (let x = 0, xl = toAddrs.length; x < xl; ++x) { - to.push(toAddrs[x]); - } - break; - case "subject": - mailtoComponents.subject = unescapeComponent(hfield[1], options); - break; - case "body": - mailtoComponents.body = unescapeComponent(hfield[1], options); - break; - default: - unknownHeaders = true; - headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options); - break; - } - } - if (unknownHeaders) - mailtoComponents.headers = headers; - } - mailtoComponents.query = undefined; - for (let x = 0, xl = to.length; x < xl; ++x) { - const addr = to[x].split("@"); - addr[0] = unescapeComponent(addr[0]); - if (!options.unicodeSupport) { - //convert Unicode IDN -> ASCII IDN - try { - addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase()); - } - catch (e) { - mailtoComponents.error = mailtoComponents.error || "Email address's domain name can not be converted to ASCII via punycode: " + e; - } - } - else { - addr[1] = unescapeComponent(addr[1], options).toLowerCase(); - } - to[x] = addr.join("@"); - } - return mailtoComponents; - }, - serialize: function (mailtoComponents, options) { - const components = mailtoComponents; - const to = toArray(mailtoComponents.to); - if (to) { - for (let x = 0, xl = to.length; x < xl; ++x) { - const toAddr = String(to[x]); - const atIdx = toAddr.lastIndexOf("@"); - const localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar); - let domain = toAddr.slice(atIdx + 1); - //convert IDN via punycode - try { - domain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain)); - } - catch (e) { - components.error = components.error || "Email address's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; - } - to[x] = localPart + "@" + domain; - } - components.path = to.join(","); - } - const headers = mailtoComponents.headers = mailtoComponents.headers || {}; - if (mailtoComponents.subject) - headers["subject"] = mailtoComponents.subject; - if (mailtoComponents.body) - headers["body"] = mailtoComponents.body; - const fields = []; - for (const name in headers) { - if (headers[name] !== O[name]) { - fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + - "=" + - headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)); - } - } - if (fields.length) { - components.query = fields.join("&"); - } - return components; - } -}; -export default handler; -//# sourceMappingURL=mailto.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/mailto.js.map b/node_modules/uri-js/dist/esnext/schemes/mailto.js.map deleted file mode 100644 index 82dba9a..0000000 --- a/node_modules/uri-js/dist/esnext/schemes/mailto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mailto.js","sourceRoot":"","sources":["../../../src/schemes/mailto.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts b/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts deleted file mode 100644 index 261ddce..0000000 --- a/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { URISchemeHandler, URIOptions } from "../uri"; -import { URNComponents } from "./urn"; -export interface UUIDComponents extends URNComponents { - uuid?: string; -} -declare const handler: URISchemeHandler; -export default handler; diff --git a/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js b/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js deleted file mode 100644 index 044c8a8..0000000 --- a/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js +++ /dev/null @@ -1,23 +0,0 @@ -const UUID = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/; -const UUID_PARSE = /^[0-9A-Fa-f\-]{36}/; -//RFC 4122 -const handler = { - scheme: "urn:uuid", - parse: function (urnComponents, options) { - const uuidComponents = urnComponents; - uuidComponents.uuid = uuidComponents.nss; - uuidComponents.nss = undefined; - if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) { - uuidComponents.error = uuidComponents.error || "UUID is not valid."; - } - return uuidComponents; - }, - serialize: function (uuidComponents, options) { - const urnComponents = uuidComponents; - //normalize UUID - urnComponents.nss = (uuidComponents.uuid || "").toLowerCase(); - return urnComponents; - }, -}; -export default handler; -//# sourceMappingURL=urn-uuid.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map b/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map deleted file mode 100644 index 3b7a8b3..0000000 --- a/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"urn-uuid.js","sourceRoot":"","sources":["../../../src/schemes/urn-uuid.ts"],"names":[],"mappings":"AAQA,MAAM,IAAI,GAAG,0DAA0D,CAAC;AACxE,MAAM,UAAU,GAAG,oBAAoB,CAAC;AAExC,UAAU;AACV,MAAM,OAAO,GAA+D;IAC3E,MAAM,EAAG,UAAU;IAEnB,KAAK,EAAG,UAAU,aAA2B,EAAE,OAAkB;QAChE,MAAM,cAAc,GAAG,aAA+B,CAAC;QACvD,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC;QACzC,cAAc,CAAC,GAAG,GAAG,SAAS,CAAC;QAE/B,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;YACpF,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,IAAI,oBAAoB,CAAC;SACpE;QAED,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,SAAS,EAAG,UAAU,cAA6B,EAAE,OAAkB;QACtE,MAAM,aAAa,GAAG,cAA+B,CAAC;QACtD,gBAAgB;QAChB,aAAa,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9D,OAAO,aAAa,CAAC;IACtB,CAAC;CACD,CAAC;AAEF,eAAe,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/urn.d.ts b/node_modules/uri-js/dist/esnext/schemes/urn.d.ts deleted file mode 100644 index 4948105..0000000 --- a/node_modules/uri-js/dist/esnext/schemes/urn.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { URISchemeHandler, URIComponents, URIOptions } from "../uri"; -export interface URNComponents extends URIComponents { - nid?: string; - nss?: string; -} -export interface URNOptions extends URIOptions { - nid?: string; -} -declare const handler: URISchemeHandler; -export default handler; diff --git a/node_modules/uri-js/dist/esnext/schemes/urn.js b/node_modules/uri-js/dist/esnext/schemes/urn.js deleted file mode 100644 index b53161c..0000000 --- a/node_modules/uri-js/dist/esnext/schemes/urn.js +++ /dev/null @@ -1,49 +0,0 @@ -import { SCHEMES } from "../uri"; -const NID$ = "(?:[0-9A-Za-z][0-9A-Za-z\\-]{1,31})"; -const PCT_ENCODED$ = "(?:\\%[0-9A-Fa-f]{2})"; -const TRANS$$ = "[0-9A-Za-z\\(\\)\\+\\,\\-\\.\\:\\=\\@\\;\\$\\_\\!\\*\\'\\/\\?\\#]"; -const NSS$ = "(?:(?:" + PCT_ENCODED$ + "|" + TRANS$$ + ")+)"; -const URN_SCHEME = new RegExp("^urn\\:(" + NID$ + ")$"); -const URN_PATH = new RegExp("^(" + NID$ + ")\\:(" + NSS$ + ")$"); -const URN_PARSE = /^([^\:]+)\:(.*)/; -const URN_EXCLUDED = /[\x00-\x20\\\"\&\<\>\[\]\^\`\{\|\}\~\x7F-\xFF]/g; -//RFC 2141 -const handler = { - scheme: "urn", - parse: function (components, options) { - const matches = components.path && components.path.match(URN_PARSE); - let urnComponents = components; - if (matches) { - const scheme = options.scheme || urnComponents.scheme || "urn"; - const nid = matches[1].toLowerCase(); - const nss = matches[2]; - const urnScheme = `${scheme}:${options.nid || nid}`; - const schemeHandler = SCHEMES[urnScheme]; - urnComponents.nid = nid; - urnComponents.nss = nss; - urnComponents.path = undefined; - if (schemeHandler) { - urnComponents = schemeHandler.parse(urnComponents, options); - } - } - else { - urnComponents.error = urnComponents.error || "URN can not be parsed."; - } - return urnComponents; - }, - serialize: function (urnComponents, options) { - const scheme = options.scheme || urnComponents.scheme || "urn"; - const nid = urnComponents.nid; - const urnScheme = `${scheme}:${options.nid || nid}`; - const schemeHandler = SCHEMES[urnScheme]; - if (schemeHandler) { - urnComponents = schemeHandler.serialize(urnComponents, options); - } - const uriComponents = urnComponents; - const nss = urnComponents.nss; - uriComponents.path = `${nid || options.nid}:${nss}`; - return uriComponents; - }, -}; -export default handler; -//# sourceMappingURL=urn.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/urn.js.map b/node_modules/uri-js/dist/esnext/schemes/urn.js.map deleted file mode 100644 index ea43b0b..0000000 --- a/node_modules/uri-js/dist/esnext/schemes/urn.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"urn.js","sourceRoot":"","sources":["../../../src/schemes/urn.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,OAAO,EAAE,MAAM,QAAQ,CAAC;AAW7C,MAAM,IAAI,GAAG,qCAAqC,CAAC;AACnD,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAC7C,MAAM,OAAO,GAAG,mEAAmE,CAAC;AACpF,MAAM,IAAI,GAAG,QAAQ,GAAG,YAAY,GAAG,GAAG,GAAG,OAAO,GAAG,KAAK,CAAC;AAC7D,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AACxD,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AACjE,MAAM,SAAS,GAAG,iBAAiB,CAAC;AACpC,MAAM,YAAY,GAAG,iDAAiD,CAAC;AAEvE,UAAU;AACV,MAAM,OAAO,GAA8C;IAC1D,MAAM,EAAG,KAAK;IAEd,KAAK,EAAG,UAAU,UAAwB,EAAE,OAAkB;QAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,aAAa,GAAG,UAA2B,CAAC;QAEhD,IAAI,OAAO,EAAE;YACZ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,IAAI,KAAK,CAAC;YAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;YACpD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAEzC,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;YACxB,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;YACxB,aAAa,CAAC,IAAI,GAAG,SAAS,CAAC;YAE/B,IAAI,aAAa,EAAE;gBAClB,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAkB,CAAC;aAC7E;SACD;aAAM;YACN,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,IAAI,wBAAwB,CAAC;SACtE;QAED,OAAO,aAAa,CAAC;IACtB,CAAC;IAED,SAAS,EAAG,UAAU,aAA2B,EAAE,OAAkB;QACpE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,IAAI,KAAK,CAAC;QAC/D,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;QAC9B,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,aAAa,EAAE;YAClB,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAkB,CAAC;SACjF;QAED,MAAM,aAAa,GAAG,aAA8B,CAAC;QACrD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;QAC9B,aAAa,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QAEpD,OAAO,aAAa,CAAC;IACtB,CAAC;CACD,CAAC;AAEF,eAAe,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/uri.d.ts b/node_modules/uri-js/dist/esnext/uri.d.ts deleted file mode 100644 index 320f534..0000000 --- a/node_modules/uri-js/dist/esnext/uri.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -export interface URIComponents { - scheme?: string; - userinfo?: string; - host?: string; - port?: number | string; - path?: string; - query?: string; - fragment?: string; - reference?: string; - error?: string; -} -export interface URIOptions { - scheme?: string; - reference?: string; - tolerant?: boolean; - absolutePath?: boolean; - iri?: boolean; - unicodeSupport?: boolean; - domainHost?: boolean; -} -export interface URISchemeHandler { - scheme: string; - parse(components: ParentComponents, options: Options): Components; - serialize(components: Components, options: Options): ParentComponents; - unicodeSupport?: boolean; - domainHost?: boolean; - absolutePath?: boolean; -} -export interface URIRegExps { - NOT_SCHEME: RegExp; - NOT_USERINFO: RegExp; - NOT_HOST: RegExp; - NOT_PATH: RegExp; - NOT_PATH_NOSCHEME: RegExp; - NOT_QUERY: RegExp; - NOT_FRAGMENT: RegExp; - ESCAPE: RegExp; - UNRESERVED: RegExp; - OTHER_CHARS: RegExp; - PCT_ENCODED: RegExp; - IPV4ADDRESS: RegExp; - IPV6ADDRESS: RegExp; -} -export declare const SCHEMES: { - [scheme: string]: URISchemeHandler; -}; -export declare function pctEncChar(chr: string): string; -export declare function pctDecChars(str: string): string; -export declare function parse(uriString: string, options?: URIOptions): URIComponents; -export declare function removeDotSegments(input: string): string; -export declare function serialize(components: URIComponents, options?: URIOptions): string; -export declare function resolveComponents(base: URIComponents, relative: URIComponents, options?: URIOptions, skipNormalization?: boolean): URIComponents; -export declare function resolve(baseURI: string, relativeURI: string, options?: URIOptions): string; -export declare function normalize(uri: string, options?: URIOptions): string; -export declare function normalize(uri: URIComponents, options?: URIOptions): URIComponents; -export declare function equal(uriA: string, uriB: string, options?: URIOptions): boolean; -export declare function equal(uriA: URIComponents, uriB: URIComponents, options?: URIOptions): boolean; -export declare function escapeComponent(str: string, options?: URIOptions): string; -export declare function unescapeComponent(str: string, options?: URIOptions): string; diff --git a/node_modules/uri-js/dist/esnext/uri.js b/node_modules/uri-js/dist/esnext/uri.js deleted file mode 100644 index 2fb6d71..0000000 --- a/node_modules/uri-js/dist/esnext/uri.js +++ /dev/null @@ -1,480 +0,0 @@ -/** - * URI.js - * - * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript. - * @author Gary Court - * @see http://github.com/garycourt/uri-js - */ -/** - * Copyright 2011 Gary Court. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of Gary Court. - */ -import URI_PROTOCOL from "./regexps-uri"; -import IRI_PROTOCOL from "./regexps-iri"; -import punycode from "punycode"; -import { toUpperCase, typeOf, assign } from "./util"; -export const SCHEMES = {}; -export function pctEncChar(chr) { - const c = chr.charCodeAt(0); - let e; - if (c < 16) - e = "%0" + c.toString(16).toUpperCase(); - else if (c < 128) - e = "%" + c.toString(16).toUpperCase(); - else if (c < 2048) - e = "%" + ((c >> 6) | 192).toString(16).toUpperCase() + "%" + ((c & 63) | 128).toString(16).toUpperCase(); - else - e = "%" + ((c >> 12) | 224).toString(16).toUpperCase() + "%" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + "%" + ((c & 63) | 128).toString(16).toUpperCase(); - return e; -} -export function pctDecChars(str) { - let newStr = ""; - let i = 0; - const il = str.length; - while (i < il) { - const c = parseInt(str.substr(i + 1, 2), 16); - if (c < 128) { - newStr += String.fromCharCode(c); - i += 3; - } - else if (c >= 194 && c < 224) { - if ((il - i) >= 6) { - const c2 = parseInt(str.substr(i + 4, 2), 16); - newStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); - } - else { - newStr += str.substr(i, 6); - } - i += 6; - } - else if (c >= 224) { - if ((il - i) >= 9) { - const c2 = parseInt(str.substr(i + 4, 2), 16); - const c3 = parseInt(str.substr(i + 7, 2), 16); - newStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); - } - else { - newStr += str.substr(i, 9); - } - i += 9; - } - else { - newStr += str.substr(i, 3); - i += 3; - } - } - return newStr; -} -function _normalizeComponentEncoding(components, protocol) { - function decodeUnreserved(str) { - const decStr = pctDecChars(str); - return (!decStr.match(protocol.UNRESERVED) ? str : decStr); - } - if (components.scheme) - components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, ""); - if (components.userinfo !== undefined) - components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.host !== undefined) - components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.path !== undefined) - components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.query !== undefined) - components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.fragment !== undefined) - components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - return components; -} -; -function _stripLeadingZeros(str) { - return str.replace(/^0*(.*)/, "$1") || "0"; -} -function _normalizeIPv4(host, protocol) { - const matches = host.match(protocol.IPV4ADDRESS) || []; - const [, address] = matches; - if (address) { - return address.split(".").map(_stripLeadingZeros).join("."); - } - else { - return host; - } -} -function _normalizeIPv6(host, protocol) { - const matches = host.match(protocol.IPV6ADDRESS) || []; - const [, address, zone] = matches; - if (address) { - const [last, first] = address.toLowerCase().split('::').reverse(); - const firstFields = first ? first.split(":").map(_stripLeadingZeros) : []; - const lastFields = last.split(":").map(_stripLeadingZeros); - const isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]); - const fieldCount = isLastFieldIPv4Address ? 7 : 8; - const lastFieldsStart = lastFields.length - fieldCount; - const fields = Array(fieldCount); - for (let x = 0; x < fieldCount; ++x) { - fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || ''; - } - if (isLastFieldIPv4Address) { - fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol); - } - const allZeroFields = fields.reduce((acc, field, index) => { - if (!field || field === "0") { - const lastLongest = acc[acc.length - 1]; - if (lastLongest && lastLongest.index + lastLongest.length === index) { - lastLongest.length++; - } - else { - acc.push({ index, length: 1 }); - } - } - return acc; - }, []); - const longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0]; - let newHost; - if (longestZeroFields && longestZeroFields.length > 1) { - const newFirst = fields.slice(0, longestZeroFields.index); - const newLast = fields.slice(longestZeroFields.index + longestZeroFields.length); - newHost = newFirst.join(":") + "::" + newLast.join(":"); - } - else { - newHost = fields.join(":"); - } - if (zone) { - newHost += "%" + zone; - } - return newHost; - } - else { - return host; - } -} -const URI_PARSE = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i; -const NO_MATCH_IS_UNDEFINED = ("").match(/(){0}/)[1] === undefined; -export function parse(uriString, options = {}) { - const components = {}; - const protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL); - if (options.reference === "suffix") - uriString = (options.scheme ? options.scheme + ":" : "") + "//" + uriString; - const matches = uriString.match(URI_PARSE); - if (matches) { - if (NO_MATCH_IS_UNDEFINED) { - //store each component - components.scheme = matches[1]; - components.userinfo = matches[3]; - components.host = matches[4]; - components.port = parseInt(matches[5], 10); - components.path = matches[6] || ""; - components.query = matches[7]; - components.fragment = matches[8]; - //fix port number - if (isNaN(components.port)) { - components.port = matches[5]; - } - } - else { //IE FIX for improper RegExp matching - //store each component - components.scheme = matches[1] || undefined; - components.userinfo = (uriString.indexOf("@") !== -1 ? matches[3] : undefined); - components.host = (uriString.indexOf("//") !== -1 ? matches[4] : undefined); - components.port = parseInt(matches[5], 10); - components.path = matches[6] || ""; - components.query = (uriString.indexOf("?") !== -1 ? matches[7] : undefined); - components.fragment = (uriString.indexOf("#") !== -1 ? matches[8] : undefined); - //fix port number - if (isNaN(components.port)) { - components.port = (uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? matches[4] : undefined); - } - } - if (components.host) { - //normalize IP hosts - components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol); - } - //determine reference type - if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) { - components.reference = "same-document"; - } - else if (components.scheme === undefined) { - components.reference = "relative"; - } - else if (components.fragment === undefined) { - components.reference = "absolute"; - } - else { - components.reference = "uri"; - } - //check for reference errors - if (options.reference && options.reference !== "suffix" && options.reference !== components.reference) { - components.error = components.error || "URI is not a " + options.reference + " reference."; - } - //find scheme handler - const schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; - //check if scheme can't handle IRIs - if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) { - //if host component is a domain name - if (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) { - //convert Unicode IDN -> ASCII IDN - try { - components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()); - } - catch (e) { - components.error = components.error || "Host's domain name can not be converted to ASCII via punycode: " + e; - } - } - //convert IRI -> URI - _normalizeComponentEncoding(components, URI_PROTOCOL); - } - else { - //normalize encodings - _normalizeComponentEncoding(components, protocol); - } - //perform scheme specific parsing - if (schemeHandler && schemeHandler.parse) { - schemeHandler.parse(components, options); - } - } - else { - components.error = components.error || "URI can not be parsed."; - } - return components; -} -; -function _recomposeAuthority(components, options) { - const protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL); - const uriTokens = []; - if (components.userinfo !== undefined) { - uriTokens.push(components.userinfo); - uriTokens.push("@"); - } - if (components.host !== undefined) { - //normalize IP hosts, add brackets and escape zone separator for IPv6 - uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => "[" + $1 + ($2 ? "%25" + $2 : "") + "]")); - } - if (typeof components.port === "number") { - uriTokens.push(":"); - uriTokens.push(components.port.toString(10)); - } - return uriTokens.length ? uriTokens.join("") : undefined; -} -; -const RDS1 = /^\.\.?\//; -const RDS2 = /^\/\.(\/|$)/; -const RDS3 = /^\/\.\.(\/|$)/; -const RDS4 = /^\.\.?$/; -const RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/; -export function removeDotSegments(input) { - const output = []; - while (input.length) { - if (input.match(RDS1)) { - input = input.replace(RDS1, ""); - } - else if (input.match(RDS2)) { - input = input.replace(RDS2, "/"); - } - else if (input.match(RDS3)) { - input = input.replace(RDS3, "/"); - output.pop(); - } - else if (input === "." || input === "..") { - input = ""; - } - else { - const im = input.match(RDS5); - if (im) { - const s = im[0]; - input = input.slice(s.length); - output.push(s); - } - else { - throw new Error("Unexpected dot segment condition"); - } - } - } - return output.join(""); -} -; -export function serialize(components, options = {}) { - const protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL); - const uriTokens = []; - //find scheme handler - const schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; - //perform scheme specific serialization - if (schemeHandler && schemeHandler.serialize) - schemeHandler.serialize(components, options); - if (components.host) { - //if host component is an IPv6 address - if (protocol.IPV6ADDRESS.test(components.host)) { - //TODO: normalize IPv6 address as per RFC 5952 - } - //if host component is a domain name - else if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) { - //convert IDN via punycode - try { - components.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host)); - } - catch (e) { - components.error = components.error || "Host's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; - } - } - } - //normalize encoding - _normalizeComponentEncoding(components, protocol); - if (options.reference !== "suffix" && components.scheme) { - uriTokens.push(components.scheme); - uriTokens.push(":"); - } - const authority = _recomposeAuthority(components, options); - if (authority !== undefined) { - if (options.reference !== "suffix") { - uriTokens.push("//"); - } - uriTokens.push(authority); - if (components.path && components.path.charAt(0) !== "/") { - uriTokens.push("/"); - } - } - if (components.path !== undefined) { - let s = components.path; - if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) { - s = removeDotSegments(s); - } - if (authority === undefined) { - s = s.replace(/^\/\//, "/%2F"); //don't allow the path to start with "//" - } - uriTokens.push(s); - } - if (components.query !== undefined) { - uriTokens.push("?"); - uriTokens.push(components.query); - } - if (components.fragment !== undefined) { - uriTokens.push("#"); - uriTokens.push(components.fragment); - } - return uriTokens.join(""); //merge tokens into a string -} -; -export function resolveComponents(base, relative, options = {}, skipNormalization) { - const target = {}; - if (!skipNormalization) { - base = parse(serialize(base, options), options); //normalize base components - relative = parse(serialize(relative, options), options); //normalize relative components - } - options = options || {}; - if (!options.tolerant && relative.scheme) { - target.scheme = relative.scheme; - //target.authority = relative.authority; - target.userinfo = relative.userinfo; - target.host = relative.host; - target.port = relative.port; - target.path = removeDotSegments(relative.path || ""); - target.query = relative.query; - } - else { - if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) { - //target.authority = relative.authority; - target.userinfo = relative.userinfo; - target.host = relative.host; - target.port = relative.port; - target.path = removeDotSegments(relative.path || ""); - target.query = relative.query; - } - else { - if (!relative.path) { - target.path = base.path; - if (relative.query !== undefined) { - target.query = relative.query; - } - else { - target.query = base.query; - } - } - else { - if (relative.path.charAt(0) === "/") { - target.path = removeDotSegments(relative.path); - } - else { - if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) { - target.path = "/" + relative.path; - } - else if (!base.path) { - target.path = relative.path; - } - else { - target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path; - } - target.path = removeDotSegments(target.path); - } - target.query = relative.query; - } - //target.authority = base.authority; - target.userinfo = base.userinfo; - target.host = base.host; - target.port = base.port; - } - target.scheme = base.scheme; - } - target.fragment = relative.fragment; - return target; -} -; -export function resolve(baseURI, relativeURI, options) { - const schemelessOptions = assign({ scheme: 'null' }, options); - return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions); -} -; -export function normalize(uri, options) { - if (typeof uri === "string") { - uri = serialize(parse(uri, options), options); - } - else if (typeOf(uri) === "object") { - uri = parse(serialize(uri, options), options); - } - return uri; -} -; -export function equal(uriA, uriB, options) { - if (typeof uriA === "string") { - uriA = serialize(parse(uriA, options), options); - } - else if (typeOf(uriA) === "object") { - uriA = serialize(uriA, options); - } - if (typeof uriB === "string") { - uriB = serialize(parse(uriB, options), options); - } - else if (typeOf(uriB) === "object") { - uriB = serialize(uriB, options); - } - return uriA === uriB; -} -; -export function escapeComponent(str, options) { - return str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar); -} -; -export function unescapeComponent(str, options) { - return str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars); -} -; -//# sourceMappingURL=uri.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/uri.js.map b/node_modules/uri-js/dist/esnext/uri.js.map deleted file mode 100644 index e1d831c..0000000 --- a/node_modules/uri-js/dist/esnext/uri.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uri.js","sourceRoot":"","sources":["../../src/uri.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/util.d.ts b/node_modules/uri-js/dist/esnext/util.d.ts deleted file mode 100644 index 8b484cd..0000000 --- a/node_modules/uri-js/dist/esnext/util.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export declare function merge(...sets: Array): string; -export declare function subexp(str: string): string; -export declare function typeOf(o: any): string; -export declare function toUpperCase(str: string): string; -export declare function toArray(obj: any): Array; -export declare function assign(target: object, source: any): any; diff --git a/node_modules/uri-js/dist/esnext/util.js b/node_modules/uri-js/dist/esnext/util.js deleted file mode 100644 index 45af46f..0000000 --- a/node_modules/uri-js/dist/esnext/util.js +++ /dev/null @@ -1,36 +0,0 @@ -export function merge(...sets) { - if (sets.length > 1) { - sets[0] = sets[0].slice(0, -1); - const xl = sets.length - 1; - for (let x = 1; x < xl; ++x) { - sets[x] = sets[x].slice(1, -1); - } - sets[xl] = sets[xl].slice(1); - return sets.join(''); - } - else { - return sets[0]; - } -} -export function subexp(str) { - return "(?:" + str + ")"; -} -export function typeOf(o) { - return o === undefined ? "undefined" : (o === null ? "null" : Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase()); -} -export function toUpperCase(str) { - return str.toUpperCase(); -} -export function toArray(obj) { - return obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== "number" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : []; -} -export function assign(target, source) { - const obj = target; - if (source) { - for (const key in source) { - obj[key] = source[key]; - } - } - return obj; -} -//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/util.js.map b/node_modules/uri-js/dist/esnext/util.js.map deleted file mode 100644 index 05d9df0..0000000 --- a/node_modules/uri-js/dist/esnext/util.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,IAAkB;IAC1C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;YAC5B,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACrB;SAAM;QACN,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;KACf;AACF,CAAC;AAED,MAAM,iBAAiB,GAAU;IAChC,OAAO,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1B,CAAC;AAED,MAAM,iBAAiB,CAAK;IAC3B,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACpJ,CAAC;AAED,MAAM,sBAAsB,GAAU;IACrC,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,kBAAkB,GAAO;IAC9B,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvM,CAAC;AAGD,MAAM,iBAAiB,MAAc,EAAE,MAAW;IACjD,MAAM,GAAG,GAAG,MAAa,CAAC;IAC1B,IAAI,MAAM,EAAE;QACX,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;YACzB,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;SACvB;KACD;IACD,OAAO,GAAG,CAAC;AACZ,CAAC"} \ No newline at end of file diff --git a/node_modules/uri-js/package.json b/node_modules/uri-js/package.json deleted file mode 100644 index e6053a2..0000000 --- a/node_modules/uri-js/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "_from": "uri-js@^4.2.2", - "_id": "uri-js@4.2.2", - "_inBundle": false, - "_integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "_location": "/uri-js", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "uri-js@^4.2.2", - "name": "uri-js", - "escapedName": "uri-js", - "rawSpec": "^4.2.2", - "saveSpec": null, - "fetchSpec": "^4.2.2" - }, - "_requiredBy": [ - "/ajv" - ], - "_resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "_shasum": "94c540e1ff772956e2299507c010aea6c8838eb0", - "_spec": "uri-js@^4.2.2", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/ajv", - "author": { - "name": "Gary Court", - "email": "gary.court@gmail.com" - }, - "bugs": { - "url": "https://github.com/garycourt/uri-js/issues" - }, - "bundleDependencies": false, - "dependencies": { - "punycode": "^2.1.0" - }, - "deprecated": false, - "description": "An RFC 3986/3987 compliant, scheme extendable URI/IRI parsing/validating/resolving library for JavaScript.", - "devDependencies": { - "babel-cli": "^6.26.0", - "babel-plugin-external-helpers": "^6.22.0", - "babel-preset-latest": "^6.24.1", - "mocha": "^3.2.0", - "mocha-qunit-ui": "^0.1.3", - "rollup": "^0.41.6", - "rollup-plugin-babel": "^2.7.1", - "rollup-plugin-node-resolve": "^2.0.0", - "sorcery": "^0.10.0", - "typescript": "^2.8.1", - "uglify-js": "^2.8.14" - }, - "directories": { - "test": "tests" - }, - "homepage": "https://github.com/garycourt/uri-js", - "keywords": [ - "URI", - "IRI", - "IDN", - "URN", - "UUID", - "HTTP", - "HTTPS", - "MAILTO", - "RFC3986", - "RFC3987", - "RFC5891", - "RFC2616", - "RFC2818", - "RFC2141", - "RFC4122", - "RFC4291", - "RFC5952", - "RFC6068", - "RFC6874" - ], - "license": "BSD-2-Clause", - "main": "dist/es5/uri.all.js", - "name": "uri-js", - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/garycourt/uri-js.git" - }, - "scripts": { - "build": "npm run build:esnext && npm run build:es5 && npm run build:es5:min", - "build:es5": "rollup -c && cp dist/esnext/uri.d.ts dist/es5/uri.all.d.ts && npm run build:es5:fix-sourcemap", - "build:es5:fix-sourcemap": "sorcery -i dist/es5/uri.all.js", - "build:es5:min": "uglifyjs dist/es5/uri.all.js --support-ie8 --output dist/es5/uri.all.min.js --in-source-map dist/es5/uri.all.js.map --source-map uri.all.min.js.map --comments --compress --mangle --pure-funcs merge subexp && mv uri.all.min.js.map dist/es5/ && cp dist/es5/uri.all.d.ts dist/es5/uri.all.min.d.ts", - "build:esnext": "tsc", - "test": "mocha -u mocha-qunit-ui dist/es5/uri.all.js tests/tests.js" - }, - "types": "dist/es5/uri.all.d.ts", - "version": "4.2.2" -} diff --git a/node_modules/uri-js/rollup.config.js b/node_modules/uri-js/rollup.config.js deleted file mode 100644 index 5bb8b05..0000000 --- a/node_modules/uri-js/rollup.config.js +++ /dev/null @@ -1,32 +0,0 @@ -import resolve from 'rollup-plugin-node-resolve'; -import babel from 'rollup-plugin-babel'; -const packageJson = require('./package.json'); - -export default { - entry : "dist/esnext/index.js", - format : "umd", - moduleName : "URI", - plugins: [ - resolve({ - module: true, - jsnext: true, - preferBuiltins: false - }), - - babel({ - "presets": [ - ["latest", { - "es2015": { - "modules": false - } - }] - ], - "plugins": ["external-helpers"], - "externalHelpers": false - } -) - ], - dest : "dist/es5/uri.all.js", - sourceMap: true, - banner: "/** @license URI.js v" + packageJson.version + " (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */" -} diff --git a/node_modules/uri-js/src/index.ts b/node_modules/uri-js/src/index.ts deleted file mode 100644 index 6532a1b..0000000 --- a/node_modules/uri-js/src/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { SCHEMES } from "./uri"; - -import http from "./schemes/http"; -SCHEMES[http.scheme] = http; - -import https from "./schemes/https"; -SCHEMES[https.scheme] = https; - -import mailto from "./schemes/mailto"; -SCHEMES[mailto.scheme] = mailto; - -import urn from "./schemes/urn"; -SCHEMES[urn.scheme] = urn; - -import uuid from "./schemes/urn-uuid"; -SCHEMES[uuid.scheme] = uuid; - -export * from "./uri"; diff --git a/node_modules/uri-js/src/punycode.d.ts b/node_modules/uri-js/src/punycode.d.ts deleted file mode 100644 index 4ecbd34..0000000 --- a/node_modules/uri-js/src/punycode.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -declare module 'punycode' { - function ucs2decode(string:string):Array; - function ucs2encode(array:Array):string; - function decode(string:string):string; - function encode(string:string):string; - function toASCII(string:string):string; - function toUnicode(string:string):string; - - interface Punycode { - 'version': '2.2.0'; - 'ucs2': { - 'decode': typeof ucs2decode; - 'encode': typeof ucs2encode; - }, - 'decode': typeof decode; - 'encode': typeof encode; - 'toASCII': typeof toASCII; - 'toUnicode': typeof toUnicode; - } - - const punycode:Punycode; - - export default punycode; -} diff --git a/node_modules/uri-js/src/regexps-iri.ts b/node_modules/uri-js/src/regexps-iri.ts deleted file mode 100644 index 8bd605b..0000000 --- a/node_modules/uri-js/src/regexps-iri.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { URIRegExps } from "./uri"; -import { buildExps } from "./regexps-uri"; - -export default buildExps(true); diff --git a/node_modules/uri-js/src/regexps-uri.ts b/node_modules/uri-js/src/regexps-uri.ts deleted file mode 100644 index 8d6b547..0000000 --- a/node_modules/uri-js/src/regexps-uri.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { URIRegExps } from "./uri"; -import { merge, subexp } from "./util"; - -export function buildExps(isIRI:boolean):URIRegExps { - const - ALPHA$$ = "[A-Za-z]", - CR$ = "[\\x0D]", - DIGIT$$ = "[0-9]", - DQUOTE$$ = "[\\x22]", - HEXDIG$$ = merge(DIGIT$$, "[A-Fa-f]"), //case-insensitive - LF$$ = "[\\x0A]", - SP$$ = "[\\x20]", - PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)), //expanded - GEN_DELIMS$$ = "[\\:\\/\\?\\#\\[\\]\\@]", - SUB_DELIMS$$ = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]", - RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$), - UCSCHAR$$ = isIRI ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]", //subset, excludes bidi control characters - IPRIVATE$$ = isIRI ? "[\\uE000-\\uF8FF]" : "[]", //subset - UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, "[\\-\\.\\_\\~]", UCSCHAR$$), - SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, "[\\+\\-\\.]") + "*"), - USERINFO$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]")) + "*"), - DEC_OCTET$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("[1-9]" + DIGIT$$) + "|" + DIGIT$$), - DEC_OCTET_RELAXED$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("0?[1-9]" + DIGIT$$) + "|0?0?" + DIGIT$$), //relaxed parsing rules - IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$), - H16$ = subexp(HEXDIG$$ + "{1,4}"), - LS32$ = subexp(subexp(H16$ + "\\:" + H16$) + "|" + IPV4ADDRESS$), - IPV6ADDRESS1$ = subexp( subexp(H16$ + "\\:") + "{6}" + LS32$), // 6( h16 ":" ) ls32 - IPV6ADDRESS2$ = subexp( "\\:\\:" + subexp(H16$ + "\\:") + "{5}" + LS32$), // "::" 5( h16 ":" ) ls32 - IPV6ADDRESS3$ = subexp(subexp( H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{4}" + LS32$), //[ h16 ] "::" 4( h16 ":" ) ls32 - IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,1}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{3}" + LS32$), //[ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 - IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,2}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{2}" + LS32$), //[ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 - IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,3}" + H16$) + "?\\:\\:" + H16$ + "\\:" + LS32$), //[ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 - IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,4}" + H16$) + "?\\:\\:" + LS32$), //[ *4( h16 ":" ) h16 ] "::" ls32 - IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,5}" + H16$) + "?\\:\\:" + H16$ ), //[ *5( h16 ":" ) h16 ] "::" h16 - IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,6}" + H16$) + "?\\:\\:" ), //[ *6( h16 ":" ) h16 ] "::" - IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join("|")), - ZONEID$ = subexp(subexp(UNRESERVED$$ + "|" + PCT_ENCODED$) + "+"), //RFC 6874 - IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + "\\%25" + ZONEID$), //RFC 6874 - IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + ZONEID$), //RFC 6874, with relaxed parsing rules - IPVFUTURE$ = subexp("[vV]" + HEXDIG$$ + "+\\." + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]") + "+"), - IP_LITERAL$ = subexp("\\[" + subexp(IPV6ADDRZ_RELAXED$ + "|" + IPV6ADDRESS$ + "|" + IPVFUTURE$) + "\\]"), //RFC 6874 - REG_NAME$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$)) + "*"), - HOST$ = subexp(IP_LITERAL$ + "|" + IPV4ADDRESS$ + "(?!" + REG_NAME$ + ")" + "|" + REG_NAME$), - PORT$ = subexp(DIGIT$$ + "*"), - AUTHORITY$ = subexp(subexp(USERINFO$ + "@") + "?" + HOST$ + subexp("\\:" + PORT$) + "?"), - PCHAR$ = subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@]")), - SEGMENT$ = subexp(PCHAR$ + "*"), - SEGMENT_NZ$ = subexp(PCHAR$ + "+"), - SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\@]")) + "+"), - PATH_ABEMPTY$ = subexp(subexp("\\/" + SEGMENT$) + "*"), - PATH_ABSOLUTE$ = subexp("\\/" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + "?"), //simplified - PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified - PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified - PATH_EMPTY$ = "(?!" + PCHAR$ + ")", - PATH$ = subexp(PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), - QUERY$ = subexp(subexp(PCHAR$ + "|" + merge("[\\/\\?]", IPRIVATE$$)) + "*"), - FRAGMENT$ = subexp(subexp(PCHAR$ + "|[\\/\\?]") + "*"), - HIER_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), - URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), - RELATIVE_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$), - RELATIVE$ = subexp(RELATIVE_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), - URI_REFERENCE$ = subexp(URI$ + "|" + RELATIVE$), - ABSOLUTE_URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?"), - - GENERIC_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", - RELATIVE_REF$ = "^(){0}" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", - ABSOLUTE_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?$", - SAMEDOC_REF$ = "^" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", - AUTHORITY_REF$ = "^" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?$" - ; - - return { - NOT_SCHEME : new RegExp(merge("[^]", ALPHA$$, DIGIT$$, "[\\+\\-\\.]"), "g"), - NOT_USERINFO : new RegExp(merge("[^\\%\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_HOST : new RegExp(merge("[^\\%\\[\\]\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_PATH : new RegExp(merge("[^\\%\\/\\:\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_PATH_NOSCHEME : new RegExp(merge("[^\\%\\/\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_QUERY : new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]", IPRIVATE$$), "g"), - NOT_FRAGMENT : new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]"), "g"), - ESCAPE : new RegExp(merge("[^]", UNRESERVED$$, SUB_DELIMS$$), "g"), - UNRESERVED : new RegExp(UNRESERVED$$, "g"), - OTHER_CHARS : new RegExp(merge("[^\\%]", UNRESERVED$$, RESERVED$$), "g"), - PCT_ENCODED : new RegExp(PCT_ENCODED$, "g"), - IPV4ADDRESS : new RegExp("^(" + IPV4ADDRESS$ + ")$"), - IPV6ADDRESS : new RegExp("^\\[?(" + IPV6ADDRESS$ + ")" + subexp(subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + "(" + ZONEID$ + ")") + "?\\]?$") //RFC 6874, with relaxed parsing rules - }; -} - -export default buildExps(false); diff --git a/node_modules/uri-js/src/schemes/http.ts b/node_modules/uri-js/src/schemes/http.ts deleted file mode 100644 index 3e53145..0000000 --- a/node_modules/uri-js/src/schemes/http.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { URISchemeHandler, URIComponents, URIOptions } from "../uri"; - -const handler:URISchemeHandler = { - scheme : "http", - - domainHost : true, - - parse : function (components:URIComponents, options:URIOptions):URIComponents { - //report missing host - if (!components.host) { - components.error = components.error || "HTTP URIs must have a host."; - } - - return components; - }, - - serialize : function (components:URIComponents, options:URIOptions):URIComponents { - //normalize the default port - if (components.port === (String(components.scheme).toLowerCase() !== "https" ? 80 : 443) || components.port === "") { - components.port = undefined; - } - - //normalize the empty path - if (!components.path) { - components.path = "/"; - } - - //NOTE: We do not parse query strings for HTTP URIs - //as WWW Form Url Encoded query strings are part of the HTML4+ spec, - //and not the HTTP spec. - - return components; - } -}; - -export default handler; \ No newline at end of file diff --git a/node_modules/uri-js/src/schemes/https.ts b/node_modules/uri-js/src/schemes/https.ts deleted file mode 100644 index a19a494..0000000 --- a/node_modules/uri-js/src/schemes/https.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { URISchemeHandler, URIComponents, URIOptions } from "../uri"; -import http from "./http"; - -const handler:URISchemeHandler = { - scheme : "https", - domainHost : http.domainHost, - parse : http.parse, - serialize : http.serialize -} - -export default handler; \ No newline at end of file diff --git a/node_modules/uri-js/src/schemes/mailto.ts b/node_modules/uri-js/src/schemes/mailto.ts deleted file mode 100644 index 3faf320..0000000 --- a/node_modules/uri-js/src/schemes/mailto.ts +++ /dev/null @@ -1,182 +0,0 @@ -import { URISchemeHandler, URIComponents, URIOptions } from "../uri"; -import { pctEncChar, pctDecChars, unescapeComponent } from "../uri"; -import punycode from "punycode"; -import { merge, subexp, toUpperCase, toArray } from "../util"; - -export interface MailtoHeaders { - [hfname:string]:string -} - -export interface MailtoComponents extends URIComponents { - to:Array, - headers?:MailtoHeaders, - subject?:string, - body?:string -} - -const O:MailtoHeaders = {}; -const isIRI = true; - -//RFC 3986 -const UNRESERVED$$ = "[A-Za-z0-9\\-\\.\\_\\~" + (isIRI ? "\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF" : "") + "]"; -const HEXDIG$$ = "[0-9A-Fa-f]"; //case-insensitive -const PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)); //expanded - -//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; = -//const ATEXT$$ = "[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]"; -//const WSP$$ = "[\\x20\\x09]"; -//const OBS_QTEXT$$ = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"; //(%d1-8 / %d11-12 / %d14-31 / %d127) -//const QTEXT$$ = merge("[\\x21\\x23-\\x5B\\x5D-\\x7E]", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext -//const VCHAR$$ = "[\\x21-\\x7E]"; -//const WSP$$ = "[\\x20\\x09]"; -//const OBS_QP$ = subexp("\\\\" + merge("[\\x00\\x0D\\x0A]", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext -//const FWS$ = subexp(subexp(WSP$$ + "*" + "\\x0D\\x0A") + "?" + WSP$$ + "+"); -//const QUOTED_PAIR$ = subexp(subexp("\\\\" + subexp(VCHAR$$ + "|" + WSP$$)) + "|" + OBS_QP$); -//const QUOTED_STRING$ = subexp('\\"' + subexp(FWS$ + "?" + QCONTENT$) + "*" + FWS$ + "?" + '\\"'); -const ATEXT$$ = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]"; -const QTEXT$$ = "[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]"; -const VCHAR$$ = merge(QTEXT$$, "[\\\"\\\\]"); -const DOT_ATOM_TEXT$ = subexp(ATEXT$$ + "+" + subexp("\\." + ATEXT$$ + "+") + "*"); -const QUOTED_PAIR$ = subexp("\\\\" + VCHAR$$); -const QCONTENT$ = subexp(QTEXT$$ + "|" + QUOTED_PAIR$); -const QUOTED_STRING$ = subexp('\\"' + QCONTENT$ + "*" + '\\"'); - -//RFC 6068 -const DTEXT_NO_OBS$$ = "[\\x21-\\x5A\\x5E-\\x7E]"; //%d33-90 / %d94-126 -const SOME_DELIMS$$ = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"; -const QCHAR$ = subexp(UNRESERVED$$ + "|" + PCT_ENCODED$ + "|" + SOME_DELIMS$$); -const DOMAIN$ = subexp(DOT_ATOM_TEXT$ + "|" + "\\[" + DTEXT_NO_OBS$$ + "*" + "\\]"); -const LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + "|" + QUOTED_STRING$); -const ADDR_SPEC$ = subexp(LOCAL_PART$ + "\\@" + DOMAIN$); -const TO$ = subexp(ADDR_SPEC$ + subexp("\\," + ADDR_SPEC$) + "*"); -const HFNAME$ = subexp(QCHAR$ + "*"); -const HFVALUE$ = HFNAME$; -const HFIELD$ = subexp(HFNAME$ + "\\=" + HFVALUE$); -const HFIELDS2$ = subexp(HFIELD$ + subexp("\\&" + HFIELD$) + "*"); -const HFIELDS$ = subexp("\\?" + HFIELDS2$); -const MAILTO_URI = new RegExp("^mailto\\:" + TO$ + "?" + HFIELDS$ + "?$"); - -const UNRESERVED = new RegExp(UNRESERVED$$, "g"); -const PCT_ENCODED = new RegExp(PCT_ENCODED$, "g"); -const NOT_LOCAL_PART = new RegExp(merge("[^]", ATEXT$$, "[\\.]", '[\\"]', VCHAR$$), "g"); -const NOT_DOMAIN = new RegExp(merge("[^]", ATEXT$$, "[\\.]", "[\\[]", DTEXT_NO_OBS$$, "[\\]]"), "g"); -const NOT_HFNAME = new RegExp(merge("[^]", UNRESERVED$$, SOME_DELIMS$$), "g"); -const NOT_HFVALUE = NOT_HFNAME; -const TO = new RegExp("^" + TO$ + "$"); -const HFIELDS = new RegExp("^" + HFIELDS2$ + "$"); - -function decodeUnreserved(str:string):string { - const decStr = pctDecChars(str); - return (!decStr.match(UNRESERVED) ? str : decStr); -} - -const handler:URISchemeHandler = { - scheme : "mailto", - - parse : function (components:URIComponents, options:URIOptions):MailtoComponents { - const mailtoComponents = components as MailtoComponents; - const to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(",") : []); - mailtoComponents.path = undefined; - - if (mailtoComponents.query) { - let unknownHeaders = false - const headers:MailtoHeaders = {}; - const hfields = mailtoComponents.query.split("&"); - - for (let x = 0, xl = hfields.length; x < xl; ++x) { - const hfield = hfields[x].split("="); - - switch (hfield[0]) { - case "to": - const toAddrs = hfield[1].split(","); - for (let x = 0, xl = toAddrs.length; x < xl; ++x) { - to.push(toAddrs[x]); - } - break; - case "subject": - mailtoComponents.subject = unescapeComponent(hfield[1], options); - break; - case "body": - mailtoComponents.body = unescapeComponent(hfield[1], options); - break; - default: - unknownHeaders = true; - headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options); - break; - } - } - - if (unknownHeaders) mailtoComponents.headers = headers; - } - - mailtoComponents.query = undefined; - - for (let x = 0, xl = to.length; x < xl; ++x) { - const addr = to[x].split("@"); - - addr[0] = unescapeComponent(addr[0]); - - if (!options.unicodeSupport) { - //convert Unicode IDN -> ASCII IDN - try { - addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase()); - } catch (e) { - mailtoComponents.error = mailtoComponents.error || "Email address's domain name can not be converted to ASCII via punycode: " + e; - } - } else { - addr[1] = unescapeComponent(addr[1], options).toLowerCase(); - } - - to[x] = addr.join("@"); - } - - return mailtoComponents; - }, - - serialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents { - const components = mailtoComponents as URIComponents; - const to = toArray(mailtoComponents.to); - if (to) { - for (let x = 0, xl = to.length; x < xl; ++x) { - const toAddr = String(to[x]); - const atIdx = toAddr.lastIndexOf("@"); - const localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar); - let domain = toAddr.slice(atIdx + 1); - - //convert IDN via punycode - try { - domain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain)); - } catch (e) { - components.error = components.error || "Email address's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; - } - - to[x] = localPart + "@" + domain; - } - - components.path = to.join(","); - } - - const headers = mailtoComponents.headers = mailtoComponents.headers || {}; - - if (mailtoComponents.subject) headers["subject"] = mailtoComponents.subject; - if (mailtoComponents.body) headers["body"] = mailtoComponents.body; - - const fields = []; - for (const name in headers) { - if (headers[name] !== O[name]) { - fields.push( - name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + - "=" + - headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar) - ); - } - } - if (fields.length) { - components.query = fields.join("&"); - } - - return components; - } -} - -export default handler; \ No newline at end of file diff --git a/node_modules/uri-js/src/schemes/urn-uuid.ts b/node_modules/uri-js/src/schemes/urn-uuid.ts deleted file mode 100644 index 5665329..0000000 --- a/node_modules/uri-js/src/schemes/urn-uuid.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { URISchemeHandler, URIComponents, URIOptions } from "../uri"; -import { URNComponents } from "./urn"; -import { SCHEMES } from "../uri"; - -export interface UUIDComponents extends URNComponents { - uuid?: string; -} - -const UUID = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/; -const UUID_PARSE = /^[0-9A-Fa-f\-]{36}/; - -//RFC 4122 -const handler:URISchemeHandler = { - scheme : "urn:uuid", - - parse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents { - const uuidComponents = urnComponents as UUIDComponents; - uuidComponents.uuid = uuidComponents.nss; - uuidComponents.nss = undefined; - - if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) { - uuidComponents.error = uuidComponents.error || "UUID is not valid."; - } - - return uuidComponents; - }, - - serialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents { - const urnComponents = uuidComponents as URNComponents; - //normalize UUID - urnComponents.nss = (uuidComponents.uuid || "").toLowerCase(); - return urnComponents; - }, -}; - -export default handler; \ No newline at end of file diff --git a/node_modules/uri-js/src/schemes/urn.ts b/node_modules/uri-js/src/schemes/urn.ts deleted file mode 100644 index 590f9cc..0000000 --- a/node_modules/uri-js/src/schemes/urn.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { URISchemeHandler, URIComponents, URIOptions } from "../uri"; -import { pctEncChar, SCHEMES } from "../uri"; - -export interface URNComponents extends URIComponents { - nid?:string; - nss?:string; -} - -export interface URNOptions extends URIOptions { - nid?:string; -} - -const NID$ = "(?:[0-9A-Za-z][0-9A-Za-z\\-]{1,31})"; -const PCT_ENCODED$ = "(?:\\%[0-9A-Fa-f]{2})"; -const TRANS$$ = "[0-9A-Za-z\\(\\)\\+\\,\\-\\.\\:\\=\\@\\;\\$\\_\\!\\*\\'\\/\\?\\#]"; -const NSS$ = "(?:(?:" + PCT_ENCODED$ + "|" + TRANS$$ + ")+)"; -const URN_SCHEME = new RegExp("^urn\\:(" + NID$ + ")$"); -const URN_PATH = new RegExp("^(" + NID$ + ")\\:(" + NSS$ + ")$"); -const URN_PARSE = /^([^\:]+)\:(.*)/; -const URN_EXCLUDED = /[\x00-\x20\\\"\&\<\>\[\]\^\`\{\|\}\~\x7F-\xFF]/g; - -//RFC 2141 -const handler:URISchemeHandler = { - scheme : "urn", - - parse : function (components:URIComponents, options:URNOptions):URNComponents { - const matches = components.path && components.path.match(URN_PARSE); - let urnComponents = components as URNComponents; - - if (matches) { - const scheme = options.scheme || urnComponents.scheme || "urn"; - const nid = matches[1].toLowerCase(); - const nss = matches[2]; - const urnScheme = `${scheme}:${options.nid || nid}`; - const schemeHandler = SCHEMES[urnScheme]; - - urnComponents.nid = nid; - urnComponents.nss = nss; - urnComponents.path = undefined; - - if (schemeHandler) { - urnComponents = schemeHandler.parse(urnComponents, options) as URNComponents; - } - } else { - urnComponents.error = urnComponents.error || "URN can not be parsed."; - } - - return urnComponents; - }, - - serialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents { - const scheme = options.scheme || urnComponents.scheme || "urn"; - const nid = urnComponents.nid; - const urnScheme = `${scheme}:${options.nid || nid}`; - const schemeHandler = SCHEMES[urnScheme]; - - if (schemeHandler) { - urnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents; - } - - const uriComponents = urnComponents as URIComponents; - const nss = urnComponents.nss; - uriComponents.path = `${nid || options.nid}:${nss}`; - - return uriComponents; - }, -}; - -export default handler; \ No newline at end of file diff --git a/node_modules/uri-js/src/uri.ts b/node_modules/uri-js/src/uri.ts deleted file mode 100644 index c282c37..0000000 --- a/node_modules/uri-js/src/uri.ts +++ /dev/null @@ -1,556 +0,0 @@ -/** - * URI.js - * - * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript. - * @author Gary Court - * @see http://github.com/garycourt/uri-js - */ - -/** - * Copyright 2011 Gary Court. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of Gary Court. - */ - -import URI_PROTOCOL from "./regexps-uri"; -import IRI_PROTOCOL from "./regexps-iri"; -import punycode from "punycode"; -import { toUpperCase, typeOf, assign } from "./util"; - -export interface URIComponents { - scheme?:string; - userinfo?:string; - host?:string; - port?:number|string; - path?:string; - query?:string; - fragment?:string; - reference?:string; - error?:string; -} - -export interface URIOptions { - scheme?:string; - reference?:string; - tolerant?:boolean; - absolutePath?:boolean; - iri?:boolean; - unicodeSupport?:boolean; - domainHost?:boolean; -} - -export interface URISchemeHandler { - scheme:string; - parse(components:ParentComponents, options:Options):Components; - serialize(components:Components, options:Options):ParentComponents; - unicodeSupport?:boolean; - domainHost?:boolean; - absolutePath?:boolean; -} - -export interface URIRegExps { - NOT_SCHEME : RegExp, - NOT_USERINFO : RegExp, - NOT_HOST : RegExp, - NOT_PATH : RegExp, - NOT_PATH_NOSCHEME : RegExp, - NOT_QUERY : RegExp, - NOT_FRAGMENT : RegExp, - ESCAPE : RegExp, - UNRESERVED : RegExp, - OTHER_CHARS : RegExp, - PCT_ENCODED : RegExp, - IPV4ADDRESS : RegExp, - IPV6ADDRESS : RegExp, -} - -export const SCHEMES:{[scheme:string]:URISchemeHandler} = {}; - -export function pctEncChar(chr:string):string { - const c = chr.charCodeAt(0); - let e:string; - - if (c < 16) e = "%0" + c.toString(16).toUpperCase(); - else if (c < 128) e = "%" + c.toString(16).toUpperCase(); - else if (c < 2048) e = "%" + ((c >> 6) | 192).toString(16).toUpperCase() + "%" + ((c & 63) | 128).toString(16).toUpperCase(); - else e = "%" + ((c >> 12) | 224).toString(16).toUpperCase() + "%" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + "%" + ((c & 63) | 128).toString(16).toUpperCase(); - - return e; -} - -export function pctDecChars(str:string):string { - let newStr = ""; - let i = 0; - const il = str.length; - - while (i < il) { - const c = parseInt(str.substr(i + 1, 2), 16); - - if (c < 128) { - newStr += String.fromCharCode(c); - i += 3; - } - else if (c >= 194 && c < 224) { - if ((il - i) >= 6) { - const c2 = parseInt(str.substr(i + 4, 2), 16); - newStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); - } else { - newStr += str.substr(i, 6); - } - i += 6; - } - else if (c >= 224) { - if ((il - i) >= 9) { - const c2 = parseInt(str.substr(i + 4, 2), 16); - const c3 = parseInt(str.substr(i + 7, 2), 16); - newStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); - } else { - newStr += str.substr(i, 9); - } - i += 9; - } - else { - newStr += str.substr(i, 3); - i += 3; - } - } - - return newStr; -} - -function _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) { - function decodeUnreserved(str:string):string { - const decStr = pctDecChars(str); - return (!decStr.match(protocol.UNRESERVED) ? str : decStr); - } - - if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, ""); - if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - - return components; -}; - -function _stripLeadingZeros(str:string):string { - return str.replace(/^0*(.*)/, "$1") || "0"; -} - -function _normalizeIPv4(host:string, protocol:URIRegExps):string { - const matches = host.match(protocol.IPV4ADDRESS) || []; - const [, address] = matches; - - if (address) { - return address.split(".").map(_stripLeadingZeros).join("."); - } else { - return host; - } -} - -function _normalizeIPv6(host:string, protocol:URIRegExps):string { - const matches = host.match(protocol.IPV6ADDRESS) || []; - const [, address, zone] = matches; - - if (address) { - const [last, first] = address.toLowerCase().split('::').reverse(); - const firstFields = first ? first.split(":").map(_stripLeadingZeros) : []; - const lastFields = last.split(":").map(_stripLeadingZeros); - const isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]); - const fieldCount = isLastFieldIPv4Address ? 7 : 8; - const lastFieldsStart = lastFields.length - fieldCount; - const fields = Array(fieldCount); - - for (let x = 0; x < fieldCount; ++x) { - fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || ''; - } - - if (isLastFieldIPv4Address) { - fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol); - } - - const allZeroFields = fields.reduce>((acc, field, index) => { - if (!field || field === "0") { - const lastLongest = acc[acc.length - 1]; - if (lastLongest && lastLongest.index + lastLongest.length === index) { - lastLongest.length++; - } else { - acc.push({ index, length : 1 }); - } - } - return acc; - }, []); - - const longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0]; - - let newHost:string; - if (longestZeroFields && longestZeroFields.length > 1) { - const newFirst = fields.slice(0, longestZeroFields.index) ; - const newLast = fields.slice(longestZeroFields.index + longestZeroFields.length); - newHost = newFirst.join(":") + "::" + newLast.join(":"); - } else { - newHost = fields.join(":"); - } - - if (zone) { - newHost += "%" + zone; - } - - return newHost; - } else { - return host; - } -} - -const URI_PARSE = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i; -const NO_MATCH_IS_UNDEFINED = (("").match(/(){0}/))[1] === undefined; - -export function parse(uriString:string, options:URIOptions = {}):URIComponents { - const components:URIComponents = {}; - const protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL); - - if (options.reference === "suffix") uriString = (options.scheme ? options.scheme + ":" : "") + "//" + uriString; - - const matches = uriString.match(URI_PARSE); - - if (matches) { - if (NO_MATCH_IS_UNDEFINED) { - //store each component - components.scheme = matches[1]; - components.userinfo = matches[3]; - components.host = matches[4]; - components.port = parseInt(matches[5], 10); - components.path = matches[6] || ""; - components.query = matches[7]; - components.fragment = matches[8]; - - //fix port number - if (isNaN(components.port)) { - components.port = matches[5]; - } - } else { //IE FIX for improper RegExp matching - //store each component - components.scheme = matches[1] || undefined; - components.userinfo = (uriString.indexOf("@") !== -1 ? matches[3] : undefined); - components.host = (uriString.indexOf("//") !== -1 ? matches[4] : undefined); - components.port = parseInt(matches[5], 10); - components.path = matches[6] || ""; - components.query = (uriString.indexOf("?") !== -1 ? matches[7] : undefined); - components.fragment = (uriString.indexOf("#") !== -1 ? matches[8] : undefined); - - //fix port number - if (isNaN(components.port)) { - components.port = (uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? matches[4] : undefined); - } - } - - if (components.host) { - //normalize IP hosts - components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol); - } - - //determine reference type - if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) { - components.reference = "same-document"; - } else if (components.scheme === undefined) { - components.reference = "relative"; - } else if (components.fragment === undefined) { - components.reference = "absolute"; - } else { - components.reference = "uri"; - } - - //check for reference errors - if (options.reference && options.reference !== "suffix" && options.reference !== components.reference) { - components.error = components.error || "URI is not a " + options.reference + " reference."; - } - - //find scheme handler - const schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; - - //check if scheme can't handle IRIs - if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) { - //if host component is a domain name - if (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) { - //convert Unicode IDN -> ASCII IDN - try { - components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()); - } catch (e) { - components.error = components.error || "Host's domain name can not be converted to ASCII via punycode: " + e; - } - } - //convert IRI -> URI - _normalizeComponentEncoding(components, URI_PROTOCOL); - } else { - //normalize encodings - _normalizeComponentEncoding(components, protocol); - } - - //perform scheme specific parsing - if (schemeHandler && schemeHandler.parse) { - schemeHandler.parse(components, options); - } - } else { - components.error = components.error || "URI can not be parsed."; - } - - return components; -}; - -function _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined { - const protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL); - const uriTokens:Array = []; - - if (components.userinfo !== undefined) { - uriTokens.push(components.userinfo); - uriTokens.push("@"); - } - - if (components.host !== undefined) { - //normalize IP hosts, add brackets and escape zone separator for IPv6 - uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => "[" + $1 + ($2 ? "%25" + $2 : "") + "]")); - } - - if (typeof components.port === "number") { - uriTokens.push(":"); - uriTokens.push(components.port.toString(10)); - } - - return uriTokens.length ? uriTokens.join("") : undefined; -}; - -const RDS1 = /^\.\.?\//; -const RDS2 = /^\/\.(\/|$)/; -const RDS3 = /^\/\.\.(\/|$)/; -const RDS4 = /^\.\.?$/; -const RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/; - -export function removeDotSegments(input:string):string { - const output:Array = []; - - while (input.length) { - if (input.match(RDS1)) { - input = input.replace(RDS1, ""); - } else if (input.match(RDS2)) { - input = input.replace(RDS2, "/"); - } else if (input.match(RDS3)) { - input = input.replace(RDS3, "/"); - output.pop(); - } else if (input === "." || input === "..") { - input = ""; - } else { - const im = input.match(RDS5); - if (im) { - const s = im[0]; - input = input.slice(s.length); - output.push(s); - } else { - throw new Error("Unexpected dot segment condition"); - } - } - } - - return output.join(""); -}; - -export function serialize(components:URIComponents, options:URIOptions = {}):string { - const protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL); - const uriTokens:Array = []; - - //find scheme handler - const schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; - - //perform scheme specific serialization - if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options); - - if (components.host) { - //if host component is an IPv6 address - if (protocol.IPV6ADDRESS.test(components.host)) { - //TODO: normalize IPv6 address as per RFC 5952 - } - - //if host component is a domain name - else if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) { - //convert IDN via punycode - try { - components.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host)); - } catch (e) { - components.error = components.error || "Host's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; - } - } - } - - //normalize encoding - _normalizeComponentEncoding(components, protocol); - - if (options.reference !== "suffix" && components.scheme) { - uriTokens.push(components.scheme); - uriTokens.push(":"); - } - - const authority = _recomposeAuthority(components, options); - if (authority !== undefined) { - if (options.reference !== "suffix") { - uriTokens.push("//"); - } - - uriTokens.push(authority); - - if (components.path && components.path.charAt(0) !== "/") { - uriTokens.push("/"); - } - } - - if (components.path !== undefined) { - let s = components.path; - - if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) { - s = removeDotSegments(s); - } - - if (authority === undefined) { - s = s.replace(/^\/\//, "/%2F"); //don't allow the path to start with "//" - } - - uriTokens.push(s); - } - - if (components.query !== undefined) { - uriTokens.push("?"); - uriTokens.push(components.query); - } - - if (components.fragment !== undefined) { - uriTokens.push("#"); - uriTokens.push(components.fragment); - } - - return uriTokens.join(""); //merge tokens into a string -}; - -export function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents { - const target:URIComponents = {}; - - if (!skipNormalization) { - base = parse(serialize(base, options), options); //normalize base components - relative = parse(serialize(relative, options), options); //normalize relative components - } - options = options || {}; - - if (!options.tolerant && relative.scheme) { - target.scheme = relative.scheme; - //target.authority = relative.authority; - target.userinfo = relative.userinfo; - target.host = relative.host; - target.port = relative.port; - target.path = removeDotSegments(relative.path || ""); - target.query = relative.query; - } else { - if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) { - //target.authority = relative.authority; - target.userinfo = relative.userinfo; - target.host = relative.host; - target.port = relative.port; - target.path = removeDotSegments(relative.path || ""); - target.query = relative.query; - } else { - if (!relative.path) { - target.path = base.path; - if (relative.query !== undefined) { - target.query = relative.query; - } else { - target.query = base.query; - } - } else { - if (relative.path.charAt(0) === "/") { - target.path = removeDotSegments(relative.path); - } else { - if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) { - target.path = "/" + relative.path; - } else if (!base.path) { - target.path = relative.path; - } else { - target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path; - } - target.path = removeDotSegments(target.path); - } - target.query = relative.query; - } - //target.authority = base.authority; - target.userinfo = base.userinfo; - target.host = base.host; - target.port = base.port; - } - target.scheme = base.scheme; - } - - target.fragment = relative.fragment; - - return target; -}; - -export function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string { - const schemelessOptions = assign({ scheme : 'null' }, options); - return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions); -}; - -export function normalize(uri:string, options?:URIOptions):string; -export function normalize(uri:URIComponents, options?:URIOptions):URIComponents; -export function normalize(uri:any, options?:URIOptions):any { - if (typeof uri === "string") { - uri = serialize(parse(uri, options), options); - } else if (typeOf(uri) === "object") { - uri = parse(serialize(uri, options), options); - } - - return uri; -}; - -export function equal(uriA:string, uriB:string, options?: URIOptions):boolean; -export function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean; -export function equal(uriA:any, uriB:any, options?:URIOptions):boolean { - if (typeof uriA === "string") { - uriA = serialize(parse(uriA, options), options); - } else if (typeOf(uriA) === "object") { - uriA = serialize(uriA, options); - } - - if (typeof uriB === "string") { - uriB = serialize(parse(uriB, options), options); - } else if (typeOf(uriB) === "object") { - uriB = serialize(uriB, options); - } - - return uriA === uriB; -}; - -export function escapeComponent(str:string, options?:URIOptions):string { - return str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar); -}; - -export function unescapeComponent(str:string, options?:URIOptions):string { - return str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars); -}; diff --git a/node_modules/uri-js/src/util.ts b/node_modules/uri-js/src/util.ts deleted file mode 100644 index 29c6d5d..0000000 --- a/node_modules/uri-js/src/util.ts +++ /dev/null @@ -1,40 +0,0 @@ -export function merge(...sets:Array):string { - if (sets.length > 1) { - sets[0] = sets[0].slice(0, -1); - const xl = sets.length - 1; - for (let x = 1; x < xl; ++x) { - sets[x] = sets[x].slice(1, -1); - } - sets[xl] = sets[xl].slice(1); - return sets.join(''); - } else { - return sets[0]; - } -} - -export function subexp(str:string):string { - return "(?:" + str + ")"; -} - -export function typeOf(o:any):string { - return o === undefined ? "undefined" : (o === null ? "null" : Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase()); -} - -export function toUpperCase(str:string):string { - return str.toUpperCase(); -} - -export function toArray(obj:any):Array { - return obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== "number" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : []; -} - - -export function assign(target: object, source: any): any { - const obj = target as any; - if (source) { - for (const key in source) { - obj[key] = source[key]; - } - } - return obj; -} \ No newline at end of file diff --git a/node_modules/uri-js/tests/qunit.css b/node_modules/uri-js/tests/qunit.css deleted file mode 100644 index a2e183d..0000000 --- a/node_modules/uri-js/tests/qunit.css +++ /dev/null @@ -1,118 +0,0 @@ -ol#qunit-tests { - font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial; - margin:0; - padding:0; - list-style-position:inside; - - font-size: smaller; -} -ol#qunit-tests li{ - padding:0.4em 0.5em 0.4em 2.5em; - border-bottom:1px solid #fff; - font-size:small; - list-style-position:inside; -} -ol#qunit-tests li ol{ - box-shadow: inset 0px 2px 13px #999; - -moz-box-shadow: inset 0px 2px 13px #999; - -webkit-box-shadow: inset 0px 2px 13px #999; - margin-top:0.5em; - margin-left:0; - padding:0.5em; - background-color:#fff; - border-radius:15px; - -moz-border-radius: 15px; - -webkit-border-radius: 15px; -} -ol#qunit-tests li li{ - border-bottom:none; - margin:0.5em; - background-color:#fff; - list-style-position: inside; - padding:0.4em 0.5em 0.4em 0.5em; -} - -ol#qunit-tests li li.pass{ - border-left:26px solid #C6E746; - background-color:#fff; - color:#5E740B; - } -ol#qunit-tests li li.fail{ - border-left:26px solid #EE5757; - background-color:#fff; - color:#710909; -} -ol#qunit-tests li.pass{ - background-color:#D2E0E6; - color:#528CE0; -} -ol#qunit-tests li.fail{ - background-color:#EE5757; - color:#000; -} -ol#qunit-tests li strong { - cursor:pointer; -} -h1#qunit-header{ - background-color:#0d3349; - margin:0; - padding:0.5em 0 0.5em 1em; - color:#fff; - font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial; - border-top-right-radius:15px; - border-top-left-radius:15px; - -moz-border-radius-topright:15px; - -moz-border-radius-topleft:15px; - -webkit-border-top-right-radius:15px; - -webkit-border-top-left-radius:15px; - text-shadow: rgba(0, 0, 0, 0.5) 4px 4px 1px; -} -h2#qunit-banner{ - font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial; - height:5px; - margin:0; - padding:0; -} -h2#qunit-banner.qunit-pass{ - background-color:#C6E746; -} -h2#qunit-banner.qunit-fail, #qunit-testrunner-toolbar { - background-color:#EE5757; -} -#qunit-testrunner-toolbar { - font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial; - padding:0; - /*width:80%;*/ - padding:0em 0 0.5em 2em; - font-size: small; -} -h2#qunit-userAgent { - font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial; - background-color:#2b81af; - margin:0; - padding:0; - color:#fff; - font-size: small; - padding:0.5em 0 0.5em 2.5em; - text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; -} -p#qunit-testresult{ - font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial; - margin:0; - font-size: small; - color:#2b81af; - border-bottom-right-radius:15px; - border-bottom-left-radius:15px; - -moz-border-radius-bottomright:15px; - -moz-border-radius-bottomleft:15px; - -webkit-border-bottom-right-radius:15px; - -webkit-border-bottom-left-radius:15px; - background-color:#D2E0E6; - padding:0.5em 0.5em 0.5em 2.5em; -} -strong b.fail{ - color:#710909; - } -strong b.pass{ - color:#5E740B; - } \ No newline at end of file diff --git a/node_modules/uri-js/tests/qunit.js b/node_modules/uri-js/tests/qunit.js deleted file mode 100644 index e449fdf..0000000 --- a/node_modules/uri-js/tests/qunit.js +++ /dev/null @@ -1,1042 +0,0 @@ -/* - * QUnit - A JavaScript Unit Testing Framework - * - * http://docs.jquery.com/QUnit - * - * Copyright (c) 2009 John Resig, Jörn Zaefferer - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - */ - -(function(window) { - -var QUnit = { - - // Initialize the configuration options - init: function() { - config = { - stats: { all: 0, bad: 0 }, - moduleStats: { all: 0, bad: 0 }, - started: +new Date, - blocking: false, - autorun: false, - assertions: [], - filters: [], - queue: [] - }; - - var tests = id("qunit-tests"), - banner = id("qunit-banner"), - result = id("qunit-testresult"); - - if ( tests ) { - tests.innerHTML = ""; - } - - if ( banner ) { - banner.className = ""; - } - - if ( result ) { - result.parentNode.removeChild( result ); - } - }, - - // call on start of module test to prepend name to all tests - module: function(name, testEnvironment) { - config.currentModule = name; - - synchronize(function() { - if ( config.currentModule ) { - QUnit.moduleDone( config.currentModule, config.moduleStats.bad, config.moduleStats.all ); - } - - config.currentModule = name; - config.moduleTestEnvironment = testEnvironment; - config.moduleStats = { all: 0, bad: 0 }; - - QUnit.moduleStart( name, testEnvironment ); - }); - }, - - asyncTest: function(testName, expected, callback) { - if ( arguments.length === 2 ) { - callback = expected; - expected = 0; - } - - QUnit.test(testName, expected, callback, true); - }, - - test: function(testName, expected, callback, async) { - var name = testName, testEnvironment, testEnvironmentArg; - - if ( arguments.length === 2 ) { - callback = expected; - expected = null; - } - // is 2nd argument a testEnvironment? - if ( expected && typeof expected === 'object') { - testEnvironmentArg = expected; - expected = null; - } - - if ( config.currentModule ) { - name = config.currentModule + " module: " + name; - } - - if ( !validTest(name) ) { - return; - } - - synchronize(function() { - QUnit.testStart( testName ); - - testEnvironment = extend({ - setup: function() {}, - teardown: function() {} - }, config.moduleTestEnvironment); - if (testEnvironmentArg) { - extend(testEnvironment,testEnvironmentArg); - } - - // allow utility functions to access the current test environment - QUnit.current_testEnvironment = testEnvironment; - - config.assertions = []; - config.expected = expected; - - try { - if ( !config.pollution ) { - saveGlobal(); - } - - testEnvironment.setup.call(testEnvironment); - } catch(e) { - QUnit.ok( false, "Setup failed on " + name + ": " + e.message ); - } - - if ( async ) { - QUnit.stop(); - } - - try { - callback.call(testEnvironment); - } catch(e) { - fail("Test " + name + " died, exception and test follows", e, callback); - QUnit.ok( false, "Died on test #" + (config.assertions.length + 1) + ": " + e.message ); - // else next test will carry the responsibility - saveGlobal(); - - // Restart the tests if they're blocking - if ( config.blocking ) { - start(); - } - } - }); - - synchronize(function() { - try { - checkPollution(); - testEnvironment.teardown.call(testEnvironment); - } catch(e) { - QUnit.ok( false, "Teardown failed on " + name + ": " + e.message ); - } - - try { - QUnit.reset(); - } catch(e) { - fail("reset() failed, following Test " + name + ", exception and reset fn follows", e, reset); - } - - if ( config.expected && config.expected != config.assertions.length ) { - QUnit.ok( false, "Expected " + config.expected + " assertions, but " + config.assertions.length + " were run" ); - } - - var good = 0, bad = 0, - tests = id("qunit-tests"); - - config.stats.all += config.assertions.length; - config.moduleStats.all += config.assertions.length; - - if ( tests ) { - var ol = document.createElement("ol"); - ol.style.display = "none"; - - for ( var i = 0; i < config.assertions.length; i++ ) { - var assertion = config.assertions[i]; - - var li = document.createElement("li"); - li.className = assertion.result ? "pass" : "fail"; - li.appendChild(document.createTextNode(assertion.message || "(no message)")); - ol.appendChild( li ); - - if ( assertion.result ) { - good++; - } else { - bad++; - config.stats.bad++; - config.moduleStats.bad++; - } - } - - var b = document.createElement("strong"); - b.innerHTML = name + " (" + bad + ", " + good + ", " + config.assertions.length + ")"; - - addEvent(b, "click", function() { - var next = b.nextSibling, display = next.style.display; - next.style.display = display === "none" ? "block" : "none"; - }); - - addEvent(b, "dblclick", function(e) { - var target = e && e.target ? e.target : window.event.srcElement; - if ( target.nodeName.toLowerCase() === "strong" ) { - var text = "", node = target.firstChild; - - while ( node.nodeType === 3 ) { - text += node.nodeValue; - node = node.nextSibling; - } - - text = text.replace(/(^\s*|\s*$)/g, ""); - - if ( window.location ) { - window.location.href = window.location.href.match(/^(.+?)(\?.*)?$/)[1] + "?" + encodeURIComponent(text); - } - } - }); - - var li = document.createElement("li"); - li.className = bad ? "fail" : "pass"; - li.appendChild( b ); - li.appendChild( ol ); - tests.appendChild( li ); - - if ( bad ) { - var toolbar = id("qunit-testrunner-toolbar"); - if ( toolbar ) { - toolbar.style.display = "block"; - id("qunit-filter-pass").disabled = null; - id("qunit-filter-missing").disabled = null; - } - } - - } else { - for ( var i = 0; i < config.assertions.length; i++ ) { - if ( !config.assertions[i].result ) { - bad++; - config.stats.bad++; - config.moduleStats.bad++; - } - } - } - - QUnit.testDone( testName, bad, config.assertions.length ); - - if ( !window.setTimeout && !config.queue.length ) { - done(); - } - }); - - if ( window.setTimeout && !config.doneTimer ) { - config.doneTimer = window.setTimeout(function(){ - if ( !config.queue.length ) { - done(); - } else { - synchronize( done ); - } - }, 13); - } - }, - - /** - * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through. - */ - expect: function(asserts) { - config.expected = asserts; - }, - - /** - * Asserts true. - * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" ); - */ - ok: function(a, msg) { - QUnit.log(a, msg); - - config.assertions.push({ - result: !!a, - message: msg - }); - }, - - /** - * Checks that the first two arguments are equal, with an optional message. - * Prints out both actual and expected values. - * - * Prefered to ok( actual == expected, message ) - * - * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." ); - * - * @param Object actual - * @param Object expected - * @param String message (optional) - */ - equal: function(actual, expected, message) { - push(expected == actual, actual, expected, message); - }, - - notEqual: function(actual, expected, message) { - push(expected != actual, actual, expected, message); - }, - - deepEqual: function(a, b, message) { - push(QUnit.equiv(a, b), a, b, message); - }, - - notDeepEqual: function(a, b, message) { - push(!QUnit.equiv(a, b), a, b, message); - }, - - strictEqual: function(actual, expected, message) { - push(expected === actual, actual, expected, message); - }, - - notStrictEqual: function(actual, expected, message) { - push(expected !== actual, actual, expected, message); - }, - - start: function() { - // A slight delay, to avoid any current callbacks - if ( window.setTimeout ) { - window.setTimeout(function() { - if ( config.timeout ) { - clearTimeout(config.timeout); - } - - config.blocking = false; - process(); - }, 13); - } else { - config.blocking = false; - process(); - } - }, - - stop: function(timeout) { - config.blocking = true; - - if ( timeout && window.setTimeout ) { - config.timeout = window.setTimeout(function() { - QUnit.ok( false, "Test timed out" ); - QUnit.start(); - }, timeout); - } - }, - - /** - * Resets the test setup. Useful for tests that modify the DOM. - */ - reset: function() { - if ( window.jQuery ) { - jQuery("#main").html( config.fixture ); - jQuery.event.global = {}; - jQuery.ajaxSettings = extend({}, config.ajaxSettings); - } - }, - - /** - * Trigger an event on an element. - * - * @example triggerEvent( document.body, "click" ); - * - * @param DOMElement elem - * @param String type - */ - triggerEvent: function( elem, type, event ) { - if ( document.createEvent ) { - event = document.createEvent("MouseEvents"); - event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView, - 0, 0, 0, 0, 0, false, false, false, false, 0, null); - elem.dispatchEvent( event ); - - } else if ( elem.fireEvent ) { - elem.fireEvent("on"+type); - } - }, - - // Safe object type checking - is: function( type, obj ) { - return Object.prototype.toString.call( obj ) === "[object "+ type +"]"; - }, - - // Logging callbacks - done: function(failures, total) {}, - log: function(result, message) {}, - testStart: function(name) {}, - testDone: function(name, failures, total) {}, - moduleStart: function(name, testEnvironment) {}, - moduleDone: function(name, failures, total) {} -}; - -// Backwards compatibility, deprecated -QUnit.equals = QUnit.equal; -QUnit.same = QUnit.deepEqual; - -// Maintain internal state -var config = { - // The queue of tests to run - queue: [], - - // block until document ready - blocking: true -}; - -// Load paramaters -(function() { - var location = window.location || { search: "", protocol: "file:" }, - GETParams = location.search.slice(1).split('&'); - - for ( var i = 0; i < GETParams.length; i++ ) { - GETParams[i] = decodeURIComponent( GETParams[i] ); - if ( GETParams[i] === "noglobals" ) { - GETParams.splice( i, 1 ); - i--; - config.noglobals = true; - } else if ( GETParams[i].search('=') > -1 ) { - GETParams.splice( i, 1 ); - i--; - } - } - - // restrict modules/tests by get parameters - config.filters = GETParams; - - // Figure out if we're running the tests from a server or not - QUnit.isLocal = !!(location.protocol === 'file:'); -})(); - -// Expose the API as global variables, unless an 'exports' -// object exists, in that case we assume we're in CommonJS -if ( typeof exports === "undefined" || typeof require === "undefined" ) { - extend(window, QUnit); - window.QUnit = QUnit; -} else { - extend(exports, QUnit); - exports.QUnit = QUnit; -} - -if ( typeof document === "undefined" || document.readyState === "complete" ) { - config.autorun = true; -} - -addEvent(window, "load", function() { - // Initialize the config, saving the execution queue - var oldconfig = extend({}, config); - QUnit.init(); - extend(config, oldconfig); - - config.blocking = false; - - var userAgent = id("qunit-userAgent"); - if ( userAgent ) { - userAgent.innerHTML = navigator.userAgent; - } - - var toolbar = id("qunit-testrunner-toolbar"); - if ( toolbar ) { - toolbar.style.display = "none"; - - var filter = document.createElement("input"); - filter.type = "checkbox"; - filter.id = "qunit-filter-pass"; - filter.disabled = true; - addEvent( filter, "click", function() { - var li = document.getElementsByTagName("li"); - for ( var i = 0; i < li.length; i++ ) { - if ( li[i].className.indexOf("pass") > -1 ) { - li[i].style.display = filter.checked ? "none" : ""; - } - } - }); - toolbar.appendChild( filter ); - - var label = document.createElement("label"); - label.setAttribute("for", "qunit-filter-pass"); - label.innerHTML = "Hide passed tests"; - toolbar.appendChild( label ); - - var missing = document.createElement("input"); - missing.type = "checkbox"; - missing.id = "qunit-filter-missing"; - missing.disabled = true; - addEvent( missing, "click", function() { - var li = document.getElementsByTagName("li"); - for ( var i = 0; i < li.length; i++ ) { - if ( li[i].className.indexOf("fail") > -1 && li[i].innerHTML.indexOf('missing test - untested code is broken code') > - 1 ) { - li[i].parentNode.parentNode.style.display = missing.checked ? "none" : "block"; - } - } - }); - toolbar.appendChild( missing ); - - label = document.createElement("label"); - label.setAttribute("for", "qunit-filter-missing"); - label.innerHTML = "Hide missing tests (untested code is broken code)"; - toolbar.appendChild( label ); - } - - var main = id('main'); - if ( main ) { - config.fixture = main.innerHTML; - } - - if ( window.jQuery ) { - config.ajaxSettings = window.jQuery.ajaxSettings; - } - - QUnit.start(); -}); - -function done() { - if ( config.doneTimer && window.clearTimeout ) { - window.clearTimeout( config.doneTimer ); - config.doneTimer = null; - } - - if ( config.queue.length ) { - config.doneTimer = window.setTimeout(function(){ - if ( !config.queue.length ) { - done(); - } else { - synchronize( done ); - } - }, 13); - - return; - } - - config.autorun = true; - - // Log the last module results - if ( config.currentModule ) { - QUnit.moduleDone( config.currentModule, config.moduleStats.bad, config.moduleStats.all ); - } - - var banner = id("qunit-banner"), - tests = id("qunit-tests"), - html = ['Tests completed in ', - +new Date - config.started, ' milliseconds.
      ', - '', config.stats.all - config.stats.bad, ' tests of ', config.stats.all, ' passed, ', config.stats.bad,' failed.'].join(''); - - if ( banner ) { - banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass"); - } - - if ( tests ) { - var result = id("qunit-testresult"); - - if ( !result ) { - result = document.createElement("p"); - result.id = "qunit-testresult"; - result.className = "result"; - tests.parentNode.insertBefore( result, tests.nextSibling ); - } - - result.innerHTML = html; - } - - QUnit.done( config.stats.bad, config.stats.all ); -} - -function validTest( name ) { - var i = config.filters.length, - run = false; - - if ( !i ) { - return true; - } - - while ( i-- ) { - var filter = config.filters[i], - not = filter.charAt(0) == '!'; - - if ( not ) { - filter = filter.slice(1); - } - - if ( name.indexOf(filter) !== -1 ) { - return !not; - } - - if ( not ) { - run = true; - } - } - - return run; -} - -function push(result, actual, expected, message) { - message = message || (result ? "okay" : "failed"); - QUnit.ok( result, result ? message + ": " + expected : message + ", expected: " + QUnit.jsDump.parse(expected) + " result: " + QUnit.jsDump.parse(actual) ); -} - -function synchronize( callback ) { - config.queue.push( callback ); - - if ( config.autorun && !config.blocking ) { - process(); - } -} - -function process() { - while ( config.queue.length && !config.blocking ) { - config.queue.shift()(); - } -} - -function saveGlobal() { - config.pollution = []; - - if ( config.noglobals ) { - for ( var key in window ) { - config.pollution.push( key ); - } - } -} - -function checkPollution( name ) { - var old = config.pollution; - saveGlobal(); - - var newGlobals = diff( old, config.pollution ); - if ( newGlobals.length > 0 ) { - ok( false, "Introduced global variable(s): " + newGlobals.join(", ") ); - config.expected++; - } - - var deletedGlobals = diff( config.pollution, old ); - if ( deletedGlobals.length > 0 ) { - ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") ); - config.expected++; - } -} - -// returns a new Array with the elements that are in a but not in b -function diff( a, b ) { - var result = a.slice(); - for ( var i = 0; i < result.length; i++ ) { - for ( var j = 0; j < b.length; j++ ) { - if ( result[i] === b[j] ) { - result.splice(i, 1); - i--; - break; - } - } - } - return result; -} - -function fail(message, exception, callback) { - if ( typeof console !== "undefined" && console.error && console.warn ) { - console.error(message); - console.error(exception); - console.warn(callback.toString()); - - } else if ( window.opera && opera.postError ) { - opera.postError(message, exception, callback.toString); - } -} - -function extend(a, b) { - for ( var prop in b ) { - a[prop] = b[prop]; - } - - return a; -} - -function addEvent(elem, type, fn) { - if ( elem.addEventListener ) { - elem.addEventListener( type, fn, false ); - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, fn ); - } else { - fn(); - } -} - -function id(name) { - return !!(typeof document !== "undefined" && document && document.getElementById) && - document.getElementById( name ); -} - -// Test for equality any JavaScript type. -// Discussions and reference: http://philrathe.com/articles/equiv -// Test suites: http://philrathe.com/tests/equiv -// Author: Philippe Rathé -QUnit.equiv = function () { - - var innerEquiv; // the real equiv function - var callers = []; // stack to decide between skip/abort functions - - - // Determine what is o. - function hoozit(o) { - if (QUnit.is("String", o)) { - return "string"; - - } else if (QUnit.is("Boolean", o)) { - return "boolean"; - - } else if (QUnit.is("Number", o)) { - - if (isNaN(o)) { - return "nan"; - } else { - return "number"; - } - - } else if (typeof o === "undefined") { - return "undefined"; - - // consider: typeof null === object - } else if (o === null) { - return "null"; - - // consider: typeof [] === object - } else if (QUnit.is( "Array", o)) { - return "array"; - - // consider: typeof new Date() === object - } else if (QUnit.is( "Date", o)) { - return "date"; - - // consider: /./ instanceof Object; - // /./ instanceof RegExp; - // typeof /./ === "function"; // => false in IE and Opera, - // true in FF and Safari - } else if (QUnit.is( "RegExp", o)) { - return "regexp"; - - } else if (typeof o === "object") { - return "object"; - - } else if (QUnit.is( "Function", o)) { - return "function"; - } else { - return undefined; - } - } - - // Call the o related callback with the given arguments. - function bindCallbacks(o, callbacks, args) { - var prop = hoozit(o); - if (prop) { - if (hoozit(callbacks[prop]) === "function") { - return callbacks[prop].apply(callbacks, args); - } else { - return callbacks[prop]; // or undefined - } - } - } - - var callbacks = function () { - - // for string, boolean, number and null - function useStrictEquality(b, a) { - if (b instanceof a.constructor || a instanceof b.constructor) { - // to catch short annotaion VS 'new' annotation of a declaration - // e.g. var i = 1; - // var j = new Number(1); - return a == b; - } else { - return a === b; - } - } - - return { - "string": useStrictEquality, - "boolean": useStrictEquality, - "number": useStrictEquality, - "null": useStrictEquality, - "undefined": useStrictEquality, - - "nan": function (b) { - return isNaN(b); - }, - - "date": function (b, a) { - return hoozit(b) === "date" && a.valueOf() === b.valueOf(); - }, - - "regexp": function (b, a) { - return hoozit(b) === "regexp" && - a.source === b.source && // the regex itself - a.global === b.global && // and its modifers (gmi) ... - a.ignoreCase === b.ignoreCase && - a.multiline === b.multiline; - }, - - // - skip when the property is a method of an instance (OOP) - // - abort otherwise, - // initial === would have catch identical references anyway - "function": function () { - var caller = callers[callers.length - 1]; - return caller !== Object && - typeof caller !== "undefined"; - }, - - "array": function (b, a) { - var i; - var len; - - // b could be an object literal here - if ( ! (hoozit(b) === "array")) { - return false; - } - - len = a.length; - if (len !== b.length) { // safe and faster - return false; - } - for (i = 0; i < len; i++) { - if ( ! innerEquiv(a[i], b[i])) { - return false; - } - } - return true; - }, - - "object": function (b, a) { - var i; - var eq = true; // unless we can proove it - var aProperties = [], bProperties = []; // collection of strings - - // comparing constructors is more strict than using instanceof - if ( a.constructor !== b.constructor) { - return false; - } - - // stack constructor before traversing properties - callers.push(a.constructor); - - for (i in a) { // be strict: don't ensures hasOwnProperty and go deep - - aProperties.push(i); // collect a's properties - - if ( ! innerEquiv(a[i], b[i])) { - eq = false; - } - } - - callers.pop(); // unstack, we are done - - for (i in b) { - bProperties.push(i); // collect b's properties - } - - // Ensures identical properties name - return eq && innerEquiv(aProperties.sort(), bProperties.sort()); - } - }; - }(); - - innerEquiv = function () { // can take multiple arguments - var args = Array.prototype.slice.apply(arguments); - if (args.length < 2) { - return true; // end transition - } - - return (function (a, b) { - if (a === b) { - return true; // catch the most you can - } else if (a === null || b === null || typeof a === "undefined" || typeof b === "undefined" || hoozit(a) !== hoozit(b)) { - return false; // don't lose time with error prone cases - } else { - return bindCallbacks(a, callbacks, [b, a]); - } - - // apply transition with (1..n) arguments - })(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length -1)); - }; - - return innerEquiv; - -}(); - -/** - * jsDump - * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com - * Licensed under BSD (http://www.opensource.org/licenses/bsd-license.php) - * Date: 5/15/2008 - * @projectDescription Advanced and extensible data dumping for Javascript. - * @version 1.0.0 - * @author Ariel Flesler - * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html} - */ -QUnit.jsDump = (function() { - function quote( str ) { - return '"' + str.toString().replace(/"/g, '\\"') + '"'; - }; - function literal( o ) { - return o + ''; - }; - function join( pre, arr, post ) { - var s = jsDump.separator(), - base = jsDump.indent(), - inner = jsDump.indent(1); - if ( arr.join ) - arr = arr.join( ',' + s + inner ); - if ( !arr ) - return pre + post; - return [ pre, inner + arr, base + post ].join(s); - }; - function array( arr ) { - var i = arr.length, ret = Array(i); - this.up(); - while ( i-- ) - ret[i] = this.parse( arr[i] ); - this.down(); - return join( '[', ret, ']' ); - }; - - var reName = /^function (\w+)/; - - var jsDump = { - parse:function( obj, type ) { //type is used mostly internally, you can fix a (custom)type in advance - var parser = this.parsers[ type || this.typeOf(obj) ]; - type = typeof parser; - - return type == 'function' ? parser.call( this, obj ) : - type == 'string' ? parser : - this.parsers.error; - }, - typeOf:function( obj ) { - var type; - if ( obj === null ) { - type = "null"; - } else if (typeof obj === "undefined") { - type = "undefined"; - } else if (QUnit.is("RegExp", obj)) { - type = "regexp"; - } else if (QUnit.is("Date", obj)) { - type = "date"; - } else if (QUnit.is("Function", obj)) { - type = "function"; - } else if (QUnit.is("Array", obj)) { - type = "array"; - } else if (QUnit.is("Window", obj) || QUnit.is("global", obj)) { - type = "window"; - } else if (QUnit.is("HTMLDocument", obj)) { - type = "document"; - } else if (QUnit.is("HTMLCollection", obj) || QUnit.is("NodeList", obj)) { - type = "nodelist"; - } else if (/^\[object HTML/.test(Object.prototype.toString.call( obj ))) { - type = "node"; - } else { - type = typeof obj; - } - return type; - }, - separator:function() { - return this.multiline ? this.HTML ? '
      ' : '\n' : this.HTML ? ' ' : ' '; - }, - indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing - if ( !this.multiline ) - return ''; - var chr = this.indentChar; - if ( this.HTML ) - chr = chr.replace(/\t/g,' ').replace(/ /g,' '); - return Array( this._depth_ + (extra||0) ).join(chr); - }, - up:function( a ) { - this._depth_ += a || 1; - }, - down:function( a ) { - this._depth_ -= a || 1; - }, - setParser:function( name, parser ) { - this.parsers[name] = parser; - }, - // The next 3 are exposed so you can use them - quote:quote, - literal:literal, - join:join, - // - _depth_: 1, - // This is the list of parsers, to modify them, use jsDump.setParser - parsers:{ - window: '[Window]', - document: '[Document]', - error:'[ERROR]', //when no parser is found, shouldn't happen - unknown: '[Unknown]', - 'null':'null', - undefined:'undefined', - 'function':function( fn ) { - var ret = 'function', - name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE - if ( name ) - ret += ' ' + name; - ret += '('; - - ret = [ ret, this.parse( fn, 'functionArgs' ), '){'].join(''); - return join( ret, this.parse(fn,'functionCode'), '}' ); - }, - array: array, - nodelist: array, - arguments: array, - object:function( map ) { - var ret = [ ]; - this.up(); - for ( var key in map ) - ret.push( this.parse(key,'key') + ': ' + this.parse(map[key]) ); - this.down(); - return join( '{', ret, '}' ); - }, - node:function( node ) { - var open = this.HTML ? '<' : '<', - close = this.HTML ? '>' : '>'; - - var tag = node.nodeName.toLowerCase(), - ret = open + tag; - - for ( var a in this.DOMAttrs ) { - var val = node[this.DOMAttrs[a]]; - if ( val ) - ret += ' ' + a + '=' + this.parse( val, 'attribute' ); - } - return ret + close + open + '/' + tag + close; - }, - functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function - var l = fn.length; - if ( !l ) return ''; - - var args = Array(l); - while ( l-- ) - args[l] = String.fromCharCode(97+l);//97 is 'a' - return ' ' + args.join(', ') + ' '; - }, - key:quote, //object calls it internally, the key part of an item in a map - functionCode:'[code]', //function calls it internally, it's the content of the function - attribute:quote, //node calls it internally, it's an html attribute value - string:quote, - date:quote, - regexp:literal, //regex - number:literal, - 'boolean':literal - }, - DOMAttrs:{//attributes to dump from nodes, name=>realName - id:'id', - name:'name', - 'class':'className' - }, - HTML:true,//if true, entities are escaped ( <, >, \t, space and \n ) - indentChar:' ',//indentation unit - multiline:true //if true, items in a collection, are separated by a \n, else just a space. - }; - - return jsDump; -})(); - -})(this); diff --git a/node_modules/uri-js/tests/test-es5-min.html b/node_modules/uri-js/tests/test-es5-min.html deleted file mode 100644 index b841c75..0000000 --- a/node_modules/uri-js/tests/test-es5-min.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - -

      URI.js Test Suite

      -

      -
      -

      -
        - - diff --git a/node_modules/uri-js/tests/test-es5.html b/node_modules/uri-js/tests/test-es5.html deleted file mode 100644 index 2d89c66..0000000 --- a/node_modules/uri-js/tests/test-es5.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - -

        URI.js Test Suite

        -

        -
        -

        -
          - - diff --git a/node_modules/uri-js/tests/tests.js b/node_modules/uri-js/tests/tests.js deleted file mode 100644 index 624191c..0000000 --- a/node_modules/uri-js/tests/tests.js +++ /dev/null @@ -1,774 +0,0 @@ -// -// -// Tests -// -// - -if (typeof URI === "undefined") { - var URI = require("../dist/es5/uri.all"); -} - -test("Acquire URI", function () { - //URI = require("./uri").URI; - ok(URI); -}); - -test("URI Parsing", function () { - var components; - - //scheme - components = URI.parse("uri:"); - strictEqual(components.error, undefined, "scheme errors"); - strictEqual(components.scheme, "uri", "scheme"); - //strictEqual(components.authority, undefined, "authority"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, undefined, "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, undefined, "fragment"); - - //userinfo - components = URI.parse("//@"); - strictEqual(components.error, undefined, "userinfo errors"); - strictEqual(components.scheme, undefined, "scheme"); - //strictEqual(components.authority, "@", "authority"); - strictEqual(components.userinfo, "", "userinfo"); - strictEqual(components.host, "", "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, undefined, "fragment"); - - //host - components = URI.parse("//"); - strictEqual(components.error, undefined, "host errors"); - strictEqual(components.scheme, undefined, "scheme"); - //strictEqual(components.authority, "", "authority"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, "", "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, undefined, "fragment"); - - //port - components = URI.parse("//:"); - strictEqual(components.error, undefined, "port errors"); - strictEqual(components.scheme, undefined, "scheme"); - //strictEqual(components.authority, ":", "authority"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, "", "host"); - strictEqual(components.port, "", "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, undefined, "fragment"); - - //path - components = URI.parse(""); - strictEqual(components.error, undefined, "path errors"); - strictEqual(components.scheme, undefined, "scheme"); - //strictEqual(components.authority, undefined, "authority"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, undefined, "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, undefined, "fragment"); - - //query - components = URI.parse("?"); - strictEqual(components.error, undefined, "query errors"); - strictEqual(components.scheme, undefined, "scheme"); - //strictEqual(components.authority, undefined, "authority"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, undefined, "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, "", "query"); - strictEqual(components.fragment, undefined, "fragment"); - - //fragment - components = URI.parse("#"); - strictEqual(components.error, undefined, "fragment errors"); - strictEqual(components.scheme, undefined, "scheme"); - //strictEqual(components.authority, undefined, "authority"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, undefined, "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, "", "fragment"); - - //fragment with character tabulation - components = URI.parse("#\t"); - strictEqual(components.error, undefined, "path errors"); - strictEqual(components.scheme, undefined, "scheme"); - //strictEqual(components.authority, undefined, "authority"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, undefined, "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, "%09", "fragment"); - - //fragment with line feed - components = URI.parse("#\n"); - strictEqual(components.error, undefined, "path errors"); - strictEqual(components.scheme, undefined, "scheme"); - //strictEqual(components.authority, undefined, "authority"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, undefined, "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, "%0A", "fragment"); - - //fragment with line tabulation - components = URI.parse("#\v"); - strictEqual(components.error, undefined, "path errors"); - strictEqual(components.scheme, undefined, "scheme"); - //strictEqual(components.authority, undefined, "authority"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, undefined, "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, "%0B", "fragment"); - - //fragment with form feed - components = URI.parse("#\f"); - strictEqual(components.error, undefined, "path errors"); - strictEqual(components.scheme, undefined, "scheme"); - //strictEqual(components.authority, undefined, "authority"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, undefined, "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, "%0C", "fragment"); - - //fragment with carriage return - components = URI.parse("#\r"); - strictEqual(components.error, undefined, "path errors"); - strictEqual(components.scheme, undefined, "scheme"); - //strictEqual(components.authority, undefined, "authority"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, undefined, "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, "%0D", "fragment"); - - //all - components = URI.parse("uri://user:pass@example.com:123/one/two.three?q1=a1&q2=a2#body"); - strictEqual(components.error, undefined, "all errors"); - strictEqual(components.scheme, "uri", "scheme"); - //strictEqual(components.authority, "user:pass@example.com:123", "authority"); - strictEqual(components.userinfo, "user:pass", "userinfo"); - strictEqual(components.host, "example.com", "host"); - strictEqual(components.port, 123, "port"); - strictEqual(components.path, "/one/two.three", "path"); - strictEqual(components.query, "q1=a1&q2=a2", "query"); - strictEqual(components.fragment, "body", "fragment"); - - //IPv4address - components = URI.parse("//10.10.10.10"); - strictEqual(components.error, undefined, "IPv4address errors"); - strictEqual(components.scheme, undefined, "scheme"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, "10.10.10.10", "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, undefined, "fragment"); - - //IPv6address - components = URI.parse("//[2001:db8::7]"); - strictEqual(components.error, undefined, "IPv4address errors"); - strictEqual(components.scheme, undefined, "scheme"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, "2001:db8::7", "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, undefined, "fragment"); - - //mixed IPv4address & IPv6address - components = URI.parse("//[::ffff:129.144.52.38]"); - strictEqual(components.error, undefined, "IPv4address errors"); - strictEqual(components.scheme, undefined, "scheme"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, "::ffff:129.144.52.38", "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, undefined, "fragment"); - - //mixed IPv4address & reg-name, example from terion-name (https://github.com/garycourt/uri-js/issues/4) - components = URI.parse("uri://10.10.10.10.example.com/en/process"); - strictEqual(components.error, undefined, "mixed errors"); - strictEqual(components.scheme, "uri", "scheme"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, "10.10.10.10.example.com", "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "/en/process", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, undefined, "fragment"); - - //IPv6address, example from bkw (https://github.com/garycourt/uri-js/pull/16) - components = URI.parse("//[2606:2800:220:1:248:1893:25c8:1946]/test"); - strictEqual(components.error, undefined, "IPv6address errors"); - strictEqual(components.scheme, undefined, "scheme"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, "2606:2800:220:1:248:1893:25c8:1946", "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "/test", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, undefined, "fragment"); - - //IPv6address, example from RFC 5952 - components = URI.parse("//[2001:db8::1]:80"); - strictEqual(components.error, undefined, "IPv6address errors"); - strictEqual(components.scheme, undefined, "scheme"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, "2001:db8::1", "host"); - strictEqual(components.port, 80, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, undefined, "fragment"); - - //IPv6address with zone identifier, RFC 6874 - components = URI.parse("//[fe80::a%25en1]"); - strictEqual(components.error, undefined, "IPv4address errors"); - strictEqual(components.scheme, undefined, "scheme"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, "fe80::a%en1", "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, undefined, "fragment"); - - //IPv6address with an unescaped interface specifier, example from pekkanikander (https://github.com/garycourt/uri-js/pull/22) - components = URI.parse("//[2001:db8::7%en0]"); - strictEqual(components.error, undefined, "IPv6address interface errors"); - strictEqual(components.scheme, undefined, "scheme"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, "2001:db8::7%en0", "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, "", "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, undefined, "fragment"); -}); - -test("URI Serialization", function () { - var components = { - scheme : undefined, - userinfo : undefined, - host : undefined, - port : undefined, - path : undefined, - query : undefined, - fragment : undefined - }; - strictEqual(URI.serialize(components), "", "Undefined Components"); - - components = { - scheme : "", - userinfo : "", - host : "", - port : 0, - path : "", - query : "", - fragment : "" - }; - strictEqual(URI.serialize(components), "//@:0?#", "Empty Components"); - - components = { - scheme : "uri", - userinfo : "foo:bar", - host : "example.com", - port : 1, - path : "path", - query : "query", - fragment : "fragment" - }; - strictEqual(URI.serialize(components), "uri://foo:bar@example.com:1/path?query#fragment", "All Components"); - - strictEqual(URI.serialize({path:"//path"}), "/%2Fpath", "Double slash path"); - strictEqual(URI.serialize({path:"foo:bar"}), "foo%3Abar", "Colon path"); - strictEqual(URI.serialize({path:"?query"}), "%3Fquery", "Query path"); - - //mixed IPv4address & reg-name, example from terion-name (https://github.com/garycourt/uri-js/issues/4) - strictEqual(URI.serialize({host:"10.10.10.10.example.com"}), "//10.10.10.10.example.com", "Mixed IPv4address & reg-name"); - - //IPv6address - strictEqual(URI.serialize({host:"2001:db8::7"}), "//[2001:db8::7]", "IPv6 Host"); - strictEqual(URI.serialize({host:"::ffff:129.144.52.38"}), "//[::ffff:129.144.52.38]", "IPv6 Mixed Host"); - strictEqual(URI.serialize({host:"2606:2800:220:1:248:1893:25c8:1946"}), "//[2606:2800:220:1:248:1893:25c8:1946]", "IPv6 Full Host"); - - //IPv6address with zone identifier, RFC 6874 - strictEqual(URI.serialize({host:"fe80::a%en1"}), "//[fe80::a%25en1]", "IPv6 Zone Unescaped Host"); - strictEqual(URI.serialize({host:"fe80::a%25en1"}), "//[fe80::a%25en1]", "IPv6 Zone Escaped Host"); -}); - -test("URI Resolving", function () { - //normal examples from RFC 3986 - var base = "uri://a/b/c/d;p?q"; - strictEqual(URI.resolve(base, "g:h"), "g:h", "g:h"); - strictEqual(URI.resolve(base, "g:h"), "g:h", "g:h"); - strictEqual(URI.resolve(base, "g"), "uri://a/b/c/g", "g"); - strictEqual(URI.resolve(base, "./g"), "uri://a/b/c/g", "./g"); - strictEqual(URI.resolve(base, "g/"), "uri://a/b/c/g/", "g/"); - strictEqual(URI.resolve(base, "/g"), "uri://a/g", "/g"); - strictEqual(URI.resolve(base, "//g"), "uri://g", "//g"); - strictEqual(URI.resolve(base, "?y"), "uri://a/b/c/d;p?y", "?y"); - strictEqual(URI.resolve(base, "g?y"), "uri://a/b/c/g?y", "g?y"); - strictEqual(URI.resolve(base, "#s"), "uri://a/b/c/d;p?q#s", "#s"); - strictEqual(URI.resolve(base, "g#s"), "uri://a/b/c/g#s", "g#s"); - strictEqual(URI.resolve(base, "g?y#s"), "uri://a/b/c/g?y#s", "g?y#s"); - strictEqual(URI.resolve(base, ";x"), "uri://a/b/c/;x", ";x"); - strictEqual(URI.resolve(base, "g;x"), "uri://a/b/c/g;x", "g;x"); - strictEqual(URI.resolve(base, "g;x?y#s"), "uri://a/b/c/g;x?y#s", "g;x?y#s"); - strictEqual(URI.resolve(base, ""), "uri://a/b/c/d;p?q", ""); - strictEqual(URI.resolve(base, "."), "uri://a/b/c/", "."); - strictEqual(URI.resolve(base, "./"), "uri://a/b/c/", "./"); - strictEqual(URI.resolve(base, ".."), "uri://a/b/", ".."); - strictEqual(URI.resolve(base, "../"), "uri://a/b/", "../"); - strictEqual(URI.resolve(base, "../g"), "uri://a/b/g", "../g"); - strictEqual(URI.resolve(base, "../.."), "uri://a/", "../.."); - strictEqual(URI.resolve(base, "../../"), "uri://a/", "../../"); - strictEqual(URI.resolve(base, "../../g"), "uri://a/g", "../../g"); - - //abnormal examples from RFC 3986 - strictEqual(URI.resolve(base, "../../../g"), "uri://a/g", "../../../g"); - strictEqual(URI.resolve(base, "../../../../g"), "uri://a/g", "../../../../g"); - - strictEqual(URI.resolve(base, "/./g"), "uri://a/g", "/./g"); - strictEqual(URI.resolve(base, "/../g"), "uri://a/g", "/../g"); - strictEqual(URI.resolve(base, "g."), "uri://a/b/c/g.", "g."); - strictEqual(URI.resolve(base, ".g"), "uri://a/b/c/.g", ".g"); - strictEqual(URI.resolve(base, "g.."), "uri://a/b/c/g..", "g.."); - strictEqual(URI.resolve(base, "..g"), "uri://a/b/c/..g", "..g"); - - strictEqual(URI.resolve(base, "./../g"), "uri://a/b/g", "./../g"); - strictEqual(URI.resolve(base, "./g/."), "uri://a/b/c/g/", "./g/."); - strictEqual(URI.resolve(base, "g/./h"), "uri://a/b/c/g/h", "g/./h"); - strictEqual(URI.resolve(base, "g/../h"), "uri://a/b/c/h", "g/../h"); - strictEqual(URI.resolve(base, "g;x=1/./y"), "uri://a/b/c/g;x=1/y", "g;x=1/./y"); - strictEqual(URI.resolve(base, "g;x=1/../y"), "uri://a/b/c/y", "g;x=1/../y"); - - strictEqual(URI.resolve(base, "g?y/./x"), "uri://a/b/c/g?y/./x", "g?y/./x"); - strictEqual(URI.resolve(base, "g?y/../x"), "uri://a/b/c/g?y/../x", "g?y/../x"); - strictEqual(URI.resolve(base, "g#s/./x"), "uri://a/b/c/g#s/./x", "g#s/./x"); - strictEqual(URI.resolve(base, "g#s/../x"), "uri://a/b/c/g#s/../x", "g#s/../x"); - - strictEqual(URI.resolve(base, "uri:g"), "uri:g", "uri:g"); - strictEqual(URI.resolve(base, "uri:g", {tolerant:true}), "uri://a/b/c/g", "uri:g"); - - //examples by PAEz - strictEqual(URI.resolve("//www.g.com/","/adf\ngf"), "//www.g.com/adf%0Agf", "/adf\\ngf"); - strictEqual(URI.resolve("//www.g.com/error\n/bleh/bleh",".."), "//www.g.com/error%0A/", "//www.g.com/error\\n/bleh/bleh"); -}); - -test("URI Normalizing", function () { - //test from RFC 3987 - strictEqual(URI.normalize("uri://www.example.org/red%09ros\xE9#red"), "uri://www.example.org/red%09ros%C3%A9#red"); - - //IPv4address - strictEqual(URI.normalize("//192.068.001.000"), "//192.68.1.0"); - - //IPv6address, example from RFC 3513 - strictEqual(URI.normalize("http://[1080::8:800:200C:417A]/"), "http://[1080::8:800:200c:417a]/"); - - //IPv6address, examples from RFC 5952 - strictEqual(URI.normalize("//[2001:0db8::0001]/"), "//[2001:db8::1]/"); - strictEqual(URI.normalize("//[2001:db8::1:0000:1]/"), "//[2001:db8::1:0:1]/"); - strictEqual(URI.normalize("//[2001:db8:0:0:0:0:2:1]/"), "//[2001:db8::2:1]/"); - strictEqual(URI.normalize("//[2001:db8:0:1:1:1:1:1]/"), "//[2001:db8:0:1:1:1:1:1]/"); - strictEqual(URI.normalize("//[2001:0:0:1:0:0:0:1]/"), "//[2001:0:0:1::1]/"); - strictEqual(URI.normalize("//[2001:db8:0:0:1:0:0:1]/"), "//[2001:db8::1:0:0:1]/"); - strictEqual(URI.normalize("//[2001:DB8::1]/"), "//[2001:db8::1]/"); - strictEqual(URI.normalize("//[0:0:0:0:0:ffff:192.0.2.1]/"), "//[::ffff:192.0.2.1]/"); - - //Mixed IPv4 and IPv6 address - strictEqual(URI.normalize("//[1:2:3:4:5:6:192.0.2.1]/"), "//[1:2:3:4:5:6:192.0.2.1]/"); - strictEqual(URI.normalize("//[1:2:3:4:5:6:192.068.001.000]/"), "//[1:2:3:4:5:6:192.68.1.0]/"); -}); - -test("URI Equals", function () { - //test from RFC 3986 - strictEqual(URI.equal("example://a/b/c/%7Bfoo%7D", "eXAMPLE://a/./b/../b/%63/%7bfoo%7d"), true); - - //test from RFC 3987 - strictEqual(URI.equal("http://example.org/~user", "http://example.org/%7euser"), true); -}); - -test("Escape Component", function () { - var chr; - for (var d = 0; d <= 129; ++d) { - chr = String.fromCharCode(d); - if (!chr.match(/[\$\&\+\,\;\=]/)) { - strictEqual(URI.escapeComponent(chr), encodeURIComponent(chr)); - } else { - strictEqual(URI.escapeComponent(chr), chr); - } - } - strictEqual(URI.escapeComponent("\u00c0"), encodeURIComponent("\u00c0")); - strictEqual(URI.escapeComponent("\u07ff"), encodeURIComponent("\u07ff")); - strictEqual(URI.escapeComponent("\u0800"), encodeURIComponent("\u0800")); - strictEqual(URI.escapeComponent("\u30a2"), encodeURIComponent("\u30a2")); -}); - -test("Unescape Component", function () { - var chr; - for (var d = 0; d <= 129; ++d) { - chr = String.fromCharCode(d); - strictEqual(URI.unescapeComponent(encodeURIComponent(chr)), chr); - } - strictEqual(URI.unescapeComponent(encodeURIComponent("\u00c0")), "\u00c0"); - strictEqual(URI.unescapeComponent(encodeURIComponent("\u07ff")), "\u07ff"); - strictEqual(URI.unescapeComponent(encodeURIComponent("\u0800")), "\u0800"); - strictEqual(URI.unescapeComponent(encodeURIComponent("\u30a2")), "\u30a2"); -}); - -// -// IRI -// - - - -var IRI_OPTION = { iri : true, unicodeSupport : true }; - -test("IRI Parsing", function () { - var components = URI.parse("uri://us\xA0er:pa\uD7FFss@example.com:123/o\uF900ne/t\uFDCFwo.t\uFDF0hree?q1=a1\uF8FF\uE000&q2=a2#bo\uFFEFdy", IRI_OPTION); - strictEqual(components.error, undefined, "all errors"); - strictEqual(components.scheme, "uri", "scheme"); - //strictEqual(components.authority, "us\xA0er:pa\uD7FFss@example.com:123", "authority"); - strictEqual(components.userinfo, "us\xA0er:pa\uD7FFss", "userinfo"); - strictEqual(components.host, "example.com", "host"); - strictEqual(components.port, 123, "port"); - strictEqual(components.path, "/o\uF900ne/t\uFDCFwo.t\uFDF0hree", "path"); - strictEqual(components.query, "q1=a1\uF8FF\uE000&q2=a2", "query"); - strictEqual(components.fragment, "bo\uFFEFdy", "fragment"); -}); - -test("IRI Serialization", function () { - var components = { - scheme : "uri", - userinfo : "us\xA0er:pa\uD7FFss", - host : "example.com", - port : 123, - path : "/o\uF900ne/t\uFDCFwo.t\uFDF0hree", - query : "q1=a1\uF8FF\uE000&q2=a2", - fragment : "bo\uFFEFdy\uE001" - }; - strictEqual(URI.serialize(components, IRI_OPTION), "uri://us\xA0er:pa\uD7FFss@example.com:123/o\uF900ne/t\uFDCFwo.t\uFDF0hree?q1=a1\uF8FF\uE000&q2=a2#bo\uFFEFdy%EE%80%81"); -}); - -test("IRI Normalizing", function () { - strictEqual(URI.normalize("uri://www.example.org/red%09ros\xE9#red", IRI_OPTION), "uri://www.example.org/red%09ros\xE9#red"); -}); - -test("IRI Equals", function () { - //example from RFC 3987 - strictEqual(URI.equal("example://a/b/c/%7Bfoo%7D/ros\xE9", "eXAMPLE://a/./b/../b/%63/%7bfoo%7d/ros%C3%A9", IRI_OPTION), true); -}); - -test("Convert IRI to URI", function () { - //example from RFC 3987 - strictEqual(URI.serialize(URI.parse("uri://www.example.org/red%09ros\xE9#red", IRI_OPTION)), "uri://www.example.org/red%09ros%C3%A9#red"); - - //Internationalized Domain Name conversion via punycode example from RFC 3987 - strictEqual(URI.serialize(URI.parse("uri://r\xE9sum\xE9.example.org", {iri:true, domainHost:true}), {domainHost:true}), "uri://xn--rsum-bpad.example.org"); -}); - -test("Convert URI to IRI", function () { - //examples from RFC 3987 - strictEqual(URI.serialize(URI.parse("uri://www.example.org/D%C3%BCrst"), IRI_OPTION), "uri://www.example.org/D\xFCrst"); - strictEqual(URI.serialize(URI.parse("uri://www.example.org/D%FCrst"), IRI_OPTION), "uri://www.example.org/D%FCrst"); - strictEqual(URI.serialize(URI.parse("uri://xn--99zt52a.example.org/%e2%80%ae"), IRI_OPTION), "uri://xn--99zt52a.example.org/%E2%80%AE"); //or uri://\u7D0D\u8C46.example.org/%E2%80%AE - - //Internationalized Domain Name conversion via punycode example from RFC 3987 - strictEqual(URI.serialize(URI.parse("uri://xn--rsum-bpad.example.org", {domainHost:true}), {iri:true, domainHost:true}), "uri://r\xE9sum\xE9.example.org"); -}); - -// -// HTTP -// - -if (URI.SCHEMES["http"]) { - - //module("HTTP"); - - test("HTTP Equals", function () { - //test from RFC 2616 - strictEqual(URI.equal("http://abc.com:80/~smith/home.html", "http://abc.com/~smith/home.html"), true); - strictEqual(URI.equal("http://ABC.com/%7Esmith/home.html", "http://abc.com/~smith/home.html"), true); - strictEqual(URI.equal("http://ABC.com:/%7esmith/home.html", "http://abc.com/~smith/home.html"), true); - strictEqual(URI.equal("HTTP://ABC.COM", "http://abc.com/"), true); - //test from RFC 3986 - strictEqual(URI.equal("http://example.com:/", "http://example.com:80/"), true); - }); - -} - -if (URI.SCHEMES["https"]) { - - //module("HTTPS"); - - test("HTTPS Equals", function () { - strictEqual(URI.equal("https://example.com", "https://example.com:443/"), true); - strictEqual(URI.equal("https://example.com:/", "https://example.com:443/"), true); - }); - -} - -// -// URN -// - -if (URI.SCHEMES["urn"]) { - - //module("URN"); - - test("URN Parsing", function () { - //example from RFC 2141 - var components = URI.parse("urn:foo:a123,456"); - strictEqual(components.error, undefined, "errors"); - strictEqual(components.scheme, "urn", "scheme"); - //strictEqual(components.authority, undefined, "authority"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, undefined, "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, undefined, "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, undefined, "fragment"); - strictEqual(components.nid, "foo", "nid"); - strictEqual(components.nss, "a123,456", "nss"); - }); - - test("URN Serialization", function () { - //example from RFC 2141 - var components = { - scheme : "urn", - nid : "foo", - nss : "a123,456" - }; - strictEqual(URI.serialize(components), "urn:foo:a123,456"); - }); - - test("URN Equals", function () { - //test from RFC 2141 - strictEqual(URI.equal("urn:foo:a123,456", "urn:foo:a123,456"), true); - strictEqual(URI.equal("urn:foo:a123,456", "URN:foo:a123,456"), true); - strictEqual(URI.equal("urn:foo:a123,456", "urn:FOO:a123,456"), true); - strictEqual(URI.equal("urn:foo:a123,456", "urn:foo:A123,456"), false); - strictEqual(URI.equal("urn:foo:a123%2C456", "URN:FOO:a123%2c456"), true); - }); - - test("URN Resolving", function () { - //example from epoberezkin - strictEqual(URI.resolve('', 'urn:some:ip:prop'), 'urn:some:ip:prop'); - strictEqual(URI.resolve('#', 'urn:some:ip:prop'), 'urn:some:ip:prop'); - strictEqual(URI.resolve('urn:some:ip:prop', 'urn:some:ip:prop'), 'urn:some:ip:prop'); - strictEqual(URI.resolve('urn:some:other:prop', 'urn:some:ip:prop'), 'urn:some:ip:prop'); - }); - - // - // URN UUID - // - - test("UUID Parsing", function () { - //example from RFC 4122 - var components = URI.parse("urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"); - strictEqual(components.error, undefined, "errors"); - strictEqual(components.scheme, "urn", "scheme"); - //strictEqual(components.authority, undefined, "authority"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, undefined, "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, undefined, "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, undefined, "fragment"); - strictEqual(components.nid, "uuid", "nid"); - strictEqual(components.nss, undefined, "nss"); - strictEqual(components.uuid, "f81d4fae-7dec-11d0-a765-00a0c91e6bf6", "uuid"); - - components = URI.parse("urn:uuid:notauuid-7dec-11d0-a765-00a0c91e6bf6"); - notStrictEqual(components.error, undefined, "errors"); - }); - - test("UUID Serialization", function () { - //example from RFC 4122 - var components = { - scheme : "urn", - nid : "uuid", - uuid : "f81d4fae-7dec-11d0-a765-00a0c91e6bf6" - }; - strictEqual(URI.serialize(components), "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"); - - components = { - scheme : "urn", - nid : "uuid", - uuid : "notauuid-7dec-11d0-a765-00a0c91e6bf6" - }; - strictEqual(URI.serialize(components), "urn:uuid:notauuid-7dec-11d0-a765-00a0c91e6bf6"); - }); - - test("UUID Equals", function () { - strictEqual(URI.equal("URN:UUID:F81D4FAE-7DEC-11D0-A765-00A0C91E6BF6", "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"), true); - }); - - test("URN NID Override", function () { - var components = URI.parse("urn:foo:f81d4fae-7dec-11d0-a765-00a0c91e6bf6", {nid:"uuid"}); - strictEqual(components.error, undefined, "errors"); - strictEqual(components.scheme, "urn", "scheme"); - strictEqual(components.path, undefined, "path"); - strictEqual(components.nid, "foo", "nid"); - strictEqual(components.nss, undefined, "nss"); - strictEqual(components.uuid, "f81d4fae-7dec-11d0-a765-00a0c91e6bf6", "uuid"); - - var components = { - scheme : "urn", - nid : "foo", - uuid : "f81d4fae-7dec-11d0-a765-00a0c91e6bf6" - }; - strictEqual(URI.serialize(components, {nid:"uuid"}), "urn:foo:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"); - }); -} - -// -// Mailto -// - -if (URI.SCHEMES["mailto"]) { - - //module("Mailto"); - - test("Mailto Parse", function () { - var components; - - //tests from RFC 6068 - - components = URI.parse("mailto:chris@example.com"); - strictEqual(components.error, undefined, "error"); - strictEqual(components.scheme, "mailto", "scheme"); - strictEqual(components.userinfo, undefined, "userinfo"); - strictEqual(components.host, undefined, "host"); - strictEqual(components.port, undefined, "port"); - strictEqual(components.path, undefined, "path"); - strictEqual(components.query, undefined, "query"); - strictEqual(components.fragment, undefined, "fragment"); - deepEqual(components.to, ["chris@example.com"], "to"); - strictEqual(components.subject, undefined, "subject"); - strictEqual(components.body, undefined, "body"); - strictEqual(components.headers, undefined, "headers"); - - components = URI.parse("mailto:infobot@example.com?subject=current-issue"); - deepEqual(components.to, ["infobot@example.com"], "to"); - strictEqual(components.subject, "current-issue", "subject"); - - components = URI.parse("mailto:infobot@example.com?body=send%20current-issue"); - deepEqual(components.to, ["infobot@example.com"], "to"); - strictEqual(components.body, "send current-issue", "body"); - - components = URI.parse("mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index"); - deepEqual(components.to, ["infobot@example.com"], "to"); - strictEqual(components.body, "send current-issue\x0D\x0Asend index", "body"); - - components = URI.parse("mailto:list@example.org?In-Reply-To=%3C3469A91.D10AF4C@example.com%3E"); - deepEqual(components.to, ["list@example.org"], "to"); - deepEqual(components.headers, {"In-Reply-To":"<3469A91.D10AF4C@example.com>"}, "headers"); - - components = URI.parse("mailto:majordomo@example.com?body=subscribe%20bamboo-l"); - deepEqual(components.to, ["majordomo@example.com"], "to"); - strictEqual(components.body, "subscribe bamboo-l", "body"); - - components = URI.parse("mailto:joe@example.com?cc=bob@example.com&body=hello"); - deepEqual(components.to, ["joe@example.com"], "to"); - strictEqual(components.body, "hello", "body"); - deepEqual(components.headers, {"cc":"bob@example.com"}, "headers"); - - components = URI.parse("mailto:joe@example.com?cc=bob@example.com?body=hello"); - if (URI.VALIDATE_SUPPORT) ok(components.error, "invalid header fields"); - - components = URI.parse("mailto:gorby%25kremvax@example.com"); - deepEqual(components.to, ["gorby%kremvax@example.com"], "to gorby%kremvax@example.com"); - - components = URI.parse("mailto:unlikely%3Faddress@example.com?blat=foop"); - deepEqual(components.to, ["unlikely?address@example.com"], "to unlikely?address@example.com"); - deepEqual(components.headers, {"blat":"foop"}, "headers"); - - components = URI.parse("mailto:Mike%26family@example.org"); - deepEqual(components.to, ["Mike&family@example.org"], "to Mike&family@example.org"); - - components = URI.parse("mailto:%22not%40me%22@example.org"); - deepEqual(components.to, ['"not@me"@example.org'], "to " + '"not@me"@example.org'); - - components = URI.parse("mailto:%22oh%5C%5Cno%22@example.org"); - deepEqual(components.to, ['"oh\\\\no"@example.org'], "to " + '"oh\\\\no"@example.org'); - - components = URI.parse("mailto:%22%5C%5C%5C%22it's%5C%20ugly%5C%5C%5C%22%22@example.org"); - deepEqual(components.to, ['"\\\\\\"it\'s\\ ugly\\\\\\""@example.org'], "to " + '"\\\\\\"it\'s\\ ugly\\\\\\""@example.org'); - - components = URI.parse("mailto:user@example.org?subject=caf%C3%A9"); - deepEqual(components.to, ["user@example.org"], "to"); - strictEqual(components.subject, "caf\xE9", "subject"); - - components = URI.parse("mailto:user@example.org?subject=%3D%3Futf-8%3FQ%3Fcaf%3DC3%3DA9%3F%3D"); - deepEqual(components.to, ["user@example.org"], "to"); - strictEqual(components.subject, "=?utf-8?Q?caf=C3=A9?=", "subject"); //TODO: Verify this - - components = URI.parse("mailto:user@example.org?subject=%3D%3Fiso-8859-1%3FQ%3Fcaf%3DE9%3F%3D"); - deepEqual(components.to, ["user@example.org"], "to"); - strictEqual(components.subject, "=?iso-8859-1?Q?caf=E9?=", "subject"); //TODO: Verify this - - components = URI.parse("mailto:user@example.org?subject=caf%C3%A9&body=caf%C3%A9"); - deepEqual(components.to, ["user@example.org"], "to"); - strictEqual(components.subject, "caf\xE9", "subject"); - strictEqual(components.body, "caf\xE9", "body"); - - if (URI.IRI_SUPPORT) { - components = URI.parse("mailto:user@%E7%B4%8D%E8%B1%86.example.org?subject=Test&body=NATTO"); - deepEqual(components.to, ["user@xn--99zt52a.example.org"], "to"); - strictEqual(components.subject, "Test", "subject"); - strictEqual(components.body, "NATTO", "body"); - } - - }); - - test("Mailto Serialize", function () { - var components; - - //tests from RFC 6068 - strictEqual(URI.serialize({scheme : "mailto", to : ["chris@example.com"]}), "mailto:chris@example.com"); - strictEqual(URI.serialize({scheme : "mailto", to : ["infobot@example.com"], body : "current-issue"}), "mailto:infobot@example.com?body=current-issue"); - strictEqual(URI.serialize({scheme : "mailto", to : ["infobot@example.com"], body : "send current-issue"}), "mailto:infobot@example.com?body=send%20current-issue"); - strictEqual(URI.serialize({scheme : "mailto", to : ["infobot@example.com"], body : "send current-issue\x0D\x0Asend index"}), "mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index"); - strictEqual(URI.serialize({scheme : "mailto", to : ["list@example.org"], headers : {"In-Reply-To" : "<3469A91.D10AF4C@example.com>"}}), "mailto:list@example.org?In-Reply-To=%3C3469A91.D10AF4C@example.com%3E"); - strictEqual(URI.serialize({scheme : "mailto", to : ["majordomo@example.com"], body : "subscribe bamboo-l"}), "mailto:majordomo@example.com?body=subscribe%20bamboo-l"); - strictEqual(URI.serialize({scheme : "mailto", to : ["joe@example.com"], headers : {"cc" : "bob@example.com", "body" : "hello"}}), "mailto:joe@example.com?cc=bob@example.com&body=hello"); - strictEqual(URI.serialize({scheme : "mailto", to : ["gorby%25kremvax@example.com"]}), "mailto:gorby%25kremvax@example.com"); - strictEqual(URI.serialize({scheme : "mailto", to : ["unlikely%3Faddress@example.com"], headers : {"blat" : "foop"}}), "mailto:unlikely%3Faddress@example.com?blat=foop"); - strictEqual(URI.serialize({scheme : "mailto", to : ["Mike&family@example.org"]}), "mailto:Mike%26family@example.org"); - strictEqual(URI.serialize({scheme : "mailto", to : ['"not@me"@example.org']}), "mailto:%22not%40me%22@example.org"); - strictEqual(URI.serialize({scheme : "mailto", to : ['"oh\\\\no"@example.org']}), "mailto:%22oh%5C%5Cno%22@example.org"); - strictEqual(URI.serialize({scheme : "mailto", to : ['"\\\\\\"it\'s\\ ugly\\\\\\""@example.org']}), "mailto:%22%5C%5C%5C%22it's%5C%20ugly%5C%5C%5C%22%22@example.org"); - strictEqual(URI.serialize({scheme : "mailto", to : ["user@example.org"], subject : "caf\xE9"}), "mailto:user@example.org?subject=caf%C3%A9"); - strictEqual(URI.serialize({scheme : "mailto", to : ["user@example.org"], subject : "=?utf-8?Q?caf=C3=A9?="}), "mailto:user@example.org?subject=%3D%3Futf-8%3FQ%3Fcaf%3DC3%3DA9%3F%3D"); - strictEqual(URI.serialize({scheme : "mailto", to : ["user@example.org"], subject : "=?iso-8859-1?Q?caf=E9?="}), "mailto:user@example.org?subject=%3D%3Fiso-8859-1%3FQ%3Fcaf%3DE9%3F%3D"); - strictEqual(URI.serialize({scheme : "mailto", to : ["user@example.org"], subject : "caf\xE9", body : "caf\xE9"}), "mailto:user@example.org?subject=caf%C3%A9&body=caf%C3%A9"); - if (URI.IRI_SUPPORT) { - strictEqual(URI.serialize({scheme : "mailto", to : ["us\xE9r@\u7d0d\u8c46.example.org"], subject : "Test", body : "NATTO"}), "mailto:us%C3%A9r@xn--99zt52a.example.org?subject=Test&body=NATTO"); - } - - }); - - test("Mailto Equals", function () { - //tests from RFC 6068 - strictEqual(URI.equal("mailto:addr1@an.example,addr2@an.example", "mailto:?to=addr1@an.example,addr2@an.example"), true); - strictEqual(URI.equal("mailto:?to=addr1@an.example,addr2@an.example", "mailto:addr1@an.example?to=addr2@an.example"), true); - }); - -} diff --git a/node_modules/uri-js/tsconfig.json b/node_modules/uri-js/tsconfig.json deleted file mode 100644 index e289985..0000000 --- a/node_modules/uri-js/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compilerOptions": { - "module": "es2015", - "target": "esnext", - "noImplicitAny": true, - "sourceMap": true, - "alwaysStrict": true, - "declaration": true, - "experimentalDecorators": true, - "forceConsistentCasingInFileNames": true, - "importHelpers": true, - "noImplicitReturns": true, - "noImplicitThis": true, - "outDir": "dist/esnext", - "strictNullChecks": true - }, - "include": [ - "src/**/*" - ] -} diff --git a/node_modules/uri-js/yarn.lock b/node_modules/uri-js/yarn.lock deleted file mode 100644 index 569687d..0000000 --- a/node_modules/uri-js/yarn.lock +++ /dev/null @@ -1,1902 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - -ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - -are-we-there-yet@~1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - -arr-flatten@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - -aws4@^1.2.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" - -babel-cli@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" - dependencies: - babel-core "^6.26.0" - babel-polyfill "^6.26.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - commander "^2.11.0" - convert-source-map "^1.5.0" - fs-readdir-recursive "^1.0.0" - glob "^7.1.2" - lodash "^4.17.4" - output-file-sync "^1.1.2" - path-is-absolute "^1.0.1" - slash "^1.0.0" - source-map "^0.5.6" - v8flags "^2.1.1" - optionalDependencies: - chokidar "^1.6.1" - -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@6, babel-core@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.0" - debug "^2.6.8" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.7" - slash "^1.0.0" - source-map "^0.5.6" - -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-external-helpers@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz#2285f48b02bd5dede85175caf8c62e86adccefa1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - -babel-plugin-transform-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.24.1, babel-plugin-transform-es2015-classes@^6.9.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-regenerator@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-polyfill@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" - dependencies: - babel-runtime "^6.26.0" - core-js "^2.5.0" - regenerator-runtime "^0.10.5" - -babel-preset-es2015@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.24.1" - babel-plugin-transform-es2015-classes "^6.24.1" - babel-plugin-transform-es2015-computed-properties "^6.24.1" - babel-plugin-transform-es2015-destructuring "^6.22.0" - babel-plugin-transform-es2015-duplicate-keys "^6.24.1" - babel-plugin-transform-es2015-for-of "^6.22.0" - babel-plugin-transform-es2015-function-name "^6.24.1" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-plugin-transform-es2015-modules-systemjs "^6.24.1" - babel-plugin-transform-es2015-modules-umd "^6.24.1" - babel-plugin-transform-es2015-object-super "^6.24.1" - babel-plugin-transform-es2015-parameters "^6.24.1" - babel-plugin-transform-es2015-shorthand-properties "^6.24.1" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.24.1" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.22.0" - babel-plugin-transform-es2015-unicode-regex "^6.24.1" - babel-plugin-transform-regenerator "^6.24.1" - -babel-preset-es2016@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2016/-/babel-preset-es2016-6.24.1.tgz#f900bf93e2ebc0d276df9b8ab59724ebfd959f8b" - dependencies: - babel-plugin-transform-exponentiation-operator "^6.24.1" - -babel-preset-es2017@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz#597beadfb9f7f208bcfd8a12e9b2b29b8b2f14d1" - dependencies: - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.24.1" - -babel-preset-latest@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-latest/-/babel-preset-latest-6.24.1.tgz#677de069154a7485c2d25c577c02f624b85b85e8" - dependencies: - babel-preset-es2015 "^6.24.1" - babel-preset-es2016 "^6.24.1" - babel-preset-es2017 "^6.24.1" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" - dependencies: - tweetnacl "^0.14.3" - -binary-extensions@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -browser-resolve@^1.11.0: - version "1.11.2" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" - dependencies: - resolve "1.1.7" - -browser-stdout@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" - -buffer-crc32@^0.2.5: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - -builtin-modules@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chokidar@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" - dependencies: - delayed-stream "~1.0.0" - -commander@2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - dependencies: - graceful-readlink ">= 1.0.0" - -commander@^2.11.0: - version "2.15.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - -convert-source-map@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" - -core-js@^2.4.0, core-js@^2.5.0: - version "2.5.4" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.4.tgz#f2c8bf181f2a80b92f360121429ce63a2f0aeae0" - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - -debug@2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" - dependencies: - ms "2.0.0" - -debug@^2.2.0, debug@^2.6.8: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" - -decamelize@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -deep-extend@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" - -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - -diff@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" - -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - dependencies: - jsbn "~0.1.0" - -es6-promise@^3.1.2: - version "3.3.1" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" - -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -estree-walker@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - -extend@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -fs-readdir-recursive@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -fsevents@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.39" - -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - dependencies: - assert-plus "^1.0.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - dependencies: - is-glob "^2.0.0" - -glob@7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.5, glob@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - 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" - -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - -graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.4: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - -growl@1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" - -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - -hawk@3.1.3, hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -he@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - dependencies: - loose-envify "^1.0.0" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" - -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - dependencies: - kind-of "^3.0.2" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - -js-tokens@^3.0.0, js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -json3@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -kind-of@^3.0.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - dependencies: - is-buffer "^1.1.5" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - -lodash._baseassign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" - dependencies: - lodash._basecopy "^3.0.0" - lodash.keys "^3.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - -lodash._basecreate@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - -lodash.create@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" - dependencies: - lodash._baseassign "^3.0.0" - lodash._basecreate "^3.0.0" - lodash._isiterateecall "^3.0.0" - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - -lodash.keys@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" - dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" - -lodash@^4.17.4: - version "4.17.5" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - -loose-envify@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" - dependencies: - js-tokens "^3.0.0" - -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -mime-db@~1.33.0: - version "1.33.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" - -mime-types@^2.1.12, mime-types@~2.1.7: - version "2.1.18" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" - dependencies: - mime-db "~1.33.0" - -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -mocha-qunit-ui@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/mocha-qunit-ui/-/mocha-qunit-ui-0.1.3.tgz#e3e1ff1dac33222b10cef681efd7f82664141ea9" - -mocha@^3.2.0: - version "3.5.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d" - dependencies: - browser-stdout "1.3.0" - commander "2.9.0" - debug "2.6.8" - diff "3.2.0" - escape-string-regexp "1.0.5" - glob "7.1.1" - growl "1.9.2" - he "1.1.1" - json3 "3.3.2" - lodash.create "3.1.1" - mkdirp "0.5.1" - supports-color "3.1.2" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - -nan@^2.3.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" - -node-pre-gyp@^0.6.39: - version "0.6.39" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" - dependencies: - detect-libc "^1.0.2" - hawk "3.1.3" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "2.81.0" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-path@^2.0.0, normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - dependencies: - remove-trailing-separator "^1.0.1" - -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - -oauth-sign@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -once@^1.3.0, once@^1.3.3: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -output-file-sync@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" - dependencies: - graceful-fs "^4.1.4" - mkdirp "^0.5.1" - object-assign "^4.1.0" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" - -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - -private@^0.1.6, private@^0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - -process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -punycode@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" - -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - -randomatic@^1.1.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -rc@^1.1.7: - version "1.2.6" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.6.tgz#eb18989c6d4f4f162c399f79ddd29f3835568092" - dependencies: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4: - version "2.3.5" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.0.3" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" - -regenerate@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" - -regenerator-runtime@^0.10.5: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - dependencies: - is-equal-shallow "^0.1.3" - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - dependencies: - jsesc "~0.5.0" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - -repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - -request@2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - -resolve@^1.1.6: - version "1.6.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.6.0.tgz#0fbd21278b27b4004481c395349e7aba60a9ff5c" - dependencies: - path-parse "^1.0.5" - -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - dependencies: - align-text "^0.1.1" - -rimraf@2, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" - dependencies: - glob "^7.0.5" - -rollup-plugin-babel@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-2.7.1.tgz#16528197b0f938a1536f44683c7a93d573182f57" - dependencies: - babel-core "6" - babel-plugin-transform-es2015-classes "^6.9.0" - object-assign "^4.1.0" - rollup-pluginutils "^1.5.0" - -rollup-plugin-node-resolve@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-2.1.1.tgz#cbb783b0d15b02794d58915350b2f0d902b8ddc8" - dependencies: - browser-resolve "^1.11.0" - builtin-modules "^1.1.0" - resolve "^1.1.6" - -rollup-pluginutils@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" - dependencies: - estree-walker "^0.2.1" - minimatch "^3.0.2" - -rollup@^0.41.6: - version "0.41.6" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.41.6.tgz#e0d05497877a398c104d816d2733a718a7a94e2a" - dependencies: - source-map-support "^0.4.0" - -safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - -sander@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad" - dependencies: - es6-promise "^3.1.2" - graceful-fs "^4.1.3" - mkdirp "^0.5.1" - rimraf "^2.5.2" - -semver@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - -set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - -sorcery@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.10.0.tgz#8ae90ad7d7cb05fc59f1ab0c637845d5c15a52b7" - dependencies: - buffer-crc32 "^0.2.5" - minimist "^1.2.0" - sander "^0.5.0" - sourcemap-codec "^1.3.0" - -source-map-support@^0.4.0, source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - dependencies: - source-map "^0.5.6" - -source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - -sourcemap-codec@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.1.tgz#c8fd92d91889e902a07aee392bdd2c5863958ba2" - -sshpk@^1.7.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - -string-width@^1.0.1, string-width@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string_decoder@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" - dependencies: - safe-buffer "~5.1.0" - -stringstream@~0.0.4: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.0.0" - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - -supports-color@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" - dependencies: - has-flag "^1.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -tar-pack@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" - -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - -tough-cookie@~2.3.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - dependencies: - punycode "^1.4.1" - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - -typescript@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.1.tgz#6160e4f8f195d5ba81d4876f9c0cc1fbc0820624" - -uglify-js@^2.8.14: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - -user-home@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -uuid@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" - -v8flags@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" - dependencies: - user-home "^1.1.1" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -wide-align@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" - dependencies: - string-width "^1.0.2" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" diff --git a/node_modules/uuid/AUTHORS b/node_modules/uuid/AUTHORS deleted file mode 100644 index 5a10523..0000000 --- a/node_modules/uuid/AUTHORS +++ /dev/null @@ -1,5 +0,0 @@ -Robert Kieffer -Christoph Tavan -AJ ONeal -Vincent Voyer -Roman Shtylman diff --git a/node_modules/uuid/CHANGELOG.md b/node_modules/uuid/CHANGELOG.md deleted file mode 100644 index f811b8a..0000000 --- a/node_modules/uuid/CHANGELOG.md +++ /dev/null @@ -1,119 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. - -## [3.4.0](https://github.com/uuidjs/uuid/compare/v3.3.3...v3.4.0) (2020-01-16) - - -### Features - -* rename repository to github:uuidjs/uuid ([#351](https://github.com/uuidjs/uuid/issues/351)) ([e2d7314](https://github.com/uuidjs/uuid/commit/e2d7314)), closes [#338](https://github.com/uuidjs/uuid/issues/338) - -### [3.3.3](https://github.com/uuidjs/uuid/compare/v3.3.2...v3.3.3) (2019-08-19) - - -## [3.3.2](https://github.com/uuidjs/uuid/compare/v3.3.1...v3.3.2) (2018-06-28) - - -### Bug Fixes - -* typo ([305d877](https://github.com/uuidjs/uuid/commit/305d877)) - - - - -## [3.3.1](https://github.com/uuidjs/uuid/compare/v3.3.0...v3.3.1) (2018-06-28) - - -### Bug Fixes - -* fix [#284](https://github.com/uuidjs/uuid/issues/284) by setting function name in try-catch ([f2a60f2](https://github.com/uuidjs/uuid/commit/f2a60f2)) - - - - -# [3.3.0](https://github.com/uuidjs/uuid/compare/v3.2.1...v3.3.0) (2018-06-22) - - -### Bug Fixes - -* assignment to readonly property to allow running in strict mode ([#270](https://github.com/uuidjs/uuid/issues/270)) ([d062fdc](https://github.com/uuidjs/uuid/commit/d062fdc)) -* fix [#229](https://github.com/uuidjs/uuid/issues/229) ([c9684d4](https://github.com/uuidjs/uuid/commit/c9684d4)) -* Get correct version of IE11 crypto ([#274](https://github.com/uuidjs/uuid/issues/274)) ([153d331](https://github.com/uuidjs/uuid/commit/153d331)) -* mem issue when generating uuid ([#267](https://github.com/uuidjs/uuid/issues/267)) ([c47702c](https://github.com/uuidjs/uuid/commit/c47702c)) - -### Features - -* enforce Conventional Commit style commit messages ([#282](https://github.com/uuidjs/uuid/issues/282)) ([cc9a182](https://github.com/uuidjs/uuid/commit/cc9a182)) - - - -## [3.2.1](https://github.com/uuidjs/uuid/compare/v3.2.0...v3.2.1) (2018-01-16) - - -### Bug Fixes - -* use msCrypto if available. Fixes [#241](https://github.com/uuidjs/uuid/issues/241) ([#247](https://github.com/uuidjs/uuid/issues/247)) ([1fef18b](https://github.com/uuidjs/uuid/commit/1fef18b)) - - - - -# [3.2.0](https://github.com/uuidjs/uuid/compare/v3.1.0...v3.2.0) (2018-01-16) - - -### Bug Fixes - -* remove mistakenly added typescript dependency, rollback version (standard-version will auto-increment) ([09fa824](https://github.com/uuidjs/uuid/commit/09fa824)) -* use msCrypto if available. Fixes [#241](https://github.com/uuidjs/uuid/issues/241) ([#247](https://github.com/uuidjs/uuid/issues/247)) ([1fef18b](https://github.com/uuidjs/uuid/commit/1fef18b)) - - -### Features - -* Add v3 Support ([#217](https://github.com/uuidjs/uuid/issues/217)) ([d94f726](https://github.com/uuidjs/uuid/commit/d94f726)) - - -# [3.1.0](https://github.com/uuidjs/uuid/compare/v3.1.0...v3.0.1) (2017-06-17) - -### Bug Fixes - -* (fix) Add .npmignore file to exclude test/ and other non-essential files from packing. (#183) -* Fix typo (#178) -* Simple typo fix (#165) - -### Features -* v5 support in CLI (#197) -* V5 support (#188) - - -# 3.0.1 (2016-11-28) - -* split uuid versions into separate files - - -# 3.0.0 (2016-11-17) - -* remove .parse and .unparse - - -# 2.0.0 - -* Removed uuid.BufferClass - - -# 1.4.0 - -* Improved module context detection -* Removed public RNG functions - - -# 1.3.2 - -* Improve tests and handling of v1() options (Issue #24) -* Expose RNG option to allow for perf testing with different generators - - -# 1.3.0 - -* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)! -* Support for node.js crypto API -* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code diff --git a/node_modules/uuid/LICENSE.md b/node_modules/uuid/LICENSE.md deleted file mode 100644 index 8c84e39..0000000 --- a/node_modules/uuid/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2010-2016 Robert Kieffer and other contributors - -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. diff --git a/node_modules/uuid/README.md b/node_modules/uuid/README.md deleted file mode 100644 index 1752e47..0000000 --- a/node_modules/uuid/README.md +++ /dev/null @@ -1,276 +0,0 @@ - - -# uuid [![Build Status](https://secure.travis-ci.org/kelektiv/node-uuid.svg?branch=master)](http://travis-ci.org/kelektiv/node-uuid) # - -Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS. - -Features: - -* Support for version 1, 3, 4 and 5 UUIDs -* Cross-platform -* Uses cryptographically-strong random number APIs (when available) -* Zero-dependency, small footprint (... but not [this small](https://gist.github.com/982883)) - -[**Deprecation warning**: The use of `require('uuid')` is deprecated and will not be -supported after version 3.x of this module. Instead, use `require('uuid/[v1|v3|v4|v5]')` as shown in the examples below.] - -## Quickstart - CommonJS (Recommended) - -```shell -npm install uuid -``` - -Then generate your uuid version of choice ... - -Version 1 (timestamp): - -```javascript -const uuidv1 = require('uuid/v1'); -uuidv1(); // ⇨ '2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d' - -``` - -Version 3 (namespace): - -```javascript -const uuidv3 = require('uuid/v3'); - -// ... using predefined DNS namespace (for domain names) -uuidv3('hello.example.com', uuidv3.DNS); // ⇨ '9125a8dc-52ee-365b-a5aa-81b0b3681cf6' - -// ... using predefined URL namespace (for, well, URLs) -uuidv3('http://example.com/hello', uuidv3.URL); // ⇨ 'c6235813-3ba4-3801-ae84-e0a6ebb7d138' - -// ... using a custom namespace -// -// Note: Custom namespaces should be a UUID string specific to your application! -// E.g. the one here was generated using this modules `uuid` CLI. -const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341'; -uuidv3('Hello, World!', MY_NAMESPACE); // ⇨ 'e8b5a51d-11c8-3310-a6ab-367563f20686' - -``` - -Version 4 (random): - -```javascript -const uuidv4 = require('uuid/v4'); -uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed' - -``` - -Version 5 (namespace): - -```javascript -const uuidv5 = require('uuid/v5'); - -// ... using predefined DNS namespace (for domain names) -uuidv5('hello.example.com', uuidv5.DNS); // ⇨ 'fdda765f-fc57-5604-a269-52a7df8164ec' - -// ... using predefined URL namespace (for, well, URLs) -uuidv5('http://example.com/hello', uuidv5.URL); // ⇨ '3bbcee75-cecc-5b56-8031-b6641c1ed1f1' - -// ... using a custom namespace -// -// Note: Custom namespaces should be a UUID string specific to your application! -// E.g. the one here was generated using this modules `uuid` CLI. -const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341'; -uuidv5('Hello, World!', MY_NAMESPACE); // ⇨ '630eb68f-e0fa-5ecc-887a-7c7a62614681' - -``` - -## API - -### Version 1 - -```javascript -const uuidv1 = require('uuid/v1'); - -// Incantations -uuidv1(); -uuidv1(options); -uuidv1(options, buffer, offset); -``` - -Generate and return a RFC4122 v1 (timestamp-based) UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. - * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. - * `msecs` - (Number) Time in milliseconds since unix Epoch. Default: The current time is used. - * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Note: The default [node id](https://tools.ietf.org/html/rfc4122#section-4.1.6) (the last 12 digits in the UUID) is generated once, randomly, on process startup, and then remains unchanged for the duration of the process. - -Example: Generate string UUID with fully-specified options - -```javascript -const v1options = { - node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], - clockseq: 0x1234, - msecs: new Date('2011-11-01').getTime(), - nsecs: 5678 -}; -uuidv1(v1options); // ⇨ '710b962e-041c-11e1-9234-0123456789ab' - -``` - -Example: In-place generation of two binary IDs - -```javascript -// Generate two ids in an array -const arr = new Array(); -uuidv1(null, arr, 0); // ⇨ - // [ - // 44, 94, 164, 192, 64, 103, - // 17, 233, 146, 52, 155, 29, - // 235, 77, 59, 125 - // ] -uuidv1(null, arr, 16); // ⇨ - // [ - // 44, 94, 164, 192, 64, 103, 17, 233, - // 146, 52, 155, 29, 235, 77, 59, 125, - // 44, 94, 164, 193, 64, 103, 17, 233, - // 146, 52, 155, 29, 235, 77, 59, 125 - // ] - -``` - -### Version 3 - -```javascript -const uuidv3 = require('uuid/v3'); - -// Incantations -uuidv3(name, namespace); -uuidv3(name, namespace, buffer); -uuidv3(name, namespace, buffer, offset); -``` - -Generate and return a RFC4122 v3 UUID. - -* `name` - (String | Array[]) "name" to create UUID with -* `namespace` - (String | Array[]) "namespace" UUID either as a String or Array[16] of byte values -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. Default = 0 - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Example: - -```javascript -uuidv3('hello world', MY_NAMESPACE); // ⇨ '042ffd34-d989-321c-ad06-f60826172424' - -``` - -### Version 4 - -```javascript -const uuidv4 = require('uuid/v4') - -// Incantations -uuidv4(); -uuidv4(options); -uuidv4(options, buffer, offset); -``` - -Generate and return a RFC4122 v4 UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values - * `rng` - (Function) Random # generator function that returns an Array[16] of byte values (0-255) -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Example: Generate string UUID with predefined `random` values - -```javascript -const v4options = { - random: [ - 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, - 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 - ] -}; -uuidv4(v4options); // ⇨ '109156be-c4fb-41ea-b1b4-efe1671c5836' - -``` - -Example: Generate two IDs in a single buffer - -```javascript -const buffer = new Array(); -uuidv4(null, buffer, 0); // ⇨ - // [ - // 155, 29, 235, 77, 59, - // 125, 75, 173, 155, 221, - // 43, 13, 123, 61, 203, - // 109 - // ] -uuidv4(null, buffer, 16); // ⇨ - // [ - // 155, 29, 235, 77, 59, 125, 75, 173, - // 155, 221, 43, 13, 123, 61, 203, 109, - // 27, 157, 107, 205, 187, 253, 75, 45, - // 155, 93, 171, 141, 251, 189, 75, 237 - // ] - -``` - -### Version 5 - -```javascript -const uuidv5 = require('uuid/v5'); - -// Incantations -uuidv5(name, namespace); -uuidv5(name, namespace, buffer); -uuidv5(name, namespace, buffer, offset); -``` - -Generate and return a RFC4122 v5 UUID. - -* `name` - (String | Array[]) "name" to create UUID with -* `namespace` - (String | Array[]) "namespace" UUID either as a String or Array[16] of byte values -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. Default = 0 - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Example: - -```javascript -uuidv5('hello world', MY_NAMESPACE); // ⇨ '9f282611-e0fd-5650-8953-89c8e342da0b' - -``` - -## Command Line - -UUIDs can be generated from the command line with the `uuid` command. - -```shell -$ uuid -ddeb27fb-d9a0-4624-be4d-4615062daed4 - -$ uuid v1 -02d37060-d446-11e7-a9fa-7bdae751ebe1 -``` - -Type `uuid --help` for usage details - -## Testing - -```shell -npm test -``` - ----- -Markdown generated from [README_js.md](README_js.md) by [![RunMD Logo](http://i.imgur.com/h0FVyzU.png)](https://github.com/broofa/runmd) \ No newline at end of file diff --git a/node_modules/uuid/bin/uuid b/node_modules/uuid/bin/uuid deleted file mode 100755 index 502626e..0000000 --- a/node_modules/uuid/bin/uuid +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env node -var assert = require('assert'); - -function usage() { - console.log('Usage:'); - console.log(' uuid'); - console.log(' uuid v1'); - console.log(' uuid v3 '); - console.log(' uuid v4'); - console.log(' uuid v5 '); - console.log(' uuid --help'); - console.log('\nNote: may be "URL" or "DNS" to use the corresponding UUIDs defined by RFC4122'); -} - -var args = process.argv.slice(2); - -if (args.indexOf('--help') >= 0) { - usage(); - process.exit(0); -} -var version = args.shift() || 'v4'; - -switch (version) { - case 'v1': - var uuidV1 = require('../v1'); - console.log(uuidV1()); - break; - - case 'v3': - var uuidV3 = require('../v3'); - - var name = args.shift(); - var namespace = args.shift(); - assert(name != null, 'v3 name not specified'); - assert(namespace != null, 'v3 namespace not specified'); - - if (namespace == 'URL') namespace = uuidV3.URL; - if (namespace == 'DNS') namespace = uuidV3.DNS; - - console.log(uuidV3(name, namespace)); - break; - - case 'v4': - var uuidV4 = require('../v4'); - console.log(uuidV4()); - break; - - case 'v5': - var uuidV5 = require('../v5'); - - var name = args.shift(); - var namespace = args.shift(); - assert(name != null, 'v5 name not specified'); - assert(namespace != null, 'v5 namespace not specified'); - - if (namespace == 'URL') namespace = uuidV5.URL; - if (namespace == 'DNS') namespace = uuidV5.DNS; - - console.log(uuidV5(name, namespace)); - break; - - default: - usage(); - process.exit(1); -} diff --git a/node_modules/uuid/index.js b/node_modules/uuid/index.js deleted file mode 100644 index e96791a..0000000 --- a/node_modules/uuid/index.js +++ /dev/null @@ -1,8 +0,0 @@ -var v1 = require('./v1'); -var v4 = require('./v4'); - -var uuid = v4; -uuid.v1 = v1; -uuid.v4 = v4; - -module.exports = uuid; diff --git a/node_modules/uuid/lib/bytesToUuid.js b/node_modules/uuid/lib/bytesToUuid.js deleted file mode 100644 index 24b6041..0000000 --- a/node_modules/uuid/lib/bytesToUuid.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ -var byteToHex = []; -for (var i = 0; i < 256; ++i) { - byteToHex[i] = (i + 0x100).toString(16).substr(1); -} - -function bytesToUuid(buf, offset) { - var i = offset || 0; - var bth = byteToHex; - // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4 - return ([ - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]] - ]).join(''); -} - -module.exports = bytesToUuid; diff --git a/node_modules/uuid/lib/md5-browser.js b/node_modules/uuid/lib/md5-browser.js deleted file mode 100644 index 9b3b6c7..0000000 --- a/node_modules/uuid/lib/md5-browser.js +++ /dev/null @@ -1,216 +0,0 @@ -/* - * Browser-compatible JavaScript MD5 - * - * Modification of JavaScript MD5 - * https://github.com/blueimp/JavaScript-MD5 - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - * - * Based on - * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message - * Digest Algorithm, as defined in RFC 1321. - * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for more info. - */ - -'use strict'; - -function md5(bytes) { - if (typeof(bytes) == 'string') { - var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape - bytes = new Array(msg.length); - for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i); - } - - return md5ToHexEncodedArray( - wordsToMd5( - bytesToWords(bytes) - , bytes.length * 8) - ); -} - - -/* -* Convert an array of little-endian words to an array of bytes -*/ -function md5ToHexEncodedArray(input) { - var i; - var x; - var output = []; - var length32 = input.length * 32; - var hexTab = '0123456789abcdef'; - var hex; - - for (i = 0; i < length32; i += 8) { - x = (input[i >> 5] >>> (i % 32)) & 0xFF; - - hex = parseInt(hexTab.charAt((x >>> 4) & 0x0F) + hexTab.charAt(x & 0x0F), 16); - - output.push(hex); - } - return output; -} - -/* -* Calculate the MD5 of an array of little-endian words, and a bit length. -*/ -function wordsToMd5(x, len) { - /* append padding */ - x[len >> 5] |= 0x80 << (len % 32); - x[(((len + 64) >>> 9) << 4) + 14] = len; - - var i; - var olda; - var oldb; - var oldc; - var oldd; - var a = 1732584193; - var b = -271733879; - var c = -1732584194; - - var d = 271733878; - - for (i = 0; i < x.length; i += 16) { - olda = a; - oldb = b; - oldc = c; - oldd = d; - - a = md5ff(a, b, c, d, x[i], 7, -680876936); - d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); - c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); - b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); - a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); - d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); - c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); - b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); - a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); - d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); - c = md5ff(c, d, a, b, x[i + 10], 17, -42063); - b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); - a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); - d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); - c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); - b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); - - a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); - d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); - c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); - b = md5gg(b, c, d, a, x[i], 20, -373897302); - a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); - d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); - c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); - b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); - a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); - d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); - c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); - b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); - a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); - d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); - c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); - b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); - - a = md5hh(a, b, c, d, x[i + 5], 4, -378558); - d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); - c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); - b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); - a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); - d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); - c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); - b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); - a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); - d = md5hh(d, a, b, c, x[i], 11, -358537222); - c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); - b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); - a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); - d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); - c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); - b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); - - a = md5ii(a, b, c, d, x[i], 6, -198630844); - d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); - c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); - b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); - a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); - d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); - c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); - b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); - a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); - d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); - c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); - b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); - a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); - d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); - c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); - b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); - - a = safeAdd(a, olda); - b = safeAdd(b, oldb); - c = safeAdd(c, oldc); - d = safeAdd(d, oldd); - } - return [a, b, c, d]; -} - -/* -* Convert an array bytes to an array of little-endian words -* Characters >255 have their high-byte silently ignored. -*/ -function bytesToWords(input) { - var i; - var output = []; - output[(input.length >> 2) - 1] = undefined; - for (i = 0; i < output.length; i += 1) { - output[i] = 0; - } - var length8 = input.length * 8; - for (i = 0; i < length8; i += 8) { - output[i >> 5] |= (input[(i / 8)] & 0xFF) << (i % 32); - } - - return output; -} - -/* -* Add integers, wrapping at 2^32. This uses 16-bit operations internally -* to work around bugs in some JS interpreters. -*/ -function safeAdd(x, y) { - var lsw = (x & 0xFFFF) + (y & 0xFFFF); - var msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return (msw << 16) | (lsw & 0xFFFF); -} - -/* -* Bitwise rotate a 32-bit number to the left. -*/ -function bitRotateLeft(num, cnt) { - return (num << cnt) | (num >>> (32 - cnt)); -} - -/* -* These functions implement the four basic operations the algorithm uses. -*/ -function md5cmn(q, a, b, x, s, t) { - return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); -} -function md5ff(a, b, c, d, x, s, t) { - return md5cmn((b & c) | ((~b) & d), a, b, x, s, t); -} -function md5gg(a, b, c, d, x, s, t) { - return md5cmn((b & d) | (c & (~d)), a, b, x, s, t); -} -function md5hh(a, b, c, d, x, s, t) { - return md5cmn(b ^ c ^ d, a, b, x, s, t); -} -function md5ii(a, b, c, d, x, s, t) { - return md5cmn(c ^ (b | (~d)), a, b, x, s, t); -} - -module.exports = md5; diff --git a/node_modules/uuid/lib/md5.js b/node_modules/uuid/lib/md5.js deleted file mode 100644 index 7044b87..0000000 --- a/node_modules/uuid/lib/md5.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -var crypto = require('crypto'); - -function md5(bytes) { - if (typeof Buffer.from === 'function') { - // Modern Buffer API - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - } else { - // Pre-v4 Buffer API - if (Array.isArray(bytes)) { - bytes = new Buffer(bytes); - } else if (typeof bytes === 'string') { - bytes = new Buffer(bytes, 'utf8'); - } - } - - return crypto.createHash('md5').update(bytes).digest(); -} - -module.exports = md5; diff --git a/node_modules/uuid/lib/rng-browser.js b/node_modules/uuid/lib/rng-browser.js deleted file mode 100644 index 6361fb8..0000000 --- a/node_modules/uuid/lib/rng-browser.js +++ /dev/null @@ -1,34 +0,0 @@ -// Unique ID creation requires a high quality random # generator. In the -// browser this is a little complicated due to unknown quality of Math.random() -// and inconsistent support for the `crypto` API. We do the best we can via -// feature-detection - -// getRandomValues needs to be invoked in a context where "this" is a Crypto -// implementation. Also, find the complete implementation of crypto on IE11. -var getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) || - (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto)); - -if (getRandomValues) { - // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto - var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef - - module.exports = function whatwgRNG() { - getRandomValues(rnds8); - return rnds8; - }; -} else { - // Math.random()-based (RNG) - // - // If all else fails, use Math.random(). It's fast, but is of unspecified - // quality. - var rnds = new Array(16); - - module.exports = function mathRNG() { - for (var i = 0, r; i < 16; i++) { - if ((i & 0x03) === 0) r = Math.random() * 0x100000000; - rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; - } - - return rnds; - }; -} diff --git a/node_modules/uuid/lib/rng.js b/node_modules/uuid/lib/rng.js deleted file mode 100644 index 58f0dc9..0000000 --- a/node_modules/uuid/lib/rng.js +++ /dev/null @@ -1,8 +0,0 @@ -// Unique ID creation requires a high quality random # generator. In node.js -// this is pretty straight-forward - we use the crypto API. - -var crypto = require('crypto'); - -module.exports = function nodeRNG() { - return crypto.randomBytes(16); -}; diff --git a/node_modules/uuid/lib/sha1-browser.js b/node_modules/uuid/lib/sha1-browser.js deleted file mode 100644 index 5758ed7..0000000 --- a/node_modules/uuid/lib/sha1-browser.js +++ /dev/null @@ -1,89 +0,0 @@ -// Adapted from Chris Veness' SHA1 code at -// http://www.movable-type.co.uk/scripts/sha1.html -'use strict'; - -function f(s, x, y, z) { - switch (s) { - case 0: return (x & y) ^ (~x & z); - case 1: return x ^ y ^ z; - case 2: return (x & y) ^ (x & z) ^ (y & z); - case 3: return x ^ y ^ z; - } -} - -function ROTL(x, n) { - return (x << n) | (x>>> (32 - n)); -} - -function sha1(bytes) { - var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6]; - var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]; - - if (typeof(bytes) == 'string') { - var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape - bytes = new Array(msg.length); - for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i); - } - - bytes.push(0x80); - - var l = bytes.length/4 + 2; - var N = Math.ceil(l/16); - var M = new Array(N); - - for (var i=0; i>> 0; - e = d; - d = c; - c = ROTL(b, 30) >>> 0; - b = a; - a = T; - } - - H[0] = (H[0] + a) >>> 0; - H[1] = (H[1] + b) >>> 0; - H[2] = (H[2] + c) >>> 0; - H[3] = (H[3] + d) >>> 0; - H[4] = (H[4] + e) >>> 0; - } - - return [ - H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, - H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, - H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, - H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, - H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff - ]; -} - -module.exports = sha1; diff --git a/node_modules/uuid/lib/sha1.js b/node_modules/uuid/lib/sha1.js deleted file mode 100644 index 0b54b25..0000000 --- a/node_modules/uuid/lib/sha1.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -var crypto = require('crypto'); - -function sha1(bytes) { - if (typeof Buffer.from === 'function') { - // Modern Buffer API - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - } else { - // Pre-v4 Buffer API - if (Array.isArray(bytes)) { - bytes = new Buffer(bytes); - } else if (typeof bytes === 'string') { - bytes = new Buffer(bytes, 'utf8'); - } - } - - return crypto.createHash('sha1').update(bytes).digest(); -} - -module.exports = sha1; diff --git a/node_modules/uuid/lib/v35.js b/node_modules/uuid/lib/v35.js deleted file mode 100644 index 8b066cc..0000000 --- a/node_modules/uuid/lib/v35.js +++ /dev/null @@ -1,57 +0,0 @@ -var bytesToUuid = require('./bytesToUuid'); - -function uuidToBytes(uuid) { - // Note: We assume we're being passed a valid uuid string - var bytes = []; - uuid.replace(/[a-fA-F0-9]{2}/g, function(hex) { - bytes.push(parseInt(hex, 16)); - }); - - return bytes; -} - -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - var bytes = new Array(str.length); - for (var i = 0; i < str.length; i++) { - bytes[i] = str.charCodeAt(i); - } - return bytes; -} - -module.exports = function(name, version, hashfunc) { - var generateUUID = function(value, namespace, buf, offset) { - var off = buf && offset || 0; - - if (typeof(value) == 'string') value = stringToBytes(value); - if (typeof(namespace) == 'string') namespace = uuidToBytes(namespace); - - if (!Array.isArray(value)) throw TypeError('value must be an array of bytes'); - if (!Array.isArray(namespace) || namespace.length !== 16) throw TypeError('namespace must be uuid string or an Array of 16 byte values'); - - // Per 4.3 - var bytes = hashfunc(namespace.concat(value)); - bytes[6] = (bytes[6] & 0x0f) | version; - bytes[8] = (bytes[8] & 0x3f) | 0x80; - - if (buf) { - for (var idx = 0; idx < 16; ++idx) { - buf[off+idx] = bytes[idx]; - } - } - - return buf || bytesToUuid(bytes); - }; - - // Function#name is not settable on some platforms (#270) - try { - generateUUID.name = name; - } catch (err) { - } - - // Pre-defined namespaces, per Appendix C - generateUUID.DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; - generateUUID.URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; - - return generateUUID; -}; diff --git a/node_modules/uuid/package.json b/node_modules/uuid/package.json deleted file mode 100644 index f9274d2..0000000 --- a/node_modules/uuid/package.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "_from": "uuid@^3.3.2", - "_id": "uuid@3.4.0", - "_inBundle": false, - "_integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "_location": "/uuid", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "uuid@^3.3.2", - "name": "uuid", - "escapedName": "uuid", - "rawSpec": "^3.3.2", - "saveSpec": null, - "fetchSpec": "^3.3.2" - }, - "_requiredBy": [ - "/request" - ], - "_resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "_shasum": "b23e4358afa8a202fe7a100af1f5f883f02007ee", - "_spec": "uuid@^3.3.2", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/request", - "bin": { - "uuid": "bin/uuid" - }, - "browser": { - "./lib/rng.js": "./lib/rng-browser.js", - "./lib/sha1.js": "./lib/sha1-browser.js", - "./lib/md5.js": "./lib/md5-browser.js" - }, - "bugs": { - "url": "https://github.com/uuidjs/uuid/issues" - }, - "bundleDependencies": false, - "commitlint": { - "extends": [ - "@commitlint/config-conventional" - ] - }, - "contributors": [ - { - "name": "Robert Kieffer", - "email": "robert@broofa.com" - }, - { - "name": "Christoph Tavan", - "email": "dev@tavan.de" - }, - { - "name": "AJ ONeal", - "email": "coolaj86@gmail.com" - }, - { - "name": "Vincent Voyer", - "email": "vincent@zeroload.net" - }, - { - "name": "Roman Shtylman", - "email": "shtylman@gmail.com" - } - ], - "deprecated": false, - "description": "RFC4122 (v1, v4, and v5) UUIDs", - "devDependencies": { - "@commitlint/cli": "~8.2.0", - "@commitlint/config-conventional": "~8.2.0", - "eslint": "~6.4.0", - "husky": "~3.0.5", - "mocha": "6.2.0", - "runmd": "1.2.1", - "standard-version": "7.0.0" - }, - "homepage": "https://github.com/uuidjs/uuid#readme", - "husky": { - "hooks": { - "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" - } - }, - "keywords": [ - "uuid", - "guid", - "rfc4122" - ], - "license": "MIT", - "name": "uuid", - "repository": { - "type": "git", - "url": "git+https://github.com/uuidjs/uuid.git" - }, - "scripts": { - "lint": "eslint .", - "md": "runmd --watch --output=README.md README_js.md", - "prepare": "runmd --output=README.md README_js.md", - "release": "standard-version", - "test": "npm run lint && mocha test/test.js" - }, - "version": "3.4.0" -} diff --git a/node_modules/uuid/v1.js b/node_modules/uuid/v1.js deleted file mode 100644 index 8c245de..0000000 --- a/node_modules/uuid/v1.js +++ /dev/null @@ -1,109 +0,0 @@ -var rng = require('./lib/rng'); -var bytesToUuid = require('./lib/bytesToUuid'); - -// **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html - -var _nodeId; -var _clockseq; - -// Previous uuid creation time -var _lastMSecs = 0; -var _lastNSecs = 0; - -// See https://github.com/uuidjs/uuid for API details -function v1(options, buf, offset) { - var i = buf && offset || 0; - var b = buf || []; - - options = options || {}; - var node = options.node || _nodeId; - var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; - - // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 - if (node == null || clockseq == null) { - var seedBytes = rng(); - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [ - seedBytes[0] | 0x01, - seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5] - ]; - } - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } - - // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); - - // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; - - // Time since last uuid creation (in msecs) - var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; - - // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } - - // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } - - // Per 4.2.1.2 Throw error if too many uuids are requested - if (nsecs >= 10000) { - throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; - - // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; - - // `time_low` - var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; - - // `time_mid` - var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; - - // `time_high_and_version` - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - b[i++] = tmh >>> 16 & 0xff; - - // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - b[i++] = clockseq >>> 8 | 0x80; - - // `clock_seq_low` - b[i++] = clockseq & 0xff; - - // `node` - for (var n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } - - return buf ? buf : bytesToUuid(b); -} - -module.exports = v1; diff --git a/node_modules/uuid/v3.js b/node_modules/uuid/v3.js deleted file mode 100644 index ee7e14c..0000000 --- a/node_modules/uuid/v3.js +++ /dev/null @@ -1,4 +0,0 @@ -var v35 = require('./lib/v35.js'); -var md5 = require('./lib/md5'); - -module.exports = v35('v3', 0x30, md5); \ No newline at end of file diff --git a/node_modules/uuid/v4.js b/node_modules/uuid/v4.js deleted file mode 100644 index 1f07be1..0000000 --- a/node_modules/uuid/v4.js +++ /dev/null @@ -1,29 +0,0 @@ -var rng = require('./lib/rng'); -var bytesToUuid = require('./lib/bytesToUuid'); - -function v4(options, buf, offset) { - var i = buf && offset || 0; - - if (typeof(options) == 'string') { - buf = options === 'binary' ? new Array(16) : null; - options = null; - } - options = options || {}; - - var rnds = options.random || (options.rng || rng)(); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; - - // Copy bytes to buffer, if provided - if (buf) { - for (var ii = 0; ii < 16; ++ii) { - buf[i + ii] = rnds[ii]; - } - } - - return buf || bytesToUuid(rnds); -} - -module.exports = v4; diff --git a/node_modules/uuid/v5.js b/node_modules/uuid/v5.js deleted file mode 100644 index 4945baf..0000000 --- a/node_modules/uuid/v5.js +++ /dev/null @@ -1,3 +0,0 @@ -var v35 = require('./lib/v35.js'); -var sha1 = require('./lib/sha1'); -module.exports = v35('v5', 0x50, sha1); diff --git a/node_modules/verror/.npmignore b/node_modules/verror/.npmignore deleted file mode 100644 index f14aec8..0000000 --- a/node_modules/verror/.npmignore +++ /dev/null @@ -1,9 +0,0 @@ -.gitignore -.gitmodules -deps -examples -experiments -jsl.node.conf -Makefile -Makefile.targ -test diff --git a/node_modules/verror/CHANGES.md b/node_modules/verror/CHANGES.md deleted file mode 100644 index bbb745a..0000000 --- a/node_modules/verror/CHANGES.md +++ /dev/null @@ -1,28 +0,0 @@ -# Changelog - -## Not yet released - -None yet. - -## v1.10.0 - -* #49 want convenience functions for MultiErrors - -## v1.9.0 - -* #47 could use VError.hasCauseWithName() - -## v1.8.1 - -* #39 captureStackTrace lost when inheriting from WError - -## v1.8.0 - -* #23 Preserve original stack trace(s) - -## v1.7.0 - -* #10 better support for extra properties on Errors -* #11 make it easy to find causes of a particular kind -* #29 No documentation on how to Install this package -* #36 elide development-only files from npm package diff --git a/node_modules/verror/CONTRIBUTING.md b/node_modules/verror/CONTRIBUTING.md deleted file mode 100644 index 750cef8..0000000 --- a/node_modules/verror/CONTRIBUTING.md +++ /dev/null @@ -1,19 +0,0 @@ -# Contributing - -This repository uses [cr.joyent.us](https://cr.joyent.us) (Gerrit) for new -changes. Anyone can submit changes. To get started, see the [cr.joyent.us user -guide](https://github.com/joyent/joyent-gerrit/blob/master/docs/user/README.md). -This repo does not use GitHub pull requests. - -See the [Joyent Engineering -Guidelines](https://github.com/joyent/eng/blob/master/docs/index.md) for general -best practices expected in this repository. - -Contributions should be "make prepush" clean. The "prepush" target runs the -"check" target, which requires these separate tools: - -* https://github.com/davepacheco/jsstyle -* https://github.com/davepacheco/javascriptlint - -If you're changing something non-trivial or user-facing, you may want to submit -an issue first. diff --git a/node_modules/verror/LICENSE b/node_modules/verror/LICENSE deleted file mode 100644 index 82a5cb8..0000000 --- a/node_modules/verror/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2016, Joyent, Inc. All rights reserved. - -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 diff --git a/node_modules/verror/README.md b/node_modules/verror/README.md deleted file mode 100644 index c1f0635..0000000 --- a/node_modules/verror/README.md +++ /dev/null @@ -1,528 +0,0 @@ -# verror: rich JavaScript errors - -This module provides several classes in support of Joyent's [Best Practices for -Error Handling in Node.js](http://www.joyent.com/developers/node/design/errors). -If you find any of the behavior here confusing or surprising, check out that -document first. - -The error classes here support: - -* printf-style arguments for the message -* chains of causes -* properties to provide extra information about the error -* creating your own subclasses that support all of these - -The classes here are: - -* **VError**, for chaining errors while preserving each one's error message. - This is useful in servers and command-line utilities when you want to - propagate an error up a call stack, but allow various levels to add their own - context. See examples below. -* **WError**, for wrapping errors while hiding the lower-level messages from the - top-level error. This is useful for API endpoints where you don't want to - expose internal error messages, but you still want to preserve the error chain - for logging and debugging. -* **SError**, which is just like VError but interprets printf-style arguments - more strictly. -* **MultiError**, which is just an Error that encapsulates one or more other - errors. (This is used for parallel operations that return several errors.) - - -# Quick start - -First, install the package: - - npm install verror - -If nothing else, you can use VError as a drop-in replacement for the built-in -JavaScript Error class, with the addition of printf-style messages: - -```javascript -var err = new VError('missing file: "%s"', '/etc/passwd'); -console.log(err.message); -``` - -This prints: - - missing file: "/etc/passwd" - -You can also pass a `cause` argument, which is any other Error object: - -```javascript -var fs = require('fs'); -var filename = '/nonexistent'; -fs.stat(filename, function (err1) { - var err2 = new VError(err1, 'stat "%s"', filename); - console.error(err2.message); -}); -``` - -This prints out: - - stat "/nonexistent": ENOENT, stat '/nonexistent' - -which resembles how Unix programs typically report errors: - - $ sort /nonexistent - sort: open failed: /nonexistent: No such file or directory - -To match the Unixy feel, when you print out the error, just prepend the -program's name to the VError's `message`. Or just call -[node-cmdutil.fail(your_verror)](https://github.com/joyent/node-cmdutil), which -does this for you. - -You can get the next-level Error using `err.cause()`: - -```javascript -console.error(err2.cause().message); -``` - -prints: - - ENOENT, stat '/nonexistent' - -Of course, you can chain these as many times as you want, and it works with any -kind of Error: - -```javascript -var err1 = new Error('No such file or directory'); -var err2 = new VError(err1, 'failed to stat "%s"', '/junk'); -var err3 = new VError(err2, 'request failed'); -console.error(err3.message); -``` - -This prints: - - request failed: failed to stat "/junk": No such file or directory - -The idea is that each layer in the stack annotates the error with a description -of what it was doing. The end result is a message that explains what happened -at each level. - -You can also decorate Error objects with additional information so that callers -can not only handle each kind of error differently, but also construct their own -error messages (e.g., to localize them, format them, group them by type, and so -on). See the example below. - - -# Deeper dive - -The two main goals for VError are: - -* **Make it easy to construct clear, complete error messages intended for - people.** Clear error messages greatly improve both user experience and - debuggability, so we wanted to make it easy to build them. That's why the - constructor takes printf-style arguments. -* **Make it easy to construct objects with programmatically-accessible - metadata** (which we call _informational properties_). Instead of just saying - "connection refused while connecting to 192.168.1.2:80", you can add - properties like `"ip": "192.168.1.2"` and `"tcpPort": 80`. This can be used - for feeding into monitoring systems, analyzing large numbers of Errors (as - from a log file), or localizing error messages. - -To really make this useful, it also needs to be easy to compose Errors: -higher-level code should be able to augment the Errors reported by lower-level -code to provide a more complete description of what happened. Instead of saying -"connection refused", you can say "operation X failed: connection refused". -That's why VError supports `causes`. - -In order for all this to work, programmers need to know that it's generally safe -to wrap lower-level Errors with higher-level ones. If you have existing code -that handles Errors produced by a library, you should be able to wrap those -Errors with a VError to add information without breaking the error handling -code. There are two obvious ways that this could break such consumers: - -* The error's name might change. People typically use `name` to determine what - kind of Error they've got. To ensure compatibility, you can create VErrors - with custom names, but this approach isn't great because it prevents you from - representing complex failures. For this reason, VError provides - `findCauseByName`, which essentially asks: does this Error _or any of its - causes_ have this specific type? If error handling code uses - `findCauseByName`, then subsystems can construct very specific causal chains - for debuggability and still let people handle simple cases easily. There's an - example below. -* The error's properties might change. People often hang additional properties - off of Error objects. If we wrap an existing Error in a new Error, those - properties would be lost unless we copied them. But there are a variety of - both standard and non-standard Error properties that should _not_ be copied in - this way: most obviously `name`, `message`, and `stack`, but also `fileName`, - `lineNumber`, and a few others. Plus, it's useful for some Error subclasses - to have their own private properties -- and there'd be no way to know whether - these should be copied. For these reasons, VError first-classes these - information properties. You have to provide them in the constructor, you can - only fetch them with the `info()` function, and VError takes care of making - sure properties from causes wind up in the `info()` output. - -Let's put this all together with an example from the node-fast RPC library. -node-fast implements a simple RPC protocol for Node programs. There's a server -and client interface, and clients make RPC requests to servers. Let's say the -server fails with an UnauthorizedError with message "user 'bob' is not -authorized". The client wraps all server errors with a FastServerError. The -client also wraps all request errors with a FastRequestError that includes the -name of the RPC call being made. The result of this failed RPC might look like -this: - - name: FastRequestError - message: "request failed: server error: user 'bob' is not authorized" - rpcMsgid: - rpcMethod: GetObject - cause: - name: FastServerError - message: "server error: user 'bob' is not authorized" - cause: - name: UnauthorizedError - message: "user 'bob' is not authorized" - rpcUser: "bob" - -When the caller uses `VError.info()`, the information properties are collapsed -so that it looks like this: - - message: "request failed: server error: user 'bob' is not authorized" - rpcMsgid: - rpcMethod: GetObject - rpcUser: "bob" - -Taking this apart: - -* The error's message is a complete description of the problem. The caller can - report this directly to its caller, which can potentially make its way back to - an end user (if appropriate). It can also be logged. -* The caller can tell that the request failed on the server, rather than as a - result of a client problem (e.g., failure to serialize the request), a - transport problem (e.g., failure to connect to the server), or something else - (e.g., a timeout). They do this using `findCauseByName('FastServerError')` - rather than checking the `name` field directly. -* If the caller logs this error, the logs can be analyzed to aggregate - errors by cause, by RPC method name, by user, or whatever. Or the - error can be correlated with other events for the same rpcMsgid. -* It wasn't very hard for any part of the code to contribute to this Error. - Each part of the stack has just a few lines to provide exactly what it knows, - with very little boilerplate. - -It's not expected that you'd use these complex forms all the time. Despite -supporting the complex case above, you can still just do: - - new VError("my service isn't working"); - -for the simple cases. - - -# Reference: VError, WError, SError - -VError, WError, and SError are convenient drop-in replacements for `Error` that -support printf-style arguments, first-class causes, informational properties, -and other useful features. - - -## Constructors - -The VError constructor has several forms: - -```javascript -/* - * This is the most general form. You can specify any supported options - * (including "cause" and "info") this way. - */ -new VError(options, sprintf_args...) - -/* - * This is a useful shorthand when the only option you need is "cause". - */ -new VError(cause, sprintf_args...) - -/* - * This is a useful shorthand when you don't need any options at all. - */ -new VError(sprintf_args...) -``` - -All of these forms construct a new VError that behaves just like the built-in -JavaScript `Error` class, with some additional methods described below. - -In the first form, `options` is a plain object with any of the following -optional properties: - -Option name | Type | Meaning ----------------- | ---------------- | ------- -`name` | string | Describes what kind of error this is. This is intended for programmatic use to distinguish between different kinds of errors. Note that in modern versions of Node.js, this name is ignored in the `stack` property value, but callers can still use the `name` property to get at it. -`cause` | any Error object | Indicates that the new error was caused by `cause`. See `cause()` below. If unspecified, the cause will be `null`. -`strict` | boolean | If true, then `null` and `undefined` values in `sprintf_args` are passed through to `sprintf()`. Otherwise, these are replaced with the strings `'null'`, and '`undefined`', respectively. -`constructorOpt` | function | If specified, then the stack trace for this error ends at function `constructorOpt`. Functions called by `constructorOpt` will not show up in the stack. This is useful when this class is subclassed. -`info` | object | Specifies arbitrary informational properties that are available through the `VError.info(err)` static class method. See that method for details. - -The second form is equivalent to using the first form with the specified `cause` -as the error's cause. This form is distinguished from the first form because -the first argument is an Error. - -The third form is equivalent to using the first form with all default option -values. This form is distinguished from the other forms because the first -argument is not an object or an Error. - -The `WError` constructor is used exactly the same way as the `VError` -constructor. The `SError` constructor is also used the same way as the -`VError` constructor except that in all cases, the `strict` property is -overriden to `true. - - -## Public properties - -`VError`, `WError`, and `SError` all provide the same public properties as -JavaScript's built-in Error objects. - -Property name | Type | Meaning -------------- | ------ | ------- -`name` | string | Programmatically-usable name of the error. -`message` | string | Human-readable summary of the failure. Programmatically-accessible details are provided through `VError.info(err)` class method. -`stack` | string | Human-readable stack trace where the Error was constructed. - -For all of these classes, the printf-style arguments passed to the constructor -are processed with `sprintf()` to form a message. For `WError`, this becomes -the complete `message` property. For `SError` and `VError`, this message is -prepended to the message of the cause, if any (with a suitable separator), and -the result becomes the `message` property. - -The `stack` property is managed entirely by the underlying JavaScript -implementation. It's generally implemented using a getter function because -constructing the human-readable stack trace is somewhat expensive. - -## Class methods - -The following methods are defined on the `VError` class and as exported -functions on the `verror` module. They're defined this way rather than using -methods on VError instances so that they can be used on Errors not created with -`VError`. - -### `VError.cause(err)` - -The `cause()` function returns the next Error in the cause chain for `err`, or -`null` if there is no next error. See the `cause` argument to the constructor. -Errors can have arbitrarily long cause chains. You can walk the `cause` chain -by invoking `VError.cause(err)` on each subsequent return value. If `err` is -not a `VError`, the cause is `null`. - -### `VError.info(err)` - -Returns an object with all of the extra error information that's been associated -with this Error and all of its causes. These are the properties passed in using -the `info` option to the constructor. Properties not specified in the -constructor for this Error are implicitly inherited from this error's cause. - -These properties are intended to provide programmatically-accessible metadata -about the error. For an error that indicates a failure to resolve a DNS name, -informational properties might include the DNS name to be resolved, or even the -list of resolvers used to resolve it. The values of these properties should -generally be plain objects (i.e., consisting only of null, undefined, numbers, -booleans, strings, and objects and arrays containing only other plain objects). - -### `VError.fullStack(err)` - -Returns a string containing the full stack trace, with all nested errors recursively -reported as `'caused by:' + err.stack`. - -### `VError.findCauseByName(err, name)` - -The `findCauseByName()` function traverses the cause chain for `err`, looking -for an error whose `name` property matches the passed in `name` value. If no -match is found, `null` is returned. - -If all you want is to know _whether_ there's a cause (and you don't care what it -is), you can use `VError.hasCauseWithName(err, name)`. - -If a vanilla error or a non-VError error is passed in, then there is no cause -chain to traverse. In this scenario, the function will check the `name` -property of only `err`. - -### `VError.hasCauseWithName(err, name)` - -Returns true if and only if `VError.findCauseByName(err, name)` would return -a non-null value. This essentially determines whether `err` has any cause in -its cause chain that has name `name`. - -### `VError.errorFromList(errors)` - -Given an array of Error objects (possibly empty), return a single error -representing the whole collection of errors. If the list has: - -* 0 elements, returns `null` -* 1 element, returns the sole error -* more than 1 element, returns a MultiError referencing the whole list - -This is useful for cases where an operation may produce any number of errors, -and you ultimately want to implement the usual `callback(err)` pattern. You can -accumulate the errors in an array and then invoke -`callback(VError.errorFromList(errors))` when the operation is complete. - - -### `VError.errorForEach(err, func)` - -Convenience function for iterating an error that may itself be a MultiError. - -In all cases, `err` must be an Error. If `err` is a MultiError, then `func` is -invoked as `func(errorN)` for each of the underlying errors of the MultiError. -If `err` is any other kind of error, `func` is invoked once as `func(err)`. In -all cases, `func` is invoked synchronously. - -This is useful for cases where an operation may produce any number of warnings -that may be encapsulated with a MultiError -- but may not be. - -This function does not iterate an error's cause chain. - - -## Examples - -The "Demo" section above covers several basic cases. Here's a more advanced -case: - -```javascript -var err1 = new VError('something bad happened'); -/* ... */ -var err2 = new VError({ - 'name': 'ConnectionError', - 'cause': err1, - 'info': { - 'errno': 'ECONNREFUSED', - 'remote_ip': '127.0.0.1', - 'port': 215 - } -}, 'failed to connect to "%s:%d"', '127.0.0.1', 215); - -console.log(err2.message); -console.log(err2.name); -console.log(VError.info(err2)); -console.log(err2.stack); -``` - -This outputs: - - failed to connect to "127.0.0.1:215": something bad happened - ConnectionError - { errno: 'ECONNREFUSED', remote_ip: '127.0.0.1', port: 215 } - ConnectionError: failed to connect to "127.0.0.1:215": something bad happened - at Object. (/home/dap/node-verror/examples/info.js:5:12) - at Module._compile (module.js:456:26) - at Object.Module._extensions..js (module.js:474:10) - at Module.load (module.js:356:32) - at Function.Module._load (module.js:312:12) - at Function.Module.runMain (module.js:497:10) - at startup (node.js:119:16) - at node.js:935:3 - -Information properties are inherited up the cause chain, with values at the top -of the chain overriding same-named values lower in the chain. To continue that -example: - -```javascript -var err3 = new VError({ - 'name': 'RequestError', - 'cause': err2, - 'info': { - 'errno': 'EBADREQUEST' - } -}, 'request failed'); - -console.log(err3.message); -console.log(err3.name); -console.log(VError.info(err3)); -console.log(err3.stack); -``` - -This outputs: - - request failed: failed to connect to "127.0.0.1:215": something bad happened - RequestError - { errno: 'EBADREQUEST', remote_ip: '127.0.0.1', port: 215 } - RequestError: request failed: failed to connect to "127.0.0.1:215": something bad happened - at Object. (/home/dap/node-verror/examples/info.js:20:12) - at Module._compile (module.js:456:26) - at Object.Module._extensions..js (module.js:474:10) - at Module.load (module.js:356:32) - at Function.Module._load (module.js:312:12) - at Function.Module.runMain (module.js:497:10) - at startup (node.js:119:16) - at node.js:935:3 - -You can also print the complete stack trace of combined `Error`s by using -`VError.fullStack(err).` - -```javascript -var err1 = new VError('something bad happened'); -/* ... */ -var err2 = new VError(err1, 'something really bad happened here'); - -console.log(VError.fullStack(err2)); -``` - -This outputs: - - VError: something really bad happened here: something bad happened - at Object. (/home/dap/node-verror/examples/fullStack.js:5:12) - at Module._compile (module.js:409:26) - at Object.Module._extensions..js (module.js:416:10) - at Module.load (module.js:343:32) - at Function.Module._load (module.js:300:12) - at Function.Module.runMain (module.js:441:10) - at startup (node.js:139:18) - at node.js:968:3 - caused by: VError: something bad happened - at Object. (/home/dap/node-verror/examples/fullStack.js:3:12) - at Module._compile (module.js:409:26) - at Object.Module._extensions..js (module.js:416:10) - at Module.load (module.js:343:32) - at Function.Module._load (module.js:300:12) - at Function.Module.runMain (module.js:441:10) - at startup (node.js:139:18) - at node.js:968:3 - -`VError.fullStack` is also safe to use on regular `Error`s, so feel free to use -it whenever you need to extract the stack trace from an `Error`, regardless if -it's a `VError` or not. - -# Reference: MultiError - -MultiError is an Error class that represents a group of Errors. This is used -when you logically need to provide a single Error, but you want to preserve -information about multiple underying Errors. A common case is when you execute -several operations in parallel and some of them fail. - -MultiErrors are constructed as: - -```javascript -new MultiError(error_list) -``` - -`error_list` is an array of at least one `Error` object. - -The cause of the MultiError is the first error provided. None of the other -`VError` options are supported. The `message` for a MultiError consists the -`message` from the first error, prepended with a message indicating that there -were other errors. - -For example: - -```javascript -err = new MultiError([ - new Error('failed to resolve DNS name "abc.example.com"'), - new Error('failed to resolve DNS name "def.example.com"'), -]); - -console.error(err.message); -``` - -outputs: - - first of 2 errors: failed to resolve DNS name "abc.example.com" - -See the convenience function `VError.errorFromList`, which is sometimes simpler -to use than this constructor. - -## Public methods - - -### `errors()` - -Returns an array of the errors used to construct this MultiError. - - -# Contributing - -See separate [contribution guidelines](CONTRIBUTING.md). diff --git a/node_modules/verror/lib/verror.js b/node_modules/verror/lib/verror.js deleted file mode 100644 index 8663dde..0000000 --- a/node_modules/verror/lib/verror.js +++ /dev/null @@ -1,451 +0,0 @@ -/* - * verror.js: richer JavaScript errors - */ - -var mod_assertplus = require('assert-plus'); -var mod_util = require('util'); - -var mod_extsprintf = require('extsprintf'); -var mod_isError = require('core-util-is').isError; -var sprintf = mod_extsprintf.sprintf; - -/* - * Public interface - */ - -/* So you can 'var VError = require('verror')' */ -module.exports = VError; -/* For compatibility */ -VError.VError = VError; -/* Other exported classes */ -VError.SError = SError; -VError.WError = WError; -VError.MultiError = MultiError; - -/* - * Common function used to parse constructor arguments for VError, WError, and - * SError. Named arguments to this function: - * - * strict force strict interpretation of sprintf arguments, even - * if the options in "argv" don't say so - * - * argv error's constructor arguments, which are to be - * interpreted as described in README.md. For quick - * reference, "argv" has one of the following forms: - * - * [ sprintf_args... ] (argv[0] is a string) - * [ cause, sprintf_args... ] (argv[0] is an Error) - * [ options, sprintf_args... ] (argv[0] is an object) - * - * This function normalizes these forms, producing an object with the following - * properties: - * - * options equivalent to "options" in third form. This will never - * be a direct reference to what the caller passed in - * (i.e., it may be a shallow copy), so it can be freely - * modified. - * - * shortmessage result of sprintf(sprintf_args), taking options.strict - * into account as described in README.md. - */ -function parseConstructorArguments(args) -{ - var argv, options, sprintf_args, shortmessage, k; - - mod_assertplus.object(args, 'args'); - mod_assertplus.bool(args.strict, 'args.strict'); - mod_assertplus.array(args.argv, 'args.argv'); - argv = args.argv; - - /* - * First, figure out which form of invocation we've been given. - */ - if (argv.length === 0) { - options = {}; - sprintf_args = []; - } else if (mod_isError(argv[0])) { - options = { 'cause': argv[0] }; - sprintf_args = argv.slice(1); - } else if (typeof (argv[0]) === 'object') { - options = {}; - for (k in argv[0]) { - options[k] = argv[0][k]; - } - sprintf_args = argv.slice(1); - } else { - mod_assertplus.string(argv[0], - 'first argument to VError, SError, or WError ' + - 'constructor must be a string, object, or Error'); - options = {}; - sprintf_args = argv; - } - - /* - * Now construct the error's message. - * - * extsprintf (which we invoke here with our caller's arguments in order - * to construct this Error's message) is strict in its interpretation of - * values to be processed by the "%s" specifier. The value passed to - * extsprintf must actually be a string or something convertible to a - * String using .toString(). Passing other values (notably "null" and - * "undefined") is considered a programmer error. The assumption is - * that if you actually want to print the string "null" or "undefined", - * then that's easy to do that when you're calling extsprintf; on the - * other hand, if you did NOT want that (i.e., there's actually a bug - * where the program assumes some variable is non-null and tries to - * print it, which might happen when constructing a packet or file in - * some specific format), then it's better to stop immediately than - * produce bogus output. - * - * However, sometimes the bug is only in the code calling VError, and a - * programmer might prefer to have the error message contain "null" or - * "undefined" rather than have the bug in the error path crash the - * program (making the first bug harder to identify). For that reason, - * by default VError converts "null" or "undefined" arguments to their - * string representations and passes those to extsprintf. Programmers - * desiring the strict behavior can use the SError class or pass the - * "strict" option to the VError constructor. - */ - mod_assertplus.object(options); - if (!options.strict && !args.strict) { - sprintf_args = sprintf_args.map(function (a) { - return (a === null ? 'null' : - a === undefined ? 'undefined' : a); - }); - } - - if (sprintf_args.length === 0) { - shortmessage = ''; - } else { - shortmessage = sprintf.apply(null, sprintf_args); - } - - return ({ - 'options': options, - 'shortmessage': shortmessage - }); -} - -/* - * See README.md for reference documentation. - */ -function VError() -{ - var args, obj, parsed, cause, ctor, message, k; - - args = Array.prototype.slice.call(arguments, 0); - - /* - * This is a regrettable pattern, but JavaScript's built-in Error class - * is defined to work this way, so we allow the constructor to be called - * without "new". - */ - if (!(this instanceof VError)) { - obj = Object.create(VError.prototype); - VError.apply(obj, arguments); - return (obj); - } - - /* - * For convenience and backwards compatibility, we support several - * different calling forms. Normalize them here. - */ - parsed = parseConstructorArguments({ - 'argv': args, - 'strict': false - }); - - /* - * If we've been given a name, apply it now. - */ - if (parsed.options.name) { - mod_assertplus.string(parsed.options.name, - 'error\'s "name" must be a string'); - this.name = parsed.options.name; - } - - /* - * For debugging, we keep track of the original short message (attached - * this Error particularly) separately from the complete message (which - * includes the messages of our cause chain). - */ - this.jse_shortmsg = parsed.shortmessage; - message = parsed.shortmessage; - - /* - * If we've been given a cause, record a reference to it and update our - * message appropriately. - */ - cause = parsed.options.cause; - if (cause) { - mod_assertplus.ok(mod_isError(cause), 'cause is not an Error'); - this.jse_cause = cause; - - if (!parsed.options.skipCauseMessage) { - message += ': ' + cause.message; - } - } - - /* - * If we've been given an object with properties, shallow-copy that - * here. We don't want to use a deep copy in case there are non-plain - * objects here, but we don't want to use the original object in case - * the caller modifies it later. - */ - this.jse_info = {}; - if (parsed.options.info) { - for (k in parsed.options.info) { - this.jse_info[k] = parsed.options.info[k]; - } - } - - this.message = message; - Error.call(this, message); - - if (Error.captureStackTrace) { - ctor = parsed.options.constructorOpt || this.constructor; - Error.captureStackTrace(this, ctor); - } - - return (this); -} - -mod_util.inherits(VError, Error); -VError.prototype.name = 'VError'; - -VError.prototype.toString = function ve_toString() -{ - var str = (this.hasOwnProperty('name') && this.name || - this.constructor.name || this.constructor.prototype.name); - if (this.message) - str += ': ' + this.message; - - return (str); -}; - -/* - * This method is provided for compatibility. New callers should use - * VError.cause() instead. That method also uses the saner `null` return value - * when there is no cause. - */ -VError.prototype.cause = function ve_cause() -{ - var cause = VError.cause(this); - return (cause === null ? undefined : cause); -}; - -/* - * Static methods - * - * These class-level methods are provided so that callers can use them on - * instances of Errors that are not VErrors. New interfaces should be provided - * only using static methods to eliminate the class of programming mistake where - * people fail to check whether the Error object has the corresponding methods. - */ - -VError.cause = function (err) -{ - mod_assertplus.ok(mod_isError(err), 'err must be an Error'); - return (mod_isError(err.jse_cause) ? err.jse_cause : null); -}; - -VError.info = function (err) -{ - var rv, cause, k; - - mod_assertplus.ok(mod_isError(err), 'err must be an Error'); - cause = VError.cause(err); - if (cause !== null) { - rv = VError.info(cause); - } else { - rv = {}; - } - - if (typeof (err.jse_info) == 'object' && err.jse_info !== null) { - for (k in err.jse_info) { - rv[k] = err.jse_info[k]; - } - } - - return (rv); -}; - -VError.findCauseByName = function (err, name) -{ - var cause; - - mod_assertplus.ok(mod_isError(err), 'err must be an Error'); - mod_assertplus.string(name, 'name'); - mod_assertplus.ok(name.length > 0, 'name cannot be empty'); - - for (cause = err; cause !== null; cause = VError.cause(cause)) { - mod_assertplus.ok(mod_isError(cause)); - if (cause.name == name) { - return (cause); - } - } - - return (null); -}; - -VError.hasCauseWithName = function (err, name) -{ - return (VError.findCauseByName(err, name) !== null); -}; - -VError.fullStack = function (err) -{ - mod_assertplus.ok(mod_isError(err), 'err must be an Error'); - - var cause = VError.cause(err); - - if (cause) { - return (err.stack + '\ncaused by: ' + VError.fullStack(cause)); - } - - return (err.stack); -}; - -VError.errorFromList = function (errors) -{ - mod_assertplus.arrayOfObject(errors, 'errors'); - - if (errors.length === 0) { - return (null); - } - - errors.forEach(function (e) { - mod_assertplus.ok(mod_isError(e)); - }); - - if (errors.length == 1) { - return (errors[0]); - } - - return (new MultiError(errors)); -}; - -VError.errorForEach = function (err, func) -{ - mod_assertplus.ok(mod_isError(err), 'err must be an Error'); - mod_assertplus.func(func, 'func'); - - if (err instanceof MultiError) { - err.errors().forEach(function iterError(e) { func(e); }); - } else { - func(err); - } -}; - - -/* - * SError is like VError, but stricter about types. You cannot pass "null" or - * "undefined" as string arguments to the formatter. - */ -function SError() -{ - var args, obj, parsed, options; - - args = Array.prototype.slice.call(arguments, 0); - if (!(this instanceof SError)) { - obj = Object.create(SError.prototype); - SError.apply(obj, arguments); - return (obj); - } - - parsed = parseConstructorArguments({ - 'argv': args, - 'strict': true - }); - - options = parsed.options; - VError.call(this, options, '%s', parsed.shortmessage); - - return (this); -} - -/* - * We don't bother setting SError.prototype.name because once constructed, - * SErrors are just like VErrors. - */ -mod_util.inherits(SError, VError); - - -/* - * Represents a collection of errors for the purpose of consumers that generally - * only deal with one error. Callers can extract the individual errors - * contained in this object, but may also just treat it as a normal single - * error, in which case a summary message will be printed. - */ -function MultiError(errors) -{ - mod_assertplus.array(errors, 'list of errors'); - mod_assertplus.ok(errors.length > 0, 'must be at least one error'); - this.ase_errors = errors; - - VError.call(this, { - 'cause': errors[0] - }, 'first of %d error%s', errors.length, errors.length == 1 ? '' : 's'); -} - -mod_util.inherits(MultiError, VError); -MultiError.prototype.name = 'MultiError'; - -MultiError.prototype.errors = function me_errors() -{ - return (this.ase_errors.slice(0)); -}; - - -/* - * See README.md for reference details. - */ -function WError() -{ - var args, obj, parsed, options; - - args = Array.prototype.slice.call(arguments, 0); - if (!(this instanceof WError)) { - obj = Object.create(WError.prototype); - WError.apply(obj, args); - return (obj); - } - - parsed = parseConstructorArguments({ - 'argv': args, - 'strict': false - }); - - options = parsed.options; - options['skipCauseMessage'] = true; - VError.call(this, options, '%s', parsed.shortmessage); - - return (this); -} - -mod_util.inherits(WError, VError); -WError.prototype.name = 'WError'; - -WError.prototype.toString = function we_toString() -{ - var str = (this.hasOwnProperty('name') && this.name || - this.constructor.name || this.constructor.prototype.name); - if (this.message) - str += ': ' + this.message; - if (this.jse_cause && this.jse_cause.message) - str += '; caused by ' + this.jse_cause.toString(); - - return (str); -}; - -/* - * For purely historical reasons, WError's cause() function allows you to set - * the cause. - */ -WError.prototype.cause = function we_cause(c) -{ - if (mod_isError(c)) - this.jse_cause = c; - - return (this.jse_cause); -}; diff --git a/node_modules/verror/package.json b/node_modules/verror/package.json deleted file mode 100644 index 32a215c..0000000 --- a/node_modules/verror/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "_from": "verror@1.10.0", - "_id": "verror@1.10.0", - "_inBundle": false, - "_integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "_location": "/verror", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "verror@1.10.0", - "name": "verror", - "escapedName": "verror", - "rawSpec": "1.10.0", - "saveSpec": null, - "fetchSpec": "1.10.0" - }, - "_requiredBy": [ - "/jsprim" - ], - "_resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "_shasum": "3a105ca17053af55d6e270c1f8288682e18da400", - "_spec": "verror@1.10.0", - "_where": "/Users/sbacha/mkdocs-gh/freight-trust.github.io/node_modules/jsprim", - "bugs": { - "url": "https://github.com/davepacheco/node-verror/issues" - }, - "bundleDependencies": false, - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "deprecated": false, - "description": "richer JavaScript errors", - "engines": [ - "node >=0.6.0" - ], - "homepage": "https://github.com/davepacheco/node-verror#readme", - "license": "MIT", - "main": "./lib/verror.js", - "name": "verror", - "repository": { - "type": "git", - "url": "git://github.com/davepacheco/node-verror.git" - }, - "scripts": { - "test": "make test" - }, - "version": "1.10.0" -} From 7e643e36e7e046c253f389c52c76306ae06036c2 Mon Sep 17 00:00:00 2001 From: "sam@freighttrust.com" Date: Mon, 13 Jul 2020 02:48:05 -0700 Subject: [PATCH 5/5] fix(fixing config.toml): netlify toml config --- config.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 config.toml diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..e69de29

      1. oDjGCFRsSM~)x21t~K?B>*Zk#FPd@E3bTD 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

        -92c(oNcweXqy5 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 z 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℞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