유희정

delete

Showing 1000 changed files with 0 additions and 4795 deletions

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

1 -//express 모듈 선언
2 -var express = require('express')
3 -var path = require('path');
4 -//express 라우팅 객체 생성
5 -var app = express()
6 -
7 -app.set('views',path.join(__dirname,'views'))
8 -app.set('view engine','ejs')
9 -//기본라우팅
10 -app.get('/',function(req,res){
11 -
12 - res.render('index',{
13 - title:'Reminder-Talk',
14 - msg :'Hello. This is Reminder-Talk!' })
15 -})
16 -//웹서버시작 with 8080 포트
17 -app.listen(8080,function(){
18 - console.log("server starting with 8080")
19 -})
20 -
21 -//module.exports = app;
...\ No newline at end of file ...\ No newline at end of file
1 -#!/bin/sh
2 -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 -
4 -case `uname` in
5 - *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 -esac
7 -
8 -if [ -x "$basedir/node" ]; then
9 - "$basedir/node" "$basedir/../google-p12-pem/bin/gp12-pem" "$@"
10 - ret=$?
11 -else
12 - node "$basedir/../google-p12-pem/bin/gp12-pem" "$@"
13 - ret=$?
14 -fi
15 -exit $ret
1 -@ECHO off
2 -SETLOCAL
3 -CALL :find_dp0
4 -
5 -IF EXIST "%dp0%\node.exe" (
6 - SET "_prog=%dp0%\node.exe"
7 -) ELSE (
8 - SET "_prog=node"
9 - SET PATHEXT=%PATHEXT:;.JS;=;%
10 -)
11 -
12 -"%_prog%" "%dp0%\..\google-p12-pem\bin\gp12-pem" %*
13 -ENDLOCAL
14 -EXIT /b %errorlevel%
15 -:find_dp0
16 -SET dp0=%~dp0
17 -EXIT /b
1 -#!/usr/bin/env pwsh
2 -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 -
4 -$exe=""
5 -if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 - # Fix case when both the Windows and Linux builds of Node
7 - # are installed in the same directory
8 - $exe=".exe"
9 -}
10 -$ret=0
11 -if (Test-Path "$basedir/node$exe") {
12 - & "$basedir/node$exe" "$basedir/../google-p12-pem/bin/gp12-pem" $args
13 - $ret=$LASTEXITCODE
14 -} else {
15 - & "node$exe" "$basedir/../google-p12-pem/bin/gp12-pem" $args
16 - $ret=$LASTEXITCODE
17 -}
18 -exit $ret
1 -#!/bin/sh
2 -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 -
4 -case `uname` in
5 - *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 -esac
7 -
8 -if [ -x "$basedir/node" ]; then
9 - "$basedir/node" "$basedir/../mime/cli.js" "$@"
10 - ret=$?
11 -else
12 - node "$basedir/../mime/cli.js" "$@"
13 - ret=$?
14 -fi
15 -exit $ret
1 -@ECHO off
2 -SETLOCAL
3 -CALL :find_dp0
4 -
5 -IF EXIST "%dp0%\node.exe" (
6 - SET "_prog=%dp0%\node.exe"
7 -) ELSE (
8 - SET "_prog=node"
9 - SET PATHEXT=%PATHEXT:;.JS;=;%
10 -)
11 -
12 -"%_prog%" "%dp0%\..\mime\cli.js" %*
13 -ENDLOCAL
14 -EXIT /b %errorlevel%
15 -:find_dp0
16 -SET dp0=%~dp0
17 -EXIT /b
1 -#!/usr/bin/env pwsh
2 -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 -
4 -$exe=""
5 -if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 - # Fix case when both the Windows and Linux builds of Node
7 - # are installed in the same directory
8 - $exe=".exe"
9 -}
10 -$ret=0
11 -if (Test-Path "$basedir/node$exe") {
12 - & "$basedir/node$exe" "$basedir/../mime/cli.js" $args
13 - $ret=$LASTEXITCODE
14 -} else {
15 - & "node$exe" "$basedir/../mime/cli.js" $args
16 - $ret=$LASTEXITCODE
17 -}
18 -exit $ret
1 -#!/bin/sh
2 -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 -
4 -case `uname` in
5 - *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 -esac
7 -
8 -if [ -x "$basedir/node" ]; then
9 - "$basedir/node" "$basedir/../semver/bin/semver" "$@"
10 - ret=$?
11 -else
12 - node "$basedir/../semver/bin/semver" "$@"
13 - ret=$?
14 -fi
15 -exit $ret
1 -@ECHO off
2 -SETLOCAL
3 -CALL :find_dp0
4 -
5 -IF EXIST "%dp0%\node.exe" (
6 - SET "_prog=%dp0%\node.exe"
7 -) ELSE (
8 - SET "_prog=node"
9 - SET PATHEXT=%PATHEXT:;.JS;=;%
10 -)
11 -
12 -"%_prog%" "%dp0%\..\semver\bin\semver" %*
13 -ENDLOCAL
14 -EXIT /b %errorlevel%
15 -:find_dp0
16 -SET dp0=%~dp0
17 -EXIT /b
1 -#!/usr/bin/env pwsh
2 -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 -
4 -$exe=""
5 -if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 - # Fix case when both the Windows and Linux builds of Node
7 - # are installed in the same directory
8 - $exe=".exe"
9 -}
10 -$ret=0
11 -if (Test-Path "$basedir/node$exe") {
12 - & "$basedir/node$exe" "$basedir/../semver/bin/semver" $args
13 - $ret=$LASTEXITCODE
14 -} else {
15 - & "node$exe" "$basedir/../semver/bin/semver" $args
16 - $ret=$LASTEXITCODE
17 -}
18 -exit $ret
1 -#!/bin/sh
2 -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 -
4 -case `uname` in
5 - *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 -esac
7 -
8 -if [ -x "$basedir/node" ]; then
9 - "$basedir/node" "$basedir/../sshpk/bin/sshpk-conv" "$@"
10 - ret=$?
11 -else
12 - node "$basedir/../sshpk/bin/sshpk-conv" "$@"
13 - ret=$?
14 -fi
15 -exit $ret
1 -@ECHO off
2 -SETLOCAL
3 -CALL :find_dp0
4 -
5 -IF EXIST "%dp0%\node.exe" (
6 - SET "_prog=%dp0%\node.exe"
7 -) ELSE (
8 - SET "_prog=node"
9 - SET PATHEXT=%PATHEXT:;.JS;=;%
10 -)
11 -
12 -"%_prog%" "%dp0%\..\sshpk\bin\sshpk-conv" %*
13 -ENDLOCAL
14 -EXIT /b %errorlevel%
15 -:find_dp0
16 -SET dp0=%~dp0
17 -EXIT /b
1 -#!/usr/bin/env pwsh
2 -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 -
4 -$exe=""
5 -if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 - # Fix case when both the Windows and Linux builds of Node
7 - # are installed in the same directory
8 - $exe=".exe"
9 -}
10 -$ret=0
11 -if (Test-Path "$basedir/node$exe") {
12 - & "$basedir/node$exe" "$basedir/../sshpk/bin/sshpk-conv" $args
13 - $ret=$LASTEXITCODE
14 -} else {
15 - & "node$exe" "$basedir/../sshpk/bin/sshpk-conv" $args
16 - $ret=$LASTEXITCODE
17 -}
18 -exit $ret
1 -#!/bin/sh
2 -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 -
4 -case `uname` in
5 - *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 -esac
7 -
8 -if [ -x "$basedir/node" ]; then
9 - "$basedir/node" "$basedir/../sshpk/bin/sshpk-sign" "$@"
10 - ret=$?
11 -else
12 - node "$basedir/../sshpk/bin/sshpk-sign" "$@"
13 - ret=$?
14 -fi
15 -exit $ret
1 -@ECHO off
2 -SETLOCAL
3 -CALL :find_dp0
4 -
5 -IF EXIST "%dp0%\node.exe" (
6 - SET "_prog=%dp0%\node.exe"
7 -) ELSE (
8 - SET "_prog=node"
9 - SET PATHEXT=%PATHEXT:;.JS;=;%
10 -)
11 -
12 -"%_prog%" "%dp0%\..\sshpk\bin\sshpk-sign" %*
13 -ENDLOCAL
14 -EXIT /b %errorlevel%
15 -:find_dp0
16 -SET dp0=%~dp0
17 -EXIT /b
1 -#!/usr/bin/env pwsh
2 -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 -
4 -$exe=""
5 -if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 - # Fix case when both the Windows and Linux builds of Node
7 - # are installed in the same directory
8 - $exe=".exe"
9 -}
10 -$ret=0
11 -if (Test-Path "$basedir/node$exe") {
12 - & "$basedir/node$exe" "$basedir/../sshpk/bin/sshpk-sign" $args
13 - $ret=$LASTEXITCODE
14 -} else {
15 - & "node$exe" "$basedir/../sshpk/bin/sshpk-sign" $args
16 - $ret=$LASTEXITCODE
17 -}
18 -exit $ret
1 -#!/bin/sh
2 -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 -
4 -case `uname` in
5 - *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 -esac
7 -
8 -if [ -x "$basedir/node" ]; then
9 - "$basedir/node" "$basedir/../sshpk/bin/sshpk-verify" "$@"
10 - ret=$?
11 -else
12 - node "$basedir/../sshpk/bin/sshpk-verify" "$@"
13 - ret=$?
14 -fi
15 -exit $ret
1 -@ECHO off
2 -SETLOCAL
3 -CALL :find_dp0
4 -
5 -IF EXIST "%dp0%\node.exe" (
6 - SET "_prog=%dp0%\node.exe"
7 -) ELSE (
8 - SET "_prog=node"
9 - SET PATHEXT=%PATHEXT:;.JS;=;%
10 -)
11 -
12 -"%_prog%" "%dp0%\..\sshpk\bin\sshpk-verify" %*
13 -ENDLOCAL
14 -EXIT /b %errorlevel%
15 -:find_dp0
16 -SET dp0=%~dp0
17 -EXIT /b
1 -#!/usr/bin/env pwsh
2 -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 -
4 -$exe=""
5 -if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 - # Fix case when both the Windows and Linux builds of Node
7 - # are installed in the same directory
8 - $exe=".exe"
9 -}
10 -$ret=0
11 -if (Test-Path "$basedir/node$exe") {
12 - & "$basedir/node$exe" "$basedir/../sshpk/bin/sshpk-verify" $args
13 - $ret=$LASTEXITCODE
14 -} else {
15 - & "node$exe" "$basedir/../sshpk/bin/sshpk-verify" $args
16 - $ret=$LASTEXITCODE
17 -}
18 -exit $ret
1 -#!/bin/sh
2 -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 -
4 -case `uname` in
5 - *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 -esac
7 -
8 -if [ -x "$basedir/node" ]; then
9 - "$basedir/node" "$basedir/../uuid/bin/uuid" "$@"
10 - ret=$?
11 -else
12 - node "$basedir/../uuid/bin/uuid" "$@"
13 - ret=$?
14 -fi
15 -exit $ret
1 -@ECHO off
2 -SETLOCAL
3 -CALL :find_dp0
4 -
5 -IF EXIST "%dp0%\node.exe" (
6 - SET "_prog=%dp0%\node.exe"
7 -) ELSE (
8 - SET "_prog=node"
9 - SET PATHEXT=%PATHEXT:;.JS;=;%
10 -)
11 -
12 -"%_prog%" "%dp0%\..\uuid\bin\uuid" %*
13 -ENDLOCAL
14 -EXIT /b %errorlevel%
15 -:find_dp0
16 -SET dp0=%~dp0
17 -EXIT /b
1 -#!/usr/bin/env pwsh
2 -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 -
4 -$exe=""
5 -if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 - # Fix case when both the Windows and Linux builds of Node
7 - # are installed in the same directory
8 - $exe=".exe"
9 -}
10 -$ret=0
11 -if (Test-Path "$basedir/node$exe") {
12 - & "$basedir/node$exe" "$basedir/../uuid/bin/uuid" $args
13 - $ret=$LASTEXITCODE
14 -} else {
15 - & "node$exe" "$basedir/../uuid/bin/uuid" $args
16 - $ret=$LASTEXITCODE
17 -}
18 -exit $ret
1 -MIT License
2 -
3 -Copyright (c) 2017 Toru Nagashima
4 -
5 -Permission is hereby granted, free of charge, to any person obtaining a copy
6 -of this software and associated documentation files (the "Software"), to deal
7 -in the Software without restriction, including without limitation the rights
8 -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 -copies of the Software, and to permit persons to whom the Software is
10 -furnished to do so, subject to the following conditions:
11 -
12 -The above copyright notice and this permission notice shall be included in all
13 -copies or substantial portions of the Software.
14 -
15 -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 -SOFTWARE.
1 -# abort-controller
2 -
3 -[![npm version](https://img.shields.io/npm/v/abort-controller.svg)](https://www.npmjs.com/package/abort-controller)
4 -[![Downloads/month](https://img.shields.io/npm/dm/abort-controller.svg)](http://www.npmtrends.com/abort-controller)
5 -[![Build Status](https://travis-ci.org/mysticatea/abort-controller.svg?branch=master)](https://travis-ci.org/mysticatea/abort-controller)
6 -[![Coverage Status](https://codecov.io/gh/mysticatea/abort-controller/branch/master/graph/badge.svg)](https://codecov.io/gh/mysticatea/abort-controller)
7 -[![Dependency Status](https://david-dm.org/mysticatea/abort-controller.svg)](https://david-dm.org/mysticatea/abort-controller)
8 -
9 -An implementation of [WHATWG AbortController interface](https://dom.spec.whatwg.org/#interface-abortcontroller).
10 -
11 -```js
12 -import AbortController from "abort-controller"
13 -
14 -const controller = new AbortController()
15 -const signal = controller.signal
16 -
17 -signal.addEventListener("abort", () => {
18 - console.log("aborted!")
19 -})
20 -
21 -controller.abort()
22 -```
23 -
24 -> https://jsfiddle.net/1r2994qp/1/
25 -
26 -## 💿 Installation
27 -
28 -Use [npm](https://www.npmjs.com/) to install then use a bundler.
29 -
30 -```
31 -npm install abort-controller
32 -```
33 -
34 -Or download from [`dist` directory](./dist).
35 -
36 -- [dist/abort-controller.mjs](dist/abort-controller.mjs) ... ES modules version.
37 -- [dist/abort-controller.js](dist/abort-controller.js) ... Common JS version.
38 -- [dist/abort-controller.umd.js](dist/abort-controller.umd.js) ... UMD (Universal Module Definition) version. This is transpiled by [Babel](https://babeljs.io/) for IE 11.
39 -
40 -## 📖 Usage
41 -
42 -### Basic
43 -
44 -```js
45 -import AbortController from "abort-controller"
46 -// or
47 -const AbortController = require("abort-controller")
48 -
49 -// or UMD version defines a global variable:
50 -const AbortController = window.AbortControllerShim
51 -```
52 -
53 -If your bundler recognizes `browser` field of `package.json`, the imported `AbortController` is the native one and it doesn't contain shim (even if the native implementation was nothing).
54 -If you wanted to polyfill `AbortController` for IE, use `abort-controller/polyfill`.
55 -
56 -### Polyfilling
57 -
58 -Importing `abort-controller/polyfill` assigns the `AbortController` shim to the `AbortController` global variable if the native implementation was nothing.
59 -
60 -```js
61 -import "abort-controller/polyfill"
62 -// or
63 -require("abort-controller/polyfill")
64 -```
65 -
66 -### API
67 -
68 -#### AbortController
69 -
70 -> https://dom.spec.whatwg.org/#interface-abortcontroller
71 -
72 -##### controller.signal
73 -
74 -The [AbortSignal](https://dom.spec.whatwg.org/#interface-AbortSignal) object which is associated to this controller.
75 -
76 -##### controller.abort()
77 -
78 -Notify `abort` event to listeners that the `signal` has.
79 -
80 -## 📰 Changelog
81 -
82 -- See [GitHub releases](https://github.com/mysticatea/abort-controller/releases).
83 -
84 -## 🍻 Contributing
85 -
86 -Contributing is welcome ❤️
87 -
88 -Please use GitHub issues/PRs.
89 -
90 -### Development tools
91 -
92 -- `npm install` installs dependencies for development.
93 -- `npm test` runs tests and measures code coverage.
94 -- `npm run clean` removes temporary files of tests.
95 -- `npm run coverage` opens code coverage of the previous test with your default browser.
96 -- `npm run lint` runs ESLint.
97 -- `npm run build` generates `dist` codes.
98 -- `npm run watch` runs tests on each file change.
1 -/*globals self, window */
2 -"use strict"
3 -
4 -/*eslint-disable @mysticatea/prettier */
5 -const { AbortController, AbortSignal } =
6 - typeof self !== "undefined" ? self :
7 - typeof window !== "undefined" ? window :
8 - /* otherwise */ undefined
9 -/*eslint-enable @mysticatea/prettier */
10 -
11 -module.exports = AbortController
12 -module.exports.AbortSignal = AbortSignal
13 -module.exports.default = AbortController
1 -/*globals self, window */
2 -
3 -/*eslint-disable @mysticatea/prettier */
4 -const { AbortController, AbortSignal } =
5 - typeof self !== "undefined" ? self :
6 - typeof window !== "undefined" ? window :
7 - /* otherwise */ undefined
8 -/*eslint-enable @mysticatea/prettier */
9 -
10 -export default AbortController
11 -export { AbortController, AbortSignal }
1 -import { EventTarget } from "event-target-shim"
2 -
3 -type Events = {
4 - abort: any
5 -}
6 -type EventAttributes = {
7 - onabort: any
8 -}
9 -/**
10 - * The signal class.
11 - * @see https://dom.spec.whatwg.org/#abortsignal
12 - */
13 -declare class AbortSignal extends EventTarget<Events, EventAttributes> {
14 - /**
15 - * AbortSignal cannot be constructed directly.
16 - */
17 - constructor()
18 - /**
19 - * Returns `true` if this `AbortSignal`"s `AbortController` has signaled to abort, and `false` otherwise.
20 - */
21 - readonly aborted: boolean
22 -}
23 -/**
24 - * The AbortController.
25 - * @see https://dom.spec.whatwg.org/#abortcontroller
26 - */
27 -declare class AbortController {
28 - /**
29 - * Initialize this controller.
30 - */
31 - constructor()
32 - /**
33 - * Returns the `AbortSignal` object associated with this object.
34 - */
35 - readonly signal: AbortSignal
36 - /**
37 - * Abort and signal to any observers that the associated activity is to be aborted.
38 - */
39 - abort(): void
40 -}
41 -
42 -export default AbortController
43 -export { AbortController, AbortSignal }
1 -/**
2 - * @author Toru Nagashima <https://github.com/mysticatea>
3 - * See LICENSE file in root directory for full license.
4 - */
5 -'use strict';
6 -
7 -Object.defineProperty(exports, '__esModule', { value: true });
8 -
9 -var eventTargetShim = require('event-target-shim');
10 -
11 -/**
12 - * The signal class.
13 - * @see https://dom.spec.whatwg.org/#abortsignal
14 - */
15 -class AbortSignal extends eventTargetShim.EventTarget {
16 - /**
17 - * AbortSignal cannot be constructed directly.
18 - */
19 - constructor() {
20 - super();
21 - throw new TypeError("AbortSignal cannot be constructed directly");
22 - }
23 - /**
24 - * Returns `true` if this `AbortSignal`'s `AbortController` has signaled to abort, and `false` otherwise.
25 - */
26 - get aborted() {
27 - const aborted = abortedFlags.get(this);
28 - if (typeof aborted !== "boolean") {
29 - throw new TypeError(`Expected 'this' to be an 'AbortSignal' object, but got ${this === null ? "null" : typeof this}`);
30 - }
31 - return aborted;
32 - }
33 -}
34 -eventTargetShim.defineEventAttribute(AbortSignal.prototype, "abort");
35 -/**
36 - * Create an AbortSignal object.
37 - */
38 -function createAbortSignal() {
39 - const signal = Object.create(AbortSignal.prototype);
40 - eventTargetShim.EventTarget.call(signal);
41 - abortedFlags.set(signal, false);
42 - return signal;
43 -}
44 -/**
45 - * Abort a given signal.
46 - */
47 -function abortSignal(signal) {
48 - if (abortedFlags.get(signal) !== false) {
49 - return;
50 - }
51 - abortedFlags.set(signal, true);
52 - signal.dispatchEvent({ type: "abort" });
53 -}
54 -/**
55 - * Aborted flag for each instances.
56 - */
57 -const abortedFlags = new WeakMap();
58 -// Properties should be enumerable.
59 -Object.defineProperties(AbortSignal.prototype, {
60 - aborted: { enumerable: true },
61 -});
62 -// `toString()` should return `"[object AbortSignal]"`
63 -if (typeof Symbol === "function" && typeof Symbol.toStringTag === "symbol") {
64 - Object.defineProperty(AbortSignal.prototype, Symbol.toStringTag, {
65 - configurable: true,
66 - value: "AbortSignal",
67 - });
68 -}
69 -
70 -/**
71 - * The AbortController.
72 - * @see https://dom.spec.whatwg.org/#abortcontroller
73 - */
74 -class AbortController {
75 - /**
76 - * Initialize this controller.
77 - */
78 - constructor() {
79 - signals.set(this, createAbortSignal());
80 - }
81 - /**
82 - * Returns the `AbortSignal` object associated with this object.
83 - */
84 - get signal() {
85 - return getSignal(this);
86 - }
87 - /**
88 - * Abort and signal to any observers that the associated activity is to be aborted.
89 - */
90 - abort() {
91 - abortSignal(getSignal(this));
92 - }
93 -}
94 -/**
95 - * Associated signals.
96 - */
97 -const signals = new WeakMap();
98 -/**
99 - * Get the associated signal of a given controller.
100 - */
101 -function getSignal(controller) {
102 - const signal = signals.get(controller);
103 - if (signal == null) {
104 - throw new TypeError(`Expected 'this' to be an 'AbortController' object, but got ${controller === null ? "null" : typeof controller}`);
105 - }
106 - return signal;
107 -}
108 -// Properties should be enumerable.
109 -Object.defineProperties(AbortController.prototype, {
110 - signal: { enumerable: true },
111 - abort: { enumerable: true },
112 -});
113 -if (typeof Symbol === "function" && typeof Symbol.toStringTag === "symbol") {
114 - Object.defineProperty(AbortController.prototype, Symbol.toStringTag, {
115 - configurable: true,
116 - value: "AbortController",
117 - });
118 -}
119 -
120 -exports.AbortController = AbortController;
121 -exports.AbortSignal = AbortSignal;
122 -exports.default = AbortController;
123 -
124 -module.exports = AbortController
125 -module.exports.AbortController = module.exports["default"] = AbortController
126 -module.exports.AbortSignal = AbortSignal
127 -//# sourceMappingURL=abort-controller.js.map
1 -{"version":3,"file":"abort-controller.js","sources":["../src/abort-signal.ts","../src/abort-controller.ts"],"sourcesContent":["import {\n // Event,\n EventTarget,\n // Type,\n defineEventAttribute,\n} from \"event-target-shim\"\n\n// Known Limitation\n// Use `any` because the type of `AbortSignal` in `lib.dom.d.ts` is wrong and\n// to make assignable our `AbortSignal` into that.\n// https://github.com/Microsoft/TSJS-lib-generator/pull/623\ntype Events = {\n abort: any // Event & Type<\"abort\">\n}\ntype EventAttributes = {\n onabort: any // Event & Type<\"abort\">\n}\n\n/**\n * The signal class.\n * @see https://dom.spec.whatwg.org/#abortsignal\n */\nexport default class AbortSignal extends EventTarget<Events, EventAttributes> {\n /**\n * AbortSignal cannot be constructed directly.\n */\n public constructor() {\n super()\n throw new TypeError(\"AbortSignal cannot be constructed directly\")\n }\n\n /**\n * Returns `true` if this `AbortSignal`'s `AbortController` has signaled to abort, and `false` otherwise.\n */\n public get aborted(): boolean {\n const aborted = abortedFlags.get(this)\n if (typeof aborted !== \"boolean\") {\n throw new TypeError(\n `Expected 'this' to be an 'AbortSignal' object, but got ${\n this === null ? \"null\" : typeof this\n }`,\n )\n }\n return aborted\n }\n}\ndefineEventAttribute(AbortSignal.prototype, \"abort\")\n\n/**\n * Create an AbortSignal object.\n */\nexport function createAbortSignal(): AbortSignal {\n const signal = Object.create(AbortSignal.prototype)\n EventTarget.call(signal)\n abortedFlags.set(signal, false)\n return signal\n}\n\n/**\n * Abort a given signal.\n */\nexport function abortSignal(signal: AbortSignal): void {\n if (abortedFlags.get(signal) !== false) {\n return\n }\n\n abortedFlags.set(signal, true)\n signal.dispatchEvent<\"abort\">({ type: \"abort\" })\n}\n\n/**\n * Aborted flag for each instances.\n */\nconst abortedFlags = new WeakMap<AbortSignal, boolean>()\n\n// Properties should be enumerable.\nObject.defineProperties(AbortSignal.prototype, {\n aborted: { enumerable: true },\n})\n\n// `toString()` should return `\"[object AbortSignal]\"`\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n Object.defineProperty(AbortSignal.prototype, Symbol.toStringTag, {\n configurable: true,\n value: \"AbortSignal\",\n })\n}\n","import AbortSignal, { abortSignal, createAbortSignal } from \"./abort-signal\"\n\n/**\n * The AbortController.\n * @see https://dom.spec.whatwg.org/#abortcontroller\n */\nexport default class AbortController {\n /**\n * Initialize this controller.\n */\n public constructor() {\n signals.set(this, createAbortSignal())\n }\n\n /**\n * Returns the `AbortSignal` object associated with this object.\n */\n public get signal(): AbortSignal {\n return getSignal(this)\n }\n\n /**\n * Abort and signal to any observers that the associated activity is to be aborted.\n */\n public abort(): void {\n abortSignal(getSignal(this))\n }\n}\n\n/**\n * Associated signals.\n */\nconst signals = new WeakMap<AbortController, AbortSignal>()\n\n/**\n * Get the associated signal of a given controller.\n */\nfunction getSignal(controller: AbortController): AbortSignal {\n const signal = signals.get(controller)\n if (signal == null) {\n throw new TypeError(\n `Expected 'this' to be an 'AbortController' object, but got ${\n controller === null ? \"null\" : typeof controller\n }`,\n )\n }\n return signal\n}\n\n// Properties should be enumerable.\nObject.defineProperties(AbortController.prototype, {\n signal: { enumerable: true },\n abort: { enumerable: true },\n})\n\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n Object.defineProperty(AbortController.prototype, Symbol.toStringTag, {\n configurable: true,\n value: \"AbortController\",\n })\n}\n\nexport { AbortController, AbortSignal }\n"],"names":["EventTarget","defineEventAttribute"],"mappings":";;;;;;;;;;AAkBA;;;;AAIA,MAAqB,WAAY,SAAQA,2BAAoC;;;;IAIzE;QACI,KAAK,EAAE,CAAA;QACP,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAA;KACpE;;;;IAKD,IAAW,OAAO;QACd,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE;YAC9B,MAAM,IAAI,SAAS,CACf,0DACI,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,IACpC,EAAE,CACL,CAAA;SACJ;QACD,OAAO,OAAO,CAAA;KACjB;CACJ;AACDC,oCAAoB,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;;;;AAKpD,SAAgB,iBAAiB;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;IACnDD,2BAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACxB,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC/B,OAAO,MAAM,CAAA;CAChB;;;;AAKD,SAAgB,WAAW,CAAC,MAAmB;IAC3C,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;QACpC,OAAM;KACT;IAED,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9B,MAAM,CAAC,aAAa,CAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;CACnD;;;;AAKD,MAAM,YAAY,GAAG,IAAI,OAAO,EAAwB,CAAA;;AAGxD,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,SAAS,EAAE;IAC3C,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;CAChC,CAAC,CAAA;;AAGF,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE;IACxE,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE;QAC7D,YAAY,EAAE,IAAI;QAClB,KAAK,EAAE,aAAa;KACvB,CAAC,CAAA;CACL;;ACpFD;;;;AAIA,MAAqB,eAAe;;;;IAIhC;QACI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAA;KACzC;;;;IAKD,IAAW,MAAM;QACb,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;KACzB;;;;IAKM,KAAK;QACR,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;KAC/B;CACJ;;;;AAKD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAgC,CAAA;;;;AAK3D,SAAS,SAAS,CAAC,UAA2B;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACtC,IAAI,MAAM,IAAI,IAAI,EAAE;QAChB,MAAM,IAAI,SAAS,CACf,8DACI,UAAU,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,UAC1C,EAAE,CACL,CAAA;KACJ;IACD,OAAO,MAAM,CAAA;CAChB;;AAGD,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,SAAS,EAAE;IAC/C,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;IAC5B,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;CAC9B,CAAC,CAAA;AAEF,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE;IACxE,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE;QACjE,YAAY,EAAE,IAAI;QAClB,KAAK,EAAE,iBAAiB;KAC3B,CAAC,CAAA;CACL;;;;;;;;;;;;;"}
...\ No newline at end of file ...\ No newline at end of file
1 -/**
2 - * @author Toru Nagashima <https://github.com/mysticatea>
3 - * See LICENSE file in root directory for full license.
4 - */
5 -import { EventTarget, defineEventAttribute } from 'event-target-shim';
6 -
7 -/**
8 - * The signal class.
9 - * @see https://dom.spec.whatwg.org/#abortsignal
10 - */
11 -class AbortSignal extends EventTarget {
12 - /**
13 - * AbortSignal cannot be constructed directly.
14 - */
15 - constructor() {
16 - super();
17 - throw new TypeError("AbortSignal cannot be constructed directly");
18 - }
19 - /**
20 - * Returns `true` if this `AbortSignal`'s `AbortController` has signaled to abort, and `false` otherwise.
21 - */
22 - get aborted() {
23 - const aborted = abortedFlags.get(this);
24 - if (typeof aborted !== "boolean") {
25 - throw new TypeError(`Expected 'this' to be an 'AbortSignal' object, but got ${this === null ? "null" : typeof this}`);
26 - }
27 - return aborted;
28 - }
29 -}
30 -defineEventAttribute(AbortSignal.prototype, "abort");
31 -/**
32 - * Create an AbortSignal object.
33 - */
34 -function createAbortSignal() {
35 - const signal = Object.create(AbortSignal.prototype);
36 - EventTarget.call(signal);
37 - abortedFlags.set(signal, false);
38 - return signal;
39 -}
40 -/**
41 - * Abort a given signal.
42 - */
43 -function abortSignal(signal) {
44 - if (abortedFlags.get(signal) !== false) {
45 - return;
46 - }
47 - abortedFlags.set(signal, true);
48 - signal.dispatchEvent({ type: "abort" });
49 -}
50 -/**
51 - * Aborted flag for each instances.
52 - */
53 -const abortedFlags = new WeakMap();
54 -// Properties should be enumerable.
55 -Object.defineProperties(AbortSignal.prototype, {
56 - aborted: { enumerable: true },
57 -});
58 -// `toString()` should return `"[object AbortSignal]"`
59 -if (typeof Symbol === "function" && typeof Symbol.toStringTag === "symbol") {
60 - Object.defineProperty(AbortSignal.prototype, Symbol.toStringTag, {
61 - configurable: true,
62 - value: "AbortSignal",
63 - });
64 -}
65 -
66 -/**
67 - * The AbortController.
68 - * @see https://dom.spec.whatwg.org/#abortcontroller
69 - */
70 -class AbortController {
71 - /**
72 - * Initialize this controller.
73 - */
74 - constructor() {
75 - signals.set(this, createAbortSignal());
76 - }
77 - /**
78 - * Returns the `AbortSignal` object associated with this object.
79 - */
80 - get signal() {
81 - return getSignal(this);
82 - }
83 - /**
84 - * Abort and signal to any observers that the associated activity is to be aborted.
85 - */
86 - abort() {
87 - abortSignal(getSignal(this));
88 - }
89 -}
90 -/**
91 - * Associated signals.
92 - */
93 -const signals = new WeakMap();
94 -/**
95 - * Get the associated signal of a given controller.
96 - */
97 -function getSignal(controller) {
98 - const signal = signals.get(controller);
99 - if (signal == null) {
100 - throw new TypeError(`Expected 'this' to be an 'AbortController' object, but got ${controller === null ? "null" : typeof controller}`);
101 - }
102 - return signal;
103 -}
104 -// Properties should be enumerable.
105 -Object.defineProperties(AbortController.prototype, {
106 - signal: { enumerable: true },
107 - abort: { enumerable: true },
108 -});
109 -if (typeof Symbol === "function" && typeof Symbol.toStringTag === "symbol") {
110 - Object.defineProperty(AbortController.prototype, Symbol.toStringTag, {
111 - configurable: true,
112 - value: "AbortController",
113 - });
114 -}
115 -
116 -export default AbortController;
117 -export { AbortController, AbortSignal };
118 -//# sourceMappingURL=abort-controller.mjs.map
1 -{"version":3,"file":"abort-controller.mjs","sources":["../src/abort-signal.ts","../src/abort-controller.ts"],"sourcesContent":["import {\n // Event,\n EventTarget,\n // Type,\n defineEventAttribute,\n} from \"event-target-shim\"\n\n// Known Limitation\n// Use `any` because the type of `AbortSignal` in `lib.dom.d.ts` is wrong and\n// to make assignable our `AbortSignal` into that.\n// https://github.com/Microsoft/TSJS-lib-generator/pull/623\ntype Events = {\n abort: any // Event & Type<\"abort\">\n}\ntype EventAttributes = {\n onabort: any // Event & Type<\"abort\">\n}\n\n/**\n * The signal class.\n * @see https://dom.spec.whatwg.org/#abortsignal\n */\nexport default class AbortSignal extends EventTarget<Events, EventAttributes> {\n /**\n * AbortSignal cannot be constructed directly.\n */\n public constructor() {\n super()\n throw new TypeError(\"AbortSignal cannot be constructed directly\")\n }\n\n /**\n * Returns `true` if this `AbortSignal`'s `AbortController` has signaled to abort, and `false` otherwise.\n */\n public get aborted(): boolean {\n const aborted = abortedFlags.get(this)\n if (typeof aborted !== \"boolean\") {\n throw new TypeError(\n `Expected 'this' to be an 'AbortSignal' object, but got ${\n this === null ? \"null\" : typeof this\n }`,\n )\n }\n return aborted\n }\n}\ndefineEventAttribute(AbortSignal.prototype, \"abort\")\n\n/**\n * Create an AbortSignal object.\n */\nexport function createAbortSignal(): AbortSignal {\n const signal = Object.create(AbortSignal.prototype)\n EventTarget.call(signal)\n abortedFlags.set(signal, false)\n return signal\n}\n\n/**\n * Abort a given signal.\n */\nexport function abortSignal(signal: AbortSignal): void {\n if (abortedFlags.get(signal) !== false) {\n return\n }\n\n abortedFlags.set(signal, true)\n signal.dispatchEvent<\"abort\">({ type: \"abort\" })\n}\n\n/**\n * Aborted flag for each instances.\n */\nconst abortedFlags = new WeakMap<AbortSignal, boolean>()\n\n// Properties should be enumerable.\nObject.defineProperties(AbortSignal.prototype, {\n aborted: { enumerable: true },\n})\n\n// `toString()` should return `\"[object AbortSignal]\"`\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n Object.defineProperty(AbortSignal.prototype, Symbol.toStringTag, {\n configurable: true,\n value: \"AbortSignal\",\n })\n}\n","import AbortSignal, { abortSignal, createAbortSignal } from \"./abort-signal\"\n\n/**\n * The AbortController.\n * @see https://dom.spec.whatwg.org/#abortcontroller\n */\nexport default class AbortController {\n /**\n * Initialize this controller.\n */\n public constructor() {\n signals.set(this, createAbortSignal())\n }\n\n /**\n * Returns the `AbortSignal` object associated with this object.\n */\n public get signal(): AbortSignal {\n return getSignal(this)\n }\n\n /**\n * Abort and signal to any observers that the associated activity is to be aborted.\n */\n public abort(): void {\n abortSignal(getSignal(this))\n }\n}\n\n/**\n * Associated signals.\n */\nconst signals = new WeakMap<AbortController, AbortSignal>()\n\n/**\n * Get the associated signal of a given controller.\n */\nfunction getSignal(controller: AbortController): AbortSignal {\n const signal = signals.get(controller)\n if (signal == null) {\n throw new TypeError(\n `Expected 'this' to be an 'AbortController' object, but got ${\n controller === null ? \"null\" : typeof controller\n }`,\n )\n }\n return signal\n}\n\n// Properties should be enumerable.\nObject.defineProperties(AbortController.prototype, {\n signal: { enumerable: true },\n abort: { enumerable: true },\n})\n\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n Object.defineProperty(AbortController.prototype, Symbol.toStringTag, {\n configurable: true,\n value: \"AbortController\",\n })\n}\n\nexport { AbortController, AbortSignal }\n"],"names":[],"mappings":";;;;;;AAkBA;;;;AAIA,MAAqB,WAAY,SAAQ,WAAoC;;;;IAIzE;QACI,KAAK,EAAE,CAAA;QACP,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAA;KACpE;;;;IAKD,IAAW,OAAO;QACd,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE;YAC9B,MAAM,IAAI,SAAS,CACf,0DACI,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,IACpC,EAAE,CACL,CAAA;SACJ;QACD,OAAO,OAAO,CAAA;KACjB;CACJ;AACD,oBAAoB,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;;;;AAKpD,SAAgB,iBAAiB;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;IACnD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACxB,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC/B,OAAO,MAAM,CAAA;CAChB;;;;AAKD,SAAgB,WAAW,CAAC,MAAmB;IAC3C,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;QACpC,OAAM;KACT;IAED,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9B,MAAM,CAAC,aAAa,CAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;CACnD;;;;AAKD,MAAM,YAAY,GAAG,IAAI,OAAO,EAAwB,CAAA;;AAGxD,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,SAAS,EAAE;IAC3C,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;CAChC,CAAC,CAAA;;AAGF,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE;IACxE,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE;QAC7D,YAAY,EAAE,IAAI;QAClB,KAAK,EAAE,aAAa;KACvB,CAAC,CAAA;CACL;;ACpFD;;;;AAIA,MAAqB,eAAe;;;;IAIhC;QACI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAA;KACzC;;;;IAKD,IAAW,MAAM;QACb,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;KACzB;;;;IAKM,KAAK;QACR,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;KAC/B;CACJ;;;;AAKD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAgC,CAAA;;;;AAK3D,SAAS,SAAS,CAAC,UAA2B;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACtC,IAAI,MAAM,IAAI,IAAI,EAAE;QAChB,MAAM,IAAI,SAAS,CACf,8DACI,UAAU,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,UAC1C,EAAE,CACL,CAAA;KACJ;IACD,OAAO,MAAM,CAAA;CAChB;;AAGD,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,SAAS,EAAE;IAC/C,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;IAC5B,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;CAC9B,CAAC,CAAA;AAEF,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE;IACxE,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE;QACjE,YAAY,EAAE,IAAI;QAClB,KAAK,EAAE,iBAAiB;KAC3B,CAAC,CAAA;CACL;;;;;"}
...\ No newline at end of file ...\ No newline at end of file
1 -/**
2 - * @author Toru Nagashima <https://github.com/mysticatea>
3 - * See LICENSE file in root directory for full license.
4 - */(function(a,b){"object"==typeof exports&&"undefined"!=typeof module?b(exports):"function"==typeof define&&define.amd?define(["exports"],b):(a=a||self,b(a.AbortControllerShim={}))})(this,function(a){'use strict';function b(a){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},b(a)}function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function d(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}function e(a,b,c){return b&&d(a.prototype,b),c&&d(a,c),a}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function");a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),b&&h(a,b)}function g(a){return g=Object.setPrototypeOf?Object.getPrototypeOf:function(a){return a.__proto__||Object.getPrototypeOf(a)},g(a)}function h(a,b){return h=Object.setPrototypeOf||function(a,b){return a.__proto__=b,a},h(a,b)}function i(a){if(void 0===a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a}function j(a,b){return b&&("object"==typeof b||"function"==typeof b)?b:i(a)}function k(a){var b=F.get(a);return console.assert(null!=b,"'this' is expected an Event object, but got",a),b}function l(a){return null==a.passiveListener?void(!a.event.cancelable||(a.canceled=!0,"function"==typeof a.event.preventDefault&&a.event.preventDefault())):void("undefined"!=typeof console&&"function"==typeof console.error&&console.error("Unable to preventDefault inside passive event listener invocation.",a.passiveListener))}function m(a,b){F.set(this,{eventTarget:a,event:b,eventPhase:2,currentTarget:a,canceled:!1,stopped:!1,immediateStopped:!1,passiveListener:null,timeStamp:b.timeStamp||Date.now()}),Object.defineProperty(this,"isTrusted",{value:!1,enumerable:!0});for(var c,d=Object.keys(b),e=0;e<d.length;++e)c=d[e],c in this||Object.defineProperty(this,c,n(c))}function n(a){return{get:function(){return k(this).event[a]},set:function(b){k(this).event[a]=b},configurable:!0,enumerable:!0}}function o(a){return{value:function(){var b=k(this).event;return b[a].apply(b,arguments)},configurable:!0,enumerable:!0}}function p(a,b){function c(b,c){a.call(this,b,c)}var d=Object.keys(b);if(0===d.length)return a;c.prototype=Object.create(a.prototype,{constructor:{value:c,configurable:!0,writable:!0}});for(var e,f=0;f<d.length;++f)if(e=d[f],!(e in a.prototype)){var g=Object.getOwnPropertyDescriptor(b,e),h="function"==typeof g.value;Object.defineProperty(c.prototype,e,h?o(e):n(e))}return c}function q(a){if(null==a||a===Object.prototype)return m;var b=G.get(a);return null==b&&(b=p(q(Object.getPrototypeOf(a)),a),G.set(a,b)),b}function r(a,b){var c=q(Object.getPrototypeOf(b));return new c(a,b)}function s(a){return k(a).immediateStopped}function t(a,b){k(a).eventPhase=b}function u(a,b){k(a).currentTarget=b}function v(a,b){k(a).passiveListener=b}function w(a){return null!==a&&"object"===b(a)}function x(a){var b=H.get(a);if(null==b)throw new TypeError("'this' is expected an EventTarget object, but got another value.");return b}function y(a){return{get:function(){for(var b=x(this),c=b.get(a);null!=c;){if(3===c.listenerType)return c.listener;c=c.next}return null},set:function(b){"function"==typeof b||w(b)||(b=null);for(var c=x(this),d=null,e=c.get(a);null!=e;)3===e.listenerType?null===d?null===e.next?c.delete(a):c.set(a,e.next):d.next=e.next:d=e,e=e.next;if(null!==b){var f={listener:b,listenerType:3,passive:!1,once:!1,next:null};null===d?c.set(a,f):d.next=f}},configurable:!0,enumerable:!0}}function z(a,b){Object.defineProperty(a,"on".concat(b),y(b))}function A(a){function b(){B.call(this)}b.prototype=Object.create(B.prototype,{constructor:{value:b,configurable:!0,writable:!0}});for(var c=0;c<a.length;++c)z(b.prototype,a[c]);return b}function B(){if(this instanceof B)return void H.set(this,new Map);if(1===arguments.length&&Array.isArray(arguments[0]))return A(arguments[0]);if(0<arguments.length){for(var a=Array(arguments.length),b=0;b<arguments.length;++b)a[b]=arguments[b];return A(a)}throw new TypeError("Cannot call a class as a function")}function C(){var a=Object.create(K.prototype);return B.call(a),L.set(a,!1),a}function D(a){!1!==L.get(a)||(L.set(a,!0),a.dispatchEvent({type:"abort"}))}function E(a){var c=N.get(a);if(null==c)throw new TypeError("Expected 'this' to be an 'AbortController' object, but got ".concat(null===a?"null":b(a)));return c}var F=new WeakMap,G=new WeakMap;m.prototype={get type(){return k(this).event.type},get target(){return k(this).eventTarget},get currentTarget(){return k(this).currentTarget},composedPath:function(){var a=k(this).currentTarget;return null==a?[]:[a]},get NONE(){return 0},get CAPTURING_PHASE(){return 1},get AT_TARGET(){return 2},get BUBBLING_PHASE(){return 3},get eventPhase(){return k(this).eventPhase},stopPropagation:function(){var a=k(this);a.stopped=!0,"function"==typeof a.event.stopPropagation&&a.event.stopPropagation()},stopImmediatePropagation:function(){var a=k(this);a.stopped=!0,a.immediateStopped=!0,"function"==typeof a.event.stopImmediatePropagation&&a.event.stopImmediatePropagation()},get bubbles(){return!!k(this).event.bubbles},get cancelable(){return!!k(this).event.cancelable},preventDefault:function(){l(k(this))},get defaultPrevented(){return k(this).canceled},get composed(){return!!k(this).event.composed},get timeStamp(){return k(this).timeStamp},get srcElement(){return k(this).eventTarget},get cancelBubble(){return k(this).stopped},set cancelBubble(a){if(a){var b=k(this);b.stopped=!0,"boolean"==typeof b.event.cancelBubble&&(b.event.cancelBubble=!0)}},get returnValue(){return!k(this).canceled},set returnValue(a){a||l(k(this))},initEvent:function(){}},Object.defineProperty(m.prototype,"constructor",{value:m,configurable:!0,writable:!0}),"undefined"!=typeof window&&"undefined"!=typeof window.Event&&(Object.setPrototypeOf(m.prototype,window.Event.prototype),G.set(window.Event.prototype,m));var H=new WeakMap,I=1,J=2;B.prototype={addEventListener:function(a,b,c){if(null!=b){if("function"!=typeof b&&!w(b))throw new TypeError("'listener' should be a function or an object.");var d=x(this),e=w(c),f=e?!!c.capture:!!c,g=f?I:J,h={listener:b,listenerType:g,passive:e&&!!c.passive,once:e&&!!c.once,next:null},i=d.get(a);if(void 0===i)return void d.set(a,h);for(var j=null;null!=i;){if(i.listener===b&&i.listenerType===g)return;j=i,i=i.next}j.next=h}},removeEventListener:function(a,b,c){if(null!=b)for(var d=x(this),e=w(c)?!!c.capture:!!c,f=e?I:J,g=null,h=d.get(a);null!=h;){if(h.listener===b&&h.listenerType===f)return void(null===g?null===h.next?d.delete(a):d.set(a,h.next):g.next=h.next);g=h,h=h.next}},dispatchEvent:function(a){if(null==a||"string"!=typeof a.type)throw new TypeError("\"event.type\" should be a string.");var b=x(this),c=a.type,d=b.get(c);if(null==d)return!0;for(var e=r(this,a),f=null;null!=d;){if(d.once?null===f?null===d.next?b.delete(c):b.set(c,d.next):f.next=d.next:f=d,v(e,d.passive?d.listener:null),"function"==typeof d.listener)try{d.listener.call(this,e)}catch(a){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(a)}else d.listenerType!==3&&"function"==typeof d.listener.handleEvent&&d.listener.handleEvent(e);if(s(e))break;d=d.next}return v(e,null),t(e,0),u(e,null),!e.defaultPrevented}},Object.defineProperty(B.prototype,"constructor",{value:B,configurable:!0,writable:!0}),"undefined"!=typeof window&&"undefined"!=typeof window.EventTarget&&Object.setPrototypeOf(B.prototype,window.EventTarget.prototype);var K=function(a){function d(){var a;throw c(this,d),a=j(this,g(d).call(this)),new TypeError("AbortSignal cannot be constructed directly")}return f(d,a),e(d,[{key:"aborted",get:function(){var a=L.get(this);if("boolean"!=typeof a)throw new TypeError("Expected 'this' to be an 'AbortSignal' object, but got ".concat(null===this?"null":b(this)));return a}}]),d}(B);z(K.prototype,"abort");var L=new WeakMap;Object.defineProperties(K.prototype,{aborted:{enumerable:!0}}),"function"==typeof Symbol&&"symbol"===b(Symbol.toStringTag)&&Object.defineProperty(K.prototype,Symbol.toStringTag,{configurable:!0,value:"AbortSignal"});var M=function(){function a(){c(this,a),N.set(this,C())}return e(a,[{key:"abort",value:function(){D(E(this))}},{key:"signal",get:function(){return E(this)}}]),a}(),N=new WeakMap;if(Object.defineProperties(M.prototype,{signal:{enumerable:!0},abort:{enumerable:!0}}),"function"==typeof Symbol&&"symbol"===b(Symbol.toStringTag)&&Object.defineProperty(M.prototype,Symbol.toStringTag,{configurable:!0,value:"AbortController"}),a.AbortController=M,a.AbortSignal=K,a.default=M,Object.defineProperty(a,"__esModule",{value:!0}),"undefined"==typeof module&&"undefined"==typeof define){var O=Function("return this")();"undefined"==typeof O.AbortController&&(O.AbortController=M,O.AbortSignal=K)}});
5 -//# sourceMappingURL=abort-controller.umd.js.map
1 -{
2 - "_from": "abort-controller@^3.0.0",
3 - "_id": "abort-controller@3.0.0",
4 - "_inBundle": false,
5 - "_integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
6 - "_location": "/abort-controller",
7 - "_phantomChildren": {},
8 - "_requested": {
9 - "type": "range",
10 - "registry": true,
11 - "raw": "abort-controller@^3.0.0",
12 - "name": "abort-controller",
13 - "escapedName": "abort-controller",
14 - "rawSpec": "^3.0.0",
15 - "saveSpec": null,
16 - "fetchSpec": "^3.0.0"
17 - },
18 - "_requiredBy": [
19 - "/gaxios"
20 - ],
21 - "_resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
22 - "_shasum": "eaf54d53b62bae4138e809ca225c8439a6efb392",
23 - "_spec": "abort-controller@^3.0.0",
24 - "_where": "C:\\Users\\LG\\Desktop\\4-1\\오픈소스\\Reminder-Talk\\node_modules\\gaxios",
25 - "author": {
26 - "name": "Toru Nagashima",
27 - "url": "https://github.com/mysticatea"
28 - },
29 - "browser": "./browser.js",
30 - "bugs": {
31 - "url": "https://github.com/mysticatea/abort-controller/issues"
32 - },
33 - "bundleDependencies": false,
34 - "dependencies": {
35 - "event-target-shim": "^5.0.0"
36 - },
37 - "deprecated": false,
38 - "description": "An implementation of WHATWG AbortController interface.",
39 - "devDependencies": {
40 - "@babel/core": "^7.2.2",
41 - "@babel/plugin-transform-modules-commonjs": "^7.2.0",
42 - "@babel/preset-env": "^7.3.0",
43 - "@babel/register": "^7.0.0",
44 - "@mysticatea/eslint-plugin": "^8.0.1",
45 - "@mysticatea/spy": "^0.1.2",
46 - "@types/mocha": "^5.2.5",
47 - "@types/node": "^10.12.18",
48 - "assert": "^1.4.1",
49 - "codecov": "^3.1.0",
50 - "dts-bundle-generator": "^2.0.0",
51 - "eslint": "^5.12.1",
52 - "karma": "^3.1.4",
53 - "karma-chrome-launcher": "^2.2.0",
54 - "karma-coverage": "^1.1.2",
55 - "karma-firefox-launcher": "^1.1.0",
56 - "karma-growl-reporter": "^1.0.0",
57 - "karma-ie-launcher": "^1.0.0",
58 - "karma-mocha": "^1.3.0",
59 - "karma-rollup-preprocessor": "^7.0.0-rc.2",
60 - "mocha": "^5.2.0",
61 - "npm-run-all": "^4.1.5",
62 - "nyc": "^13.1.0",
63 - "opener": "^1.5.1",
64 - "rimraf": "^2.6.3",
65 - "rollup": "^1.1.2",
66 - "rollup-plugin-babel": "^4.3.2",
67 - "rollup-plugin-babel-minify": "^7.0.0",
68 - "rollup-plugin-commonjs": "^9.2.0",
69 - "rollup-plugin-node-resolve": "^4.0.0",
70 - "rollup-plugin-sourcemaps": "^0.4.2",
71 - "rollup-plugin-typescript": "^1.0.0",
72 - "rollup-watch": "^4.3.1",
73 - "ts-node": "^8.0.1",
74 - "type-tester": "^1.0.0",
75 - "typescript": "^3.2.4"
76 - },
77 - "engines": {
78 - "node": ">=6.5"
79 - },
80 - "files": [
81 - "dist",
82 - "polyfill.*",
83 - "browser.*"
84 - ],
85 - "homepage": "https://github.com/mysticatea/abort-controller#readme",
86 - "keywords": [
87 - "w3c",
88 - "whatwg",
89 - "event",
90 - "events",
91 - "abort",
92 - "cancel",
93 - "abortcontroller",
94 - "abortsignal",
95 - "controller",
96 - "signal",
97 - "shim"
98 - ],
99 - "license": "MIT",
100 - "main": "dist/abort-controller",
101 - "name": "abort-controller",
102 - "repository": {
103 - "type": "git",
104 - "url": "git+https://github.com/mysticatea/abort-controller.git"
105 - },
106 - "scripts": {
107 - "build": "run-s -s build:*",
108 - "build:dts": "dts-bundle-generator -o dist/abort-controller.d.ts src/abort-controller.ts && ts-node scripts/fix-dts",
109 - "build:rollup": "rollup -c",
110 - "clean": "rimraf .nyc_output coverage",
111 - "codecov": "codecov",
112 - "coverage": "opener coverage/lcov-report/index.html",
113 - "lint": "eslint . --ext .ts",
114 - "postversion": "git push && git push --tags",
115 - "preversion": "npm test",
116 - "test": "run-s -s lint test:*",
117 - "test:karma": "karma start --single-run",
118 - "test:mocha": "nyc mocha test/*.ts",
119 - "version": "npm run -s build && git add dist/*",
120 - "watch": "run-p -s watch:*",
121 - "watch:karma": "karma start --watch",
122 - "watch:mocha": "mocha test/*.ts --require ts-node/register --watch-extensions ts --watch --growl"
123 - },
124 - "version": "3.0.0"
125 -}
1 -/*globals require, self, window */
2 -"use strict"
3 -
4 -const ac = require("./dist/abort-controller")
5 -
6 -/*eslint-disable @mysticatea/prettier */
7 -const g =
8 - typeof self !== "undefined" ? self :
9 - typeof window !== "undefined" ? window :
10 - typeof global !== "undefined" ? global :
11 - /* otherwise */ undefined
12 -/*eslint-enable @mysticatea/prettier */
13 -
14 -if (g) {
15 - if (typeof g.AbortController === "undefined") {
16 - g.AbortController = ac.AbortController
17 - }
18 - if (typeof g.AbortSignal === "undefined") {
19 - g.AbortSignal = ac.AbortSignal
20 - }
21 -}
1 -/*globals self, window */
2 -import * as ac from "./dist/abort-controller"
3 -
4 -/*eslint-disable @mysticatea/prettier */
5 -const g =
6 - typeof self !== "undefined" ? self :
7 - typeof window !== "undefined" ? window :
8 - typeof global !== "undefined" ? global :
9 - /* otherwise */ undefined
10 -/*eslint-enable @mysticatea/prettier */
11 -
12 -if (g) {
13 - if (typeof g.AbortController === "undefined") {
14 - g.AbortController = ac.AbortController
15 - }
16 - if (typeof g.AbortSignal === "undefined") {
17 - g.AbortSignal = ac.AbortSignal
18 - }
19 -}
1 -1.3.7 / 2019-04-29
2 -==================
3 -
4 - * deps: negotiator@0.6.2
5 - - Fix sorting charset, encoding, and language with extra parameters
6 -
7 -1.3.6 / 2019-04-28
8 -==================
9 -
10 - * deps: mime-types@~2.1.24
11 - - deps: mime-db@~1.40.0
12 -
13 -1.3.5 / 2018-02-28
14 -==================
15 -
16 - * deps: mime-types@~2.1.18
17 - - deps: mime-db@~1.33.0
18 -
19 -1.3.4 / 2017-08-22
20 -==================
21 -
22 - * deps: mime-types@~2.1.16
23 - - deps: mime-db@~1.29.0
24 -
25 -1.3.3 / 2016-05-02
26 -==================
27 -
28 - * deps: mime-types@~2.1.11
29 - - deps: mime-db@~1.23.0
30 - * deps: negotiator@0.6.1
31 - - perf: improve `Accept` parsing speed
32 - - perf: improve `Accept-Charset` parsing speed
33 - - perf: improve `Accept-Encoding` parsing speed
34 - - perf: improve `Accept-Language` parsing speed
35 -
36 -1.3.2 / 2016-03-08
37 -==================
38 -
39 - * deps: mime-types@~2.1.10
40 - - Fix extension of `application/dash+xml`
41 - - Update primary extension for `audio/mp4`
42 - - deps: mime-db@~1.22.0
43 -
44 -1.3.1 / 2016-01-19
45 -==================
46 -
47 - * deps: mime-types@~2.1.9
48 - - deps: mime-db@~1.21.0
49 -
50 -1.3.0 / 2015-09-29
51 -==================
52 -
53 - * deps: mime-types@~2.1.7
54 - - deps: mime-db@~1.19.0
55 - * deps: negotiator@0.6.0
56 - - Fix including type extensions in parameters in `Accept` parsing
57 - - Fix parsing `Accept` parameters with quoted equals
58 - - Fix parsing `Accept` parameters with quoted semicolons
59 - - Lazy-load modules from main entry point
60 - - perf: delay type concatenation until needed
61 - - perf: enable strict mode
62 - - perf: hoist regular expressions
63 - - perf: remove closures getting spec properties
64 - - perf: remove a closure from media type parsing
65 - - perf: remove property delete from media type parsing
66 -
67 -1.2.13 / 2015-09-06
68 -===================
69 -
70 - * deps: mime-types@~2.1.6
71 - - deps: mime-db@~1.18.0
72 -
73 -1.2.12 / 2015-07-30
74 -===================
75 -
76 - * deps: mime-types@~2.1.4
77 - - deps: mime-db@~1.16.0
78 -
79 -1.2.11 / 2015-07-16
80 -===================
81 -
82 - * deps: mime-types@~2.1.3
83 - - deps: mime-db@~1.15.0
84 -
85 -1.2.10 / 2015-07-01
86 -===================
87 -
88 - * deps: mime-types@~2.1.2
89 - - deps: mime-db@~1.14.0
90 -
91 -1.2.9 / 2015-06-08
92 -==================
93 -
94 - * deps: mime-types@~2.1.1
95 - - perf: fix deopt during mapping
96 -
97 -1.2.8 / 2015-06-07
98 -==================
99 -
100 - * deps: mime-types@~2.1.0
101 - - deps: mime-db@~1.13.0
102 - * perf: avoid argument reassignment & argument slice
103 - * perf: avoid negotiator recursive construction
104 - * perf: enable strict mode
105 - * perf: remove unnecessary bitwise operator
106 -
107 -1.2.7 / 2015-05-10
108 -==================
109 -
110 - * deps: negotiator@0.5.3
111 - - Fix media type parameter matching to be case-insensitive
112 -
113 -1.2.6 / 2015-05-07
114 -==================
115 -
116 - * deps: mime-types@~2.0.11
117 - - deps: mime-db@~1.9.1
118 - * deps: negotiator@0.5.2
119 - - Fix comparing media types with quoted values
120 - - Fix splitting media types with quoted commas
121 -
122 -1.2.5 / 2015-03-13
123 -==================
124 -
125 - * deps: mime-types@~2.0.10
126 - - deps: mime-db@~1.8.0
127 -
128 -1.2.4 / 2015-02-14
129 -==================
130 -
131 - * Support Node.js 0.6
132 - * deps: mime-types@~2.0.9
133 - - deps: mime-db@~1.7.0
134 - * deps: negotiator@0.5.1
135 - - Fix preference sorting to be stable for long acceptable lists
136 -
137 -1.2.3 / 2015-01-31
138 -==================
139 -
140 - * deps: mime-types@~2.0.8
141 - - deps: mime-db@~1.6.0
142 -
143 -1.2.2 / 2014-12-30
144 -==================
145 -
146 - * deps: mime-types@~2.0.7
147 - - deps: mime-db@~1.5.0
148 -
149 -1.2.1 / 2014-12-30
150 -==================
151 -
152 - * deps: mime-types@~2.0.5
153 - - deps: mime-db@~1.3.1
154 -
155 -1.2.0 / 2014-12-19
156 -==================
157 -
158 - * deps: negotiator@0.5.0
159 - - Fix list return order when large accepted list
160 - - Fix missing identity encoding when q=0 exists
161 - - Remove dynamic building of Negotiator class
162 -
163 -1.1.4 / 2014-12-10
164 -==================
165 -
166 - * deps: mime-types@~2.0.4
167 - - deps: mime-db@~1.3.0
168 -
169 -1.1.3 / 2014-11-09
170 -==================
171 -
172 - * deps: mime-types@~2.0.3
173 - - deps: mime-db@~1.2.0
174 -
175 -1.1.2 / 2014-10-14
176 -==================
177 -
178 - * deps: negotiator@0.4.9
179 - - Fix error when media type has invalid parameter
180 -
181 -1.1.1 / 2014-09-28
182 -==================
183 -
184 - * deps: mime-types@~2.0.2
185 - - deps: mime-db@~1.1.0
186 - * deps: negotiator@0.4.8
187 - - Fix all negotiations to be case-insensitive
188 - - Stable sort preferences of same quality according to client order
189 -
190 -1.1.0 / 2014-09-02
191 -==================
192 -
193 - * update `mime-types`
194 -
195 -1.0.7 / 2014-07-04
196 -==================
197 -
198 - * Fix wrong type returned from `type` when match after unknown extension
199 -
200 -1.0.6 / 2014-06-24
201 -==================
202 -
203 - * deps: negotiator@0.4.7
204 -
205 -1.0.5 / 2014-06-20
206 -==================
207 -
208 - * fix crash when unknown extension given
209 -
210 -1.0.4 / 2014-06-19
211 -==================
212 -
213 - * use `mime-types`
214 -
215 -1.0.3 / 2014-06-11
216 -==================
217 -
218 - * deps: negotiator@0.4.6
219 - - Order by specificity when quality is the same
220 -
221 -1.0.2 / 2014-05-29
222 -==================
223 -
224 - * Fix interpretation when header not in request
225 - * deps: pin negotiator@0.4.5
226 -
227 -1.0.1 / 2014-01-18
228 -==================
229 -
230 - * Identity encoding isn't always acceptable
231 - * deps: negotiator@~0.4.0
232 -
233 -1.0.0 / 2013-12-27
234 -==================
235 -
236 - * Genesis
1 -(The MIT License)
2 -
3 -Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
4 -Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com>
5 -
6 -Permission is hereby granted, free of charge, to any person obtaining
7 -a copy of this software and associated documentation files (the
8 -'Software'), to deal in the Software without restriction, including
9 -without limitation the rights to use, copy, modify, merge, publish,
10 -distribute, sublicense, and/or sell copies of the Software, and to
11 -permit persons to whom the Software is furnished to do so, subject to
12 -the following conditions:
13 -
14 -The above copyright notice and this permission notice shall be
15 -included in all copies or substantial portions of the Software.
16 -
17 -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
18 -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21 -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22 -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23 -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1 -# accepts
2 -
3 -[![NPM Version][npm-version-image]][npm-url]
4 -[![NPM Downloads][npm-downloads-image]][npm-url]
5 -[![Node.js Version][node-version-image]][node-version-url]
6 -[![Build Status][travis-image]][travis-url]
7 -[![Test Coverage][coveralls-image]][coveralls-url]
8 -
9 -Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator).
10 -Extracted from [koa](https://www.npmjs.com/package/koa) for general use.
11 -
12 -In addition to negotiator, it allows:
13 -
14 -- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])`
15 - as well as `('text/html', 'application/json')`.
16 -- Allows type shorthands such as `json`.
17 -- Returns `false` when no types match
18 -- Treats non-existent headers as `*`
19 -
20 -## Installation
21 -
22 -This is a [Node.js](https://nodejs.org/en/) module available through the
23 -[npm registry](https://www.npmjs.com/). Installation is done using the
24 -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
25 -
26 -```sh
27 -$ npm install accepts
28 -```
29 -
30 -## API
31 -
32 -<!-- eslint-disable no-unused-vars -->
33 -
34 -```js
35 -var accepts = require('accepts')
36 -```
37 -
38 -### accepts(req)
39 -
40 -Create a new `Accepts` object for the given `req`.
41 -
42 -#### .charset(charsets)
43 -
44 -Return the first accepted charset. If nothing in `charsets` is accepted,
45 -then `false` is returned.
46 -
47 -#### .charsets()
48 -
49 -Return the charsets that the request accepts, in the order of the client's
50 -preference (most preferred first).
51 -
52 -#### .encoding(encodings)
53 -
54 -Return the first accepted encoding. If nothing in `encodings` is accepted,
55 -then `false` is returned.
56 -
57 -#### .encodings()
58 -
59 -Return the encodings that the request accepts, in the order of the client's
60 -preference (most preferred first).
61 -
62 -#### .language(languages)
63 -
64 -Return the first accepted language. If nothing in `languages` is accepted,
65 -then `false` is returned.
66 -
67 -#### .languages()
68 -
69 -Return the languages that the request accepts, in the order of the client's
70 -preference (most preferred first).
71 -
72 -#### .type(types)
73 -
74 -Return the first accepted type (and it is returned as the same text as what
75 -appears in the `types` array). If nothing in `types` is accepted, then `false`
76 -is returned.
77 -
78 -The `types` array can contain full MIME types or file extensions. Any value
79 -that is not a full MIME types is passed to `require('mime-types').lookup`.
80 -
81 -#### .types()
82 -
83 -Return the types that the request accepts, in the order of the client's
84 -preference (most preferred first).
85 -
86 -## Examples
87 -
88 -### Simple type negotiation
89 -
90 -This simple example shows how to use `accepts` to return a different typed
91 -respond body based on what the client wants to accept. The server lists it's
92 -preferences in order and will get back the best match between the client and
93 -server.
94 -
95 -```js
96 -var accepts = require('accepts')
97 -var http = require('http')
98 -
99 -function app (req, res) {
100 - var accept = accepts(req)
101 -
102 - // the order of this list is significant; should be server preferred order
103 - switch (accept.type(['json', 'html'])) {
104 - case 'json':
105 - res.setHeader('Content-Type', 'application/json')
106 - res.write('{"hello":"world!"}')
107 - break
108 - case 'html':
109 - res.setHeader('Content-Type', 'text/html')
110 - res.write('<b>hello, world!</b>')
111 - break
112 - default:
113 - // the fallback is text/plain, so no need to specify it above
114 - res.setHeader('Content-Type', 'text/plain')
115 - res.write('hello, world!')
116 - break
117 - }
118 -
119 - res.end()
120 -}
121 -
122 -http.createServer(app).listen(3000)
123 -```
124 -
125 -You can test this out with the cURL program:
126 -```sh
127 -curl -I -H'Accept: text/html' http://localhost:3000/
128 -```
129 -
130 -## License
131 -
132 -[MIT](LICENSE)
133 -
134 -[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/accepts/master
135 -[coveralls-url]: https://coveralls.io/r/jshttp/accepts?branch=master
136 -[node-version-image]: https://badgen.net/npm/node/accepts
137 -[node-version-url]: https://nodejs.org/en/download
138 -[npm-downloads-image]: https://badgen.net/npm/dm/accepts
139 -[npm-url]: https://npmjs.org/package/accepts
140 -[npm-version-image]: https://badgen.net/npm/v/accepts
141 -[travis-image]: https://badgen.net/travis/jshttp/accepts/master
142 -[travis-url]: https://travis-ci.org/jshttp/accepts
1 -/*!
2 - * accepts
3 - * Copyright(c) 2014 Jonathan Ong
4 - * Copyright(c) 2015 Douglas Christopher Wilson
5 - * MIT Licensed
6 - */
7 -
8 -'use strict'
9 -
10 -/**
11 - * Module dependencies.
12 - * @private
13 - */
14 -
15 -var Negotiator = require('negotiator')
16 -var mime = require('mime-types')
17 -
18 -/**
19 - * Module exports.
20 - * @public
21 - */
22 -
23 -module.exports = Accepts
24 -
25 -/**
26 - * Create a new Accepts object for the given req.
27 - *
28 - * @param {object} req
29 - * @public
30 - */
31 -
32 -function Accepts (req) {
33 - if (!(this instanceof Accepts)) {
34 - return new Accepts(req)
35 - }
36 -
37 - this.headers = req.headers
38 - this.negotiator = new Negotiator(req)
39 -}
40 -
41 -/**
42 - * Check if the given `type(s)` is acceptable, returning
43 - * the best match when true, otherwise `undefined`, in which
44 - * case you should respond with 406 "Not Acceptable".
45 - *
46 - * The `type` value may be a single mime type string
47 - * such as "application/json", the extension name
48 - * such as "json" or an array `["json", "html", "text/plain"]`. When a list
49 - * or array is given the _best_ match, if any is returned.
50 - *
51 - * Examples:
52 - *
53 - * // Accept: text/html
54 - * this.types('html');
55 - * // => "html"
56 - *
57 - * // Accept: text/*, application/json
58 - * this.types('html');
59 - * // => "html"
60 - * this.types('text/html');
61 - * // => "text/html"
62 - * this.types('json', 'text');
63 - * // => "json"
64 - * this.types('application/json');
65 - * // => "application/json"
66 - *
67 - * // Accept: text/*, application/json
68 - * this.types('image/png');
69 - * this.types('png');
70 - * // => undefined
71 - *
72 - * // Accept: text/*;q=.5, application/json
73 - * this.types(['html', 'json']);
74 - * this.types('html', 'json');
75 - * // => "json"
76 - *
77 - * @param {String|Array} types...
78 - * @return {String|Array|Boolean}
79 - * @public
80 - */
81 -
82 -Accepts.prototype.type =
83 -Accepts.prototype.types = function (types_) {
84 - var types = types_
85 -
86 - // support flattened arguments
87 - if (types && !Array.isArray(types)) {
88 - types = new Array(arguments.length)
89 - for (var i = 0; i < types.length; i++) {
90 - types[i] = arguments[i]
91 - }
92 - }
93 -
94 - // no types, return all requested types
95 - if (!types || types.length === 0) {
96 - return this.negotiator.mediaTypes()
97 - }
98 -
99 - // no accept header, return first given type
100 - if (!this.headers.accept) {
101 - return types[0]
102 - }
103 -
104 - var mimes = types.map(extToMime)
105 - var accepts = this.negotiator.mediaTypes(mimes.filter(validMime))
106 - var first = accepts[0]
107 -
108 - return first
109 - ? types[mimes.indexOf(first)]
110 - : false
111 -}
112 -
113 -/**
114 - * Return accepted encodings or best fit based on `encodings`.
115 - *
116 - * Given `Accept-Encoding: gzip, deflate`
117 - * an array sorted by quality is returned:
118 - *
119 - * ['gzip', 'deflate']
120 - *
121 - * @param {String|Array} encodings...
122 - * @return {String|Array}
123 - * @public
124 - */
125 -
126 -Accepts.prototype.encoding =
127 -Accepts.prototype.encodings = function (encodings_) {
128 - var encodings = encodings_
129 -
130 - // support flattened arguments
131 - if (encodings && !Array.isArray(encodings)) {
132 - encodings = new Array(arguments.length)
133 - for (var i = 0; i < encodings.length; i++) {
134 - encodings[i] = arguments[i]
135 - }
136 - }
137 -
138 - // no encodings, return all requested encodings
139 - if (!encodings || encodings.length === 0) {
140 - return this.negotiator.encodings()
141 - }
142 -
143 - return this.negotiator.encodings(encodings)[0] || false
144 -}
145 -
146 -/**
147 - * Return accepted charsets or best fit based on `charsets`.
148 - *
149 - * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`
150 - * an array sorted by quality is returned:
151 - *
152 - * ['utf-8', 'utf-7', 'iso-8859-1']
153 - *
154 - * @param {String|Array} charsets...
155 - * @return {String|Array}
156 - * @public
157 - */
158 -
159 -Accepts.prototype.charset =
160 -Accepts.prototype.charsets = function (charsets_) {
161 - var charsets = charsets_
162 -
163 - // support flattened arguments
164 - if (charsets && !Array.isArray(charsets)) {
165 - charsets = new Array(arguments.length)
166 - for (var i = 0; i < charsets.length; i++) {
167 - charsets[i] = arguments[i]
168 - }
169 - }
170 -
171 - // no charsets, return all requested charsets
172 - if (!charsets || charsets.length === 0) {
173 - return this.negotiator.charsets()
174 - }
175 -
176 - return this.negotiator.charsets(charsets)[0] || false
177 -}
178 -
179 -/**
180 - * Return accepted languages or best fit based on `langs`.
181 - *
182 - * Given `Accept-Language: en;q=0.8, es, pt`
183 - * an array sorted by quality is returned:
184 - *
185 - * ['es', 'pt', 'en']
186 - *
187 - * @param {String|Array} langs...
188 - * @return {Array|String}
189 - * @public
190 - */
191 -
192 -Accepts.prototype.lang =
193 -Accepts.prototype.langs =
194 -Accepts.prototype.language =
195 -Accepts.prototype.languages = function (languages_) {
196 - var languages = languages_
197 -
198 - // support flattened arguments
199 - if (languages && !Array.isArray(languages)) {
200 - languages = new Array(arguments.length)
201 - for (var i = 0; i < languages.length; i++) {
202 - languages[i] = arguments[i]
203 - }
204 - }
205 -
206 - // no languages, return all requested languages
207 - if (!languages || languages.length === 0) {
208 - return this.negotiator.languages()
209 - }
210 -
211 - return this.negotiator.languages(languages)[0] || false
212 -}
213 -
214 -/**
215 - * Convert extnames to mime.
216 - *
217 - * @param {String} type
218 - * @return {String}
219 - * @private
220 - */
221 -
222 -function extToMime (type) {
223 - return type.indexOf('/') === -1
224 - ? mime.lookup(type)
225 - : type
226 -}
227 -
228 -/**
229 - * Check if mime is valid.
230 - *
231 - * @param {String} type
232 - * @return {String}
233 - * @private
234 - */
235 -
236 -function validMime (type) {
237 - return typeof type === 'string'
238 -}
1 -{
2 - "_from": "accepts@~1.3.7",
3 - "_id": "accepts@1.3.7",
4 - "_inBundle": false,
5 - "_integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
6 - "_location": "/accepts",
7 - "_phantomChildren": {},
8 - "_requested": {
9 - "type": "range",
10 - "registry": true,
11 - "raw": "accepts@~1.3.7",
12 - "name": "accepts",
13 - "escapedName": "accepts",
14 - "rawSpec": "~1.3.7",
15 - "saveSpec": null,
16 - "fetchSpec": "~1.3.7"
17 - },
18 - "_requiredBy": [
19 - "/express"
20 - ],
21 - "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
22 - "_shasum": "531bc726517a3b2b41f850021c6cc15eaab507cd",
23 - "_spec": "accepts@~1.3.7",
24 - "_where": "C:\\Users\\LG\\Desktop\\4-1\\오픈소스\\Reminder-Talk\\node_modules\\express",
25 - "bugs": {
26 - "url": "https://github.com/jshttp/accepts/issues"
27 - },
28 - "bundleDependencies": false,
29 - "contributors": [
30 - {
31 - "name": "Douglas Christopher Wilson",
32 - "email": "doug@somethingdoug.com"
33 - },
34 - {
35 - "name": "Jonathan Ong",
36 - "email": "me@jongleberry.com",
37 - "url": "http://jongleberry.com"
38 - }
39 - ],
40 - "dependencies": {
41 - "mime-types": "~2.1.24",
42 - "negotiator": "0.6.2"
43 - },
44 - "deprecated": false,
45 - "description": "Higher-level content negotiation",
46 - "devDependencies": {
47 - "deep-equal": "1.0.1",
48 - "eslint": "5.16.0",
49 - "eslint-config-standard": "12.0.0",
50 - "eslint-plugin-import": "2.17.2",
51 - "eslint-plugin-markdown": "1.0.0",
52 - "eslint-plugin-node": "8.0.1",
53 - "eslint-plugin-promise": "4.1.1",
54 - "eslint-plugin-standard": "4.0.0",
55 - "mocha": "6.1.4",
56 - "nyc": "14.0.0"
57 - },
58 - "engines": {
59 - "node": ">= 0.6"
60 - },
61 - "files": [
62 - "LICENSE",
63 - "HISTORY.md",
64 - "index.js"
65 - ],
66 - "homepage": "https://github.com/jshttp/accepts#readme",
67 - "keywords": [
68 - "content",
69 - "negotiation",
70 - "accept",
71 - "accepts"
72 - ],
73 - "license": "MIT",
74 - "name": "accepts",
75 - "repository": {
76 - "type": "git",
77 - "url": "git+https://github.com/jshttp/accepts.git"
78 - },
79 - "scripts": {
80 - "lint": "eslint --plugin markdown --ext js,md .",
81 - "test": "mocha --reporter spec --check-leaks --bail test/",
82 - "test-cov": "nyc --reporter=html --reporter=text npm test",
83 - "test-travis": "nyc --reporter=text npm test"
84 - },
85 - "version": "1.3.7"
86 -}
1 -sudo: false
2 -
3 -language: node_js
4 -
5 -node_js:
6 - - "4"
7 - - "5"
8 - - "6"
9 - - "7"
10 - - "8"
11 - - "9"
12 - - "10"
13 -
14 -install:
15 - - PATH="`npm bin`:`npm bin -g`:$PATH"
16 - # Install dependencies and build
17 - - npm install
18 -
19 -script:
20 - # Output useful info for debugging
21 - - node --version
22 - - npm --version
23 - # Run tests
24 - - npm test
1 -
2 -4.2.0 / 2018-01-15
3 -==================
4 -
5 - * Add support for returning an `http.Agent` instance
6 - * Optimize promisifying logic
7 - * Set `timeout` to null for proper cleanup
8 - * Remove Node.js <= 0.11.3 special-casing from test case
9 -
10 -4.1.2 / 2017-11-20
11 -==================
12 -
13 - * test Node 9 on Travis
14 - * ensure that `https.get()` uses the patched `https.request()`
15 -
16 -4.1.1 / 2017-07-20
17 -==================
18 -
19 - * Correct `https.request()` with a String (#9)
20 -
21 -4.1.0 / 2017-06-26
22 -==================
23 -
24 - * mix in Agent options into Request options
25 - * throw when nothing is returned from agent-base callback
26 - * do not modify the options object for https requests
27 -
28 -4.0.1 / 2017-06-13
29 -==================
30 -
31 - * add `this` context tests and fixes
32 -
33 -4.0.0 / 2017-06-06
34 -==================
35 -
36 - * drop support for Node.js < 4
37 - * drop old versions of Node.js from Travis-CI
38 - * specify Node.js >= 4.0.0 in `engines.node`
39 - * remove more old code
40 - * remove "extend" dependency
41 - * remove "semver" dependency
42 - * make the Promise logic a bit cleaner
43 - * add async function pseudo-example to README
44 - * use direct return in README example
45 -
46 -3.0.0 / 2017-06-02
47 -==================
48 -
49 - * drop support for Node.js v0.8 and v0.10
50 - * add support for async, Promises, and direct return
51 - * add a couple `options` test cases
52 - * implement a `"timeout"` option
53 - * rename main file to `index.js`
54 - * test Node 8 on Travis
55 -
56 -2.1.1 / 2017-05-30
57 -==================
58 -
59 - * Revert [`fe2162e`](https://github.com/TooTallNate/node-agent-base/commit/fe2162e0ba18123f5b301cba4de1e9dd74e437cd) and [`270bdc9`](https://github.com/TooTallNate/node-agent-base/commit/270bdc92eb8e3bd0444d1e5266e8e9390aeb3095) (fixes #7)
60 -
61 -2.1.0 / 2017-05-26
62 -==================
63 -
64 - * unref is not supported for node < 0.9.1 (@pi0)
65 - * add tests to dangling socket (@pi0)
66 - * check unref() is supported (@pi0)
67 - * fix dangling sockets problem (@pi0)
68 - * add basic "ws" module tests
69 - * make `Agent` be subclassable
70 - * turn `addRequest()` into a named function
71 - * test: Node.js v4 likes to call `cork` on the stream (#3, @tomhughes)
72 - * travis: test node v4, v5, v6 and v7
73 -
74 -2.0.1 / 2015-09-10
75 -==================
76 -
77 - * package: update "semver" to v5.0.1 for WebPack (#1, @vhpoet)
78 -
79 -2.0.0 / 2015-07-10
80 -==================
81 -
82 - * refactor to patch Node.js core for more consistent `opts` values
83 - * ensure that HTTP(s) default port numbers are always given
84 - * test: use ssl-cert-snakeoil SSL certs
85 - * test: add tests for arbitrary options
86 - * README: add API section
87 - * README: make the Agent HTTP/HTTPS generic in the example
88 - * README: use SVG for Travis-CI badge
89 -
90 -1.0.2 / 2015-06-27
91 -==================
92 -
93 - * agent: set `req._hadError` to true after emitting "error"
94 - * package: update "mocha" to v2
95 - * test: add artificial HTTP GET request test
96 - * test: add artificial data events test
97 - * test: fix artifical GET response test on node > v0.11.3
98 - * test: use a real timeout for the async error test
99 -
100 -1.0.1 / 2013-09-09
101 -==================
102 -
103 - * Fix passing an "error" object to the callback function on the first tick
104 -
105 -1.0.0 / 2013-09-09
106 -==================
107 -
108 - * New API: now you pass a callback function directly
109 -
110 -0.0.1 / 2013-07-09
111 -==================
112 -
113 - * Initial release
1 -agent-base
2 -==========
3 -### Turn a function into an [`http.Agent`][http.Agent] instance
4 -[![Build Status](https://travis-ci.org/TooTallNate/node-agent-base.svg?branch=master)](https://travis-ci.org/TooTallNate/node-agent-base)
5 -
6 -This module provides an `http.Agent` generator. That is, you pass it an async
7 -callback function, and it returns a new `http.Agent` instance that will invoke the
8 -given callback function when sending outbound HTTP requests.
9 -
10 -#### Some subclasses:
11 -
12 -Here's some more interesting uses of `agent-base`.
13 -Send a pull request to list yours!
14 -
15 - * [`http-proxy-agent`][http-proxy-agent]: An HTTP(s) proxy `http.Agent` implementation for HTTP endpoints
16 - * [`https-proxy-agent`][https-proxy-agent]: An HTTP(s) proxy `http.Agent` implementation for HTTPS endpoints
17 - * [`pac-proxy-agent`][pac-proxy-agent]: A PAC file proxy `http.Agent` implementation for HTTP and HTTPS
18 - * [`socks-proxy-agent`][socks-proxy-agent]: A SOCKS (v4a) proxy `http.Agent` implementation for HTTP and HTTPS
19 -
20 -
21 -Installation
22 -------------
23 -
24 -Install with `npm`:
25 -
26 -``` bash
27 -$ npm install agent-base
28 -```
29 -
30 -
31 -Example
32 --------
33 -
34 -Here's a minimal example that creates a new `net.Socket` connection to the server
35 -for every HTTP request (i.e. the equivalent of `agent: false` option):
36 -
37 -```js
38 -var net = require('net');
39 -var tls = require('tls');
40 -var url = require('url');
41 -var http = require('http');
42 -var agent = require('agent-base');
43 -
44 -var endpoint = 'http://nodejs.org/api/';
45 -var parsed = url.parse(endpoint);
46 -
47 -// This is the important part!
48 -parsed.agent = agent(function (req, opts) {
49 - var socket;
50 - // `secureEndpoint` is true when using the https module
51 - if (opts.secureEndpoint) {
52 - socket = tls.connect(opts);
53 - } else {
54 - socket = net.connect(opts);
55 - }
56 - return socket;
57 -});
58 -
59 -// Everything else works just like normal...
60 -http.get(parsed, function (res) {
61 - console.log('"response" event!', res.headers);
62 - res.pipe(process.stdout);
63 -});
64 -```
65 -
66 -Returning a Promise or using an `async` function is also supported:
67 -
68 -```js
69 -agent(async function (req, opts) {
70 - await sleep(1000);
71 - // etc…
72 -});
73 -```
74 -
75 -Return another `http.Agent` instance to "pass through" the responsibility
76 -for that HTTP request to that agent:
77 -
78 -```js
79 -agent(function (req, opts) {
80 - return opts.secureEndpoint ? https.globalAgent : http.globalAgent;
81 -});
82 -```
83 -
84 -
85 -API
86 ----
87 -
88 -## Agent(Function callback[, Object options]) → [http.Agent][]
89 -
90 -Creates a base `http.Agent` that will execute the callback function `callback`
91 -for every HTTP request that it is used as the `agent` for. The callback function
92 -is responsible for creating a `stream.Duplex` instance of some kind that will be
93 -used as the underlying socket in the HTTP request.
94 -
95 -The `options` object accepts the following properties:
96 -
97 - * `timeout` - Number - Timeout for the `callback()` function in milliseconds. Defaults to Infinity (optional).
98 -
99 -The callback function should have the following signature:
100 -
101 -### callback(http.ClientRequest req, Object options, Function cb) → undefined
102 -
103 -The ClientRequest `req` can be accessed to read request headers and
104 -and the path, etc. The `options` object contains the options passed
105 -to the `http.request()`/`https.request()` function call, and is formatted
106 -to be directly passed to `net.connect()`/`tls.connect()`, or however
107 -else you want a Socket to be created. Pass the created socket to
108 -the callback function `cb` once created, and the HTTP request will
109 -continue to proceed.
110 -
111 -If the `https` module is used to invoke the HTTP request, then the
112 -`secureEndpoint` property on `options` _will be set to `true`_.
113 -
114 -
115 -License
116 --------
117 -
118 -(The MIT License)
119 -
120 -Copyright (c) 2013 Nathan Rajlich &lt;nathan@tootallnate.net&gt;
121 -
122 -Permission is hereby granted, free of charge, to any person obtaining
123 -a copy of this software and associated documentation files (the
124 -'Software'), to deal in the Software without restriction, including
125 -without limitation the rights to use, copy, modify, merge, publish,
126 -distribute, sublicense, and/or sell copies of the Software, and to
127 -permit persons to whom the Software is furnished to do so, subject to
128 -the following conditions:
129 -
130 -The above copyright notice and this permission notice shall be
131 -included in all copies or substantial portions of the Software.
132 -
133 -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
134 -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
135 -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
136 -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
137 -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
138 -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
139 -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
140 -
141 -[http-proxy-agent]: https://github.com/TooTallNate/node-http-proxy-agent
142 -[https-proxy-agent]: https://github.com/TooTallNate/node-https-proxy-agent
143 -[pac-proxy-agent]: https://github.com/TooTallNate/node-pac-proxy-agent
144 -[socks-proxy-agent]: https://github.com/TooTallNate/node-socks-proxy-agent
145 -[http.Agent]: https://nodejs.org/api/http.html#http_class_http_agent
1 -// Type definitions for agent-base 4.2.1
2 -// Project: https://github.com/TooTallNate/node-agent-base
3 -// Definitions by: Christopher Quadflieg <https://github.com/Shinigami92>
4 -
5 -/// <reference types="node" />
6 -import { EventEmitter } from 'events';
7 -
8 -declare namespace Agent {
9 - export type AgentCallback = (
10 - req?: any,
11 - opts?: {
12 - secureEndpoint: boolean;
13 - }
14 - ) => void;
15 -
16 - export interface AgentOptions {
17 - timeout?: number;
18 - host?: string;
19 - port?: number;
20 - [key: string]: any;
21 - }
22 -
23 - export interface Agent extends EventEmitter {
24 - _promisifiedCallback: boolean;
25 - timeout: number | null;
26 - options?: AgentOptions;
27 - callback: AgentCallback;
28 - addRequest: (req?: any, opts?: any) => void;
29 - freeSocket: (socket: any, opts: any) => void;
30 - }
31 -}
32 -
33 -/**
34 - * Base `http.Agent` implementation.
35 - * No pooling/keep-alive is implemented by default.
36 - */
37 -declare function Agent(opts?: Agent.AgentOptions): Agent.Agent;
38 -declare function Agent(
39 - callback: Agent.AgentCallback,
40 - opts?: Agent.AgentOptions
41 -): Agent.Agent;
42 -
43 -export = Agent;
1 -'use strict';
2 -require('./patch-core');
3 -const inherits = require('util').inherits;
4 -const promisify = require('es6-promisify');
5 -const EventEmitter = require('events').EventEmitter;
6 -
7 -module.exports = Agent;
8 -
9 -function isAgent(v) {
10 - return v && typeof v.addRequest === 'function';
11 -}
12 -
13 -/**
14 - * Base `http.Agent` implementation.
15 - * No pooling/keep-alive is implemented by default.
16 - *
17 - * @param {Function} callback
18 - * @api public
19 - */
20 -function Agent(callback, _opts) {
21 - if (!(this instanceof Agent)) {
22 - return new Agent(callback, _opts);
23 - }
24 -
25 - EventEmitter.call(this);
26 -
27 - // The callback gets promisified if it has 3 parameters
28 - // (i.e. it has a callback function) lazily
29 - this._promisifiedCallback = false;
30 -
31 - let opts = _opts;
32 - if ('function' === typeof callback) {
33 - this.callback = callback;
34 - } else if (callback) {
35 - opts = callback;
36 - }
37 -
38 - // timeout for the socket to be returned from the callback
39 - this.timeout = (opts && opts.timeout) || null;
40 -
41 - this.options = opts;
42 -}
43 -inherits(Agent, EventEmitter);
44 -
45 -/**
46 - * Override this function in your subclass!
47 - */
48 -Agent.prototype.callback = function callback(req, opts) {
49 - throw new Error(
50 - '"agent-base" has no default implementation, you must subclass and override `callback()`'
51 - );
52 -};
53 -
54 -/**
55 - * Called by node-core's "_http_client.js" module when creating
56 - * a new HTTP request with this Agent instance.
57 - *
58 - * @api public
59 - */
60 -Agent.prototype.addRequest = function addRequest(req, _opts) {
61 - const ownOpts = Object.assign({}, _opts);
62 -
63 - // Set default `host` for HTTP to localhost
64 - if (null == ownOpts.host) {
65 - ownOpts.host = 'localhost';
66 - }
67 -
68 - // Set default `port` for HTTP if none was explicitly specified
69 - if (null == ownOpts.port) {
70 - ownOpts.port = ownOpts.secureEndpoint ? 443 : 80;
71 - }
72 -
73 - const opts = Object.assign({}, this.options, ownOpts);
74 -
75 - if (opts.host && opts.path) {
76 - // If both a `host` and `path` are specified then it's most likely the
77 - // result of a `url.parse()` call... we need to remove the `path` portion so
78 - // that `net.connect()` doesn't attempt to open that as a unix socket file.
79 - delete opts.path;
80 - }
81 -
82 - delete opts.agent;
83 - delete opts.hostname;
84 - delete opts._defaultAgent;
85 - delete opts.defaultPort;
86 - delete opts.createConnection;
87 -
88 - // Hint to use "Connection: close"
89 - // XXX: non-documented `http` module API :(
90 - req._last = true;
91 - req.shouldKeepAlive = false;
92 -
93 - // Create the `stream.Duplex` instance
94 - let timeout;
95 - let timedOut = false;
96 - const timeoutMs = this.timeout;
97 - const freeSocket = this.freeSocket;
98 -
99 - function onerror(err) {
100 - if (req._hadError) return;
101 - req.emit('error', err);
102 - // For Safety. Some additional errors might fire later on
103 - // and we need to make sure we don't double-fire the error event.
104 - req._hadError = true;
105 - }
106 -
107 - function ontimeout() {
108 - timeout = null;
109 - timedOut = true;
110 - const err = new Error(
111 - 'A "socket" was not created for HTTP request before ' + timeoutMs + 'ms'
112 - );
113 - err.code = 'ETIMEOUT';
114 - onerror(err);
115 - }
116 -
117 - function callbackError(err) {
118 - if (timedOut) return;
119 - if (timeout != null) {
120 - clearTimeout(timeout);
121 - timeout = null;
122 - }
123 - onerror(err);
124 - }
125 -
126 - function onsocket(socket) {
127 - if (timedOut) return;
128 - if (timeout != null) {
129 - clearTimeout(timeout);
130 - timeout = null;
131 - }
132 - if (isAgent(socket)) {
133 - // `socket` is actually an http.Agent instance, so relinquish
134 - // responsibility for this `req` to the Agent from here on
135 - socket.addRequest(req, opts);
136 - } else if (socket) {
137 - function onfree() {
138 - freeSocket(socket, opts);
139 - }
140 - socket.on('free', onfree);
141 - req.onSocket(socket);
142 - } else {
143 - const err = new Error(
144 - 'no Duplex stream was returned to agent-base for `' + req.method + ' ' + req.path + '`'
145 - );
146 - onerror(err);
147 - }
148 - }
149 -
150 - if (!this._promisifiedCallback && this.callback.length >= 3) {
151 - // Legacy callback function - convert to a Promise
152 - this.callback = promisify(this.callback, this);
153 - this._promisifiedCallback = true;
154 - }
155 -
156 - if (timeoutMs > 0) {
157 - timeout = setTimeout(ontimeout, timeoutMs);
158 - }
159 -
160 - try {
161 - Promise.resolve(this.callback(req, opts)).then(onsocket, callbackError);
162 - } catch (err) {
163 - Promise.reject(err).catch(callbackError);
164 - }
165 -};
166 -
167 -Agent.prototype.freeSocket = function freeSocket(socket, opts) {
168 - // TODO reuse sockets
169 - socket.destroy();
170 -};
1 -{
2 - "_from": "agent-base@^4.3.0",
3 - "_id": "agent-base@4.3.0",
4 - "_inBundle": false,
5 - "_integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
6 - "_location": "/agent-base",
7 - "_phantomChildren": {},
8 - "_requested": {
9 - "type": "range",
10 - "registry": true,
11 - "raw": "agent-base@^4.3.0",
12 - "name": "agent-base",
13 - "escapedName": "agent-base",
14 - "rawSpec": "^4.3.0",
15 - "saveSpec": null,
16 - "fetchSpec": "^4.3.0"
17 - },
18 - "_requiredBy": [
19 - "/https-proxy-agent"
20 - ],
21 - "_resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
22 - "_shasum": "8165f01c436009bccad0b1d122f05ed770efc6ee",
23 - "_spec": "agent-base@^4.3.0",
24 - "_where": "C:\\Users\\LG\\Desktop\\4-1\\오픈소스\\Reminder-Talk\\node_modules\\https-proxy-agent",
25 - "author": {
26 - "name": "Nathan Rajlich",
27 - "email": "nathan@tootallnate.net",
28 - "url": "http://n8.io/"
29 - },
30 - "bugs": {
31 - "url": "https://github.com/TooTallNate/node-agent-base/issues"
32 - },
33 - "bundleDependencies": false,
34 - "dependencies": {
35 - "es6-promisify": "^5.0.0"
36 - },
37 - "deprecated": false,
38 - "description": "Turn a function into an `http.Agent` instance",
39 - "devDependencies": {
40 - "@types/es6-promisify": "^5.0.0",
41 - "@types/node": "^10.5.3",
42 - "mocha": "^3.4.2",
43 - "ws": "^3.0.0"
44 - },
45 - "engines": {
46 - "node": ">= 4.0.0"
47 - },
48 - "homepage": "https://github.com/TooTallNate/node-agent-base#readme",
49 - "keywords": [
50 - "http",
51 - "agent",
52 - "base",
53 - "barebones",
54 - "https"
55 - ],
56 - "license": "MIT",
57 - "main": "./index.js",
58 - "name": "agent-base",
59 - "repository": {
60 - "type": "git",
61 - "url": "git://github.com/TooTallNate/node-agent-base.git"
62 - },
63 - "scripts": {
64 - "test": "mocha --reporter spec"
65 - },
66 - "version": "4.3.0"
67 -}
1 -'use strict';
2 -const url = require('url');
3 -const https = require('https');
4 -
5 -/**
6 - * This currently needs to be applied to all Node.js versions
7 - * in order to determine if the `req` is an HTTP or HTTPS request.
8 - *
9 - * There is currently no PR attempting to move this property upstream.
10 - */
11 -const patchMarker = "__agent_base_https_request_patched__";
12 -if (!https.request[patchMarker]) {
13 - https.request = (function(request) {
14 - return function(_options, cb) {
15 - let options;
16 - if (typeof _options === 'string') {
17 - options = url.parse(_options);
18 - } else {
19 - options = Object.assign({}, _options);
20 - }
21 - if (null == options.port) {
22 - options.port = 443;
23 - }
24 - options.secureEndpoint = true;
25 - return request.call(https, options, cb);
26 - };
27 - })(https.request);
28 - https.request[patchMarker] = true;
29 -}
30 -
31 -/**
32 - * This is needed for Node.js >= 9.0.0 to make sure `https.get()` uses the
33 - * patched `https.request()`.
34 - *
35 - * Ref: https://github.com/nodejs/node/commit/5118f31
36 - */
37 -https.get = function (_url, _options, cb) {
38 - let options;
39 - if (typeof _url === 'string' && _options && typeof _options !== 'function') {
40 - options = Object.assign({}, url.parse(_url), _options);
41 - } else if (!_options && !cb) {
42 - options = _url;
43 - } else if (!cb) {
44 - options = _url;
45 - cb = _options;
46 - }
47 -
48 - const req = https.request(options, cb);
49 - req.end();
50 - return req;
51 -};
1 ------BEGIN RSA PRIVATE KEY-----
2 -MIICWwIBAAKBgQCzURxIqzer0ACAbX/lHdsn4Gd9PLKrf7EeDYfIdV0HZKPD8WDr
3 -bBx2/fBu0OW2sjnzv/SVZbJ0DAuPE/p0+eT0qb2qC10iz9iTD7ribd7gxhirVb8y
4 -b3fBjXsxc8V8p4Ny1LcvNSqCjwUbJqdRogfoJeTiqPM58z5sNzuv5iq7iwIDAQAB
5 -AoGAPMQy4olrP0UotlzlJ36bowLP70ffgHCwU+/f4NWs5fF78c3du0oSx1w820Dd
6 -Z7E0JF8bgnlJJTxjumPZz0RUCugrEHBKJmzEz3cxF5E3+7NvteZcjKn9D67RrM5x
7 -1/uSZ9cqKE9cYvY4fSuHx18diyZ4axR/wB1Pea2utjjDM+ECQQDb9ZbmmaWMiRpQ
8 -5Up+loxP7BZNPsEVsm+DVJmEFbaFgGfncWBqSIqnPNjMwTwj0OigTwCAEGPkfRVW
9 -T0pbYWCxAkEA0LK7SCTwzyDmhASUalk0x+3uCAA6ryFdwJf/wd8TRAvVOmkTEldX
10 -uJ7ldLvfrONYO3v56uKTU/SoNdZYzKtO+wJAX2KM4ctXYy5BXztPpr2acz4qHa1N
11 -Bh+vBAC34fOYhyQ76r3b1btHhWZ5jbFuZwm9F2erC94Ps5IaoqcX07DSwQJAPKGw
12 -h2U0EPkd/3zVIZCJJQya+vgWFIs9EZcXVtvYXQyTBkVApTN66MhBIYjzkub5205J
13 -bVQmOV37AKklY1DhwQJAA1wos0cYxro02edzatxd0DIR2r4qqOqLkw6BhYHhq6HJ
14 -ZvIcQkHqdSXzdETFc01I1znDGGIrJHcnvKWgBPoEUg==
15 ------END RSA PRIVATE KEY-----
1 ------BEGIN CERTIFICATE-----
2 -MIIB1TCCAT4CCQDV5mPlzm9+izANBgkqhkiG9w0BAQUFADAvMS0wKwYDVQQDEyQ3
3 -NTI3YmQ3Ny1hYjNlLTQ3NGItYWNlNy1lZWQ2MDUzOTMxZTcwHhcNMTUwNzA2MjI0
4 -NTA3WhcNMjUwNzAzMjI0NTA3WjAvMS0wKwYDVQQDEyQ3NTI3YmQ3Ny1hYjNlLTQ3
5 -NGItYWNlNy1lZWQ2MDUzOTMxZTcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
6 -ALNRHEirN6vQAIBtf+Ud2yfgZ308sqt/sR4Nh8h1XQdko8PxYOtsHHb98G7Q5bay
7 -OfO/9JVlsnQMC48T+nT55PSpvaoLXSLP2JMPuuJt3uDGGKtVvzJvd8GNezFzxXyn
8 -g3LUty81KoKPBRsmp1GiB+gl5OKo8znzPmw3O6/mKruLAgMBAAEwDQYJKoZIhvcN
9 -AQEFBQADgYEACzoHUF8UV2Z6541Q2wKEA0UFUzmUjf/E1XwBO+1P15ZZ64uw34B4
10 -1RwMPtAo9RY/PmICTWtNxWGxkzwb2JtDWtnxVER/lF8k2XcXPE76fxTHJF/BKk9J
11 -QU8OTD1dd9gHCBviQB9TqntRZ5X7axjtuWjb2umY+owBYzAHZkp1HKI=
12 ------END CERTIFICATE-----
This diff is collapsed. Click to expand it.
1 -var Ajv = require('ajv');
2 -var ajv = new Ajv({allErrors: true});
3 -
4 -var schema = {
5 - "properties": {
6 - "foo": { "type": "string" },
7 - "bar": { "type": "number", "maximum": 3 }
8 - }
9 -};
10 -
11 -var validate = ajv.compile(schema);
12 -
13 -test({"foo": "abc", "bar": 2});
14 -test({"foo": 2, "bar": 4});
15 -
16 -function test(data) {
17 - var valid = validate(data);
18 - if (valid) console.log('Valid!');
19 - else console.log('Invalid: ' + ajv.errorsText(validate.errors));
20 -}
...\ No newline at end of file ...\ No newline at end of file
1 -The MIT License (MIT)
2 -
3 -Copyright (c) 2015-2017 Evgeny Poberezkin
4 -
5 -Permission is hereby granted, free of charge, to any person obtaining a copy
6 -of this software and associated documentation files (the "Software"), to deal
7 -in the Software without restriction, including without limitation the rights
8 -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 -copies of the Software, and to permit persons to whom the Software is
10 -furnished to do so, subject to the following conditions:
11 -
12 -The above copyright notice and this permission notice shall be included in all
13 -copies or substantial portions of the Software.
14 -
15 -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 -SOFTWARE.
22 -
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
1 -'use strict';
2 -
3 -
4 -var Cache = module.exports = function Cache() {
5 - this._cache = {};
6 -};
7 -
8 -
9 -Cache.prototype.put = function Cache_put(key, value) {
10 - this._cache[key] = value;
11 -};
12 -
13 -
14 -Cache.prototype.get = function Cache_get(key) {
15 - return this._cache[key];
16 -};
17 -
18 -
19 -Cache.prototype.del = function Cache_del(key) {
20 - delete this._cache[key];
21 -};
22 -
23 -
24 -Cache.prototype.clear = function Cache_clear() {
25 - this._cache = {};
26 -};
1 -'use strict';
2 -
3 -var MissingRefError = require('./error_classes').MissingRef;
4 -
5 -module.exports = compileAsync;
6 -
7 -
8 -/**
9 - * Creates validating function for passed schema with asynchronous loading of missing schemas.
10 - * `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.
11 - * @this Ajv
12 - * @param {Object} schema schema object
13 - * @param {Boolean} meta optional true to compile meta-schema; this parameter can be skipped
14 - * @param {Function} callback an optional node-style callback, it is called with 2 parameters: error (or null) and validating function.
15 - * @return {Promise} promise that resolves with a validating function.
16 - */
17 -function compileAsync(schema, meta, callback) {
18 - /* eslint no-shadow: 0 */
19 - /* global Promise */
20 - /* jshint validthis: true */
21 - var self = this;
22 - if (typeof this._opts.loadSchema != 'function')
23 - throw new Error('options.loadSchema should be a function');
24 -
25 - if (typeof meta == 'function') {
26 - callback = meta;
27 - meta = undefined;
28 - }
29 -
30 - var p = loadMetaSchemaOf(schema).then(function () {
31 - var schemaObj = self._addSchema(schema, undefined, meta);
32 - return schemaObj.validate || _compileAsync(schemaObj);
33 - });
34 -
35 - if (callback) {
36 - p.then(
37 - function(v) { callback(null, v); },
38 - callback
39 - );
40 - }
41 -
42 - return p;
43 -
44 -
45 - function loadMetaSchemaOf(sch) {
46 - var $schema = sch.$schema;
47 - return $schema && !self.getSchema($schema)
48 - ? compileAsync.call(self, { $ref: $schema }, true)
49 - : Promise.resolve();
50 - }
51 -
52 -
53 - function _compileAsync(schemaObj) {
54 - try { return self._compile(schemaObj); }
55 - catch(e) {
56 - if (e instanceof MissingRefError) return loadMissingSchema(e);
57 - throw e;
58 - }
59 -
60 -
61 - function loadMissingSchema(e) {
62 - var ref = e.missingSchema;
63 - if (added(ref)) throw new Error('Schema ' + ref + ' is loaded but ' + e.missingRef + ' cannot be resolved');
64 -
65 - var schemaPromise = self._loadingSchemas[ref];
66 - if (!schemaPromise) {
67 - schemaPromise = self._loadingSchemas[ref] = self._opts.loadSchema(ref);
68 - schemaPromise.then(removePromise, removePromise);
69 - }
70 -
71 - return schemaPromise.then(function (sch) {
72 - if (!added(ref)) {
73 - return loadMetaSchemaOf(sch).then(function () {
74 - if (!added(ref)) self.addSchema(sch, ref, undefined, meta);
75 - });
76 - }
77 - }).then(function() {
78 - return _compileAsync(schemaObj);
79 - });
80 -
81 - function removePromise() {
82 - delete self._loadingSchemas[ref];
83 - }
84 -
85 - function added(ref) {
86 - return self._refs[ref] || self._schemas[ref];
87 - }
88 - }
89 - }
90 -}
1 -'use strict';
2 -
3 -// do NOT remove this file - it would break pre-compiled schemas
4 -// https://github.com/epoberezkin/ajv/issues/889
5 -module.exports = require('fast-deep-equal');
1 -'use strict';
2 -
3 -var resolve = require('./resolve');
4 -
5 -module.exports = {
6 - Validation: errorSubclass(ValidationError),
7 - MissingRef: errorSubclass(MissingRefError)
8 -};
9 -
10 -
11 -function ValidationError(errors) {
12 - this.message = 'validation failed';
13 - this.errors = errors;
14 - this.ajv = this.validation = true;
15 -}
16 -
17 -
18 -MissingRefError.message = function (baseId, ref) {
19 - return 'can\'t resolve reference ' + ref + ' from id ' + baseId;
20 -};
21 -
22 -
23 -function MissingRefError(baseId, ref, message) {
24 - this.message = message || MissingRefError.message(baseId, ref);
25 - this.missingRef = resolve.url(baseId, ref);
26 - this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef));
27 -}
28 -
29 -
30 -function errorSubclass(Subclass) {
31 - Subclass.prototype = Object.create(Error.prototype);
32 - Subclass.prototype.constructor = Subclass;
33 - return Subclass;
34 -}
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
1 -'use strict';
2 -
3 -var URI = require('uri-js')
4 - , equal = require('fast-deep-equal')
5 - , util = require('./util')
6 - , SchemaObject = require('./schema_obj')
7 - , traverse = require('json-schema-traverse');
8 -
9 -module.exports = resolve;
10 -
11 -resolve.normalizeId = normalizeId;
12 -resolve.fullPath = getFullPath;
13 -resolve.url = resolveUrl;
14 -resolve.ids = resolveIds;
15 -resolve.inlineRef = inlineRef;
16 -resolve.schema = resolveSchema;
17 -
18 -/**
19 - * [resolve and compile the references ($ref)]
20 - * @this Ajv
21 - * @param {Function} compile reference to schema compilation funciton (localCompile)
22 - * @param {Object} root object with information about the root schema for the current schema
23 - * @param {String} ref reference to resolve
24 - * @return {Object|Function} schema object (if the schema can be inlined) or validation function
25 - */
26 -function resolve(compile, root, ref) {
27 - /* jshint validthis: true */
28 - var refVal = this._refs[ref];
29 - if (typeof refVal == 'string') {
30 - if (this._refs[refVal]) refVal = this._refs[refVal];
31 - else return resolve.call(this, compile, root, refVal);
32 - }
33 -
34 - refVal = refVal || this._schemas[ref];
35 - if (refVal instanceof SchemaObject) {
36 - return inlineRef(refVal.schema, this._opts.inlineRefs)
37 - ? refVal.schema
38 - : refVal.validate || this._compile(refVal);
39 - }
40 -
41 - var res = resolveSchema.call(this, root, ref);
42 - var schema, v, baseId;
43 - if (res) {
44 - schema = res.schema;
45 - root = res.root;
46 - baseId = res.baseId;
47 - }
48 -
49 - if (schema instanceof SchemaObject) {
50 - v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId);
51 - } else if (schema !== undefined) {
52 - v = inlineRef(schema, this._opts.inlineRefs)
53 - ? schema
54 - : compile.call(this, schema, root, undefined, baseId);
55 - }
56 -
57 - return v;
58 -}
59 -
60 -
61 -/**
62 - * Resolve schema, its root and baseId
63 - * @this Ajv
64 - * @param {Object} root root object with properties schema, refVal, refs
65 - * @param {String} ref reference to resolve
66 - * @return {Object} object with properties schema, root, baseId
67 - */
68 -function resolveSchema(root, ref) {
69 - /* jshint validthis: true */
70 - var p = URI.parse(ref)
71 - , refPath = _getFullPath(p)
72 - , baseId = getFullPath(this._getId(root.schema));
73 - if (Object.keys(root.schema).length === 0 || refPath !== baseId) {
74 - var id = normalizeId(refPath);
75 - var refVal = this._refs[id];
76 - if (typeof refVal == 'string') {
77 - return resolveRecursive.call(this, root, refVal, p);
78 - } else if (refVal instanceof SchemaObject) {
79 - if (!refVal.validate) this._compile(refVal);
80 - root = refVal;
81 - } else {
82 - refVal = this._schemas[id];
83 - if (refVal instanceof SchemaObject) {
84 - if (!refVal.validate) this._compile(refVal);
85 - if (id == normalizeId(ref))
86 - return { schema: refVal, root: root, baseId: baseId };
87 - root = refVal;
88 - } else {
89 - return;
90 - }
91 - }
92 - if (!root.schema) return;
93 - baseId = getFullPath(this._getId(root.schema));
94 - }
95 - return getJsonPointer.call(this, p, baseId, root.schema, root);
96 -}
97 -
98 -
99 -/* @this Ajv */
100 -function resolveRecursive(root, ref, parsedRef) {
101 - /* jshint validthis: true */
102 - var res = resolveSchema.call(this, root, ref);
103 - if (res) {
104 - var schema = res.schema;
105 - var baseId = res.baseId;
106 - root = res.root;
107 - var id = this._getId(schema);
108 - if (id) baseId = resolveUrl(baseId, id);
109 - return getJsonPointer.call(this, parsedRef, baseId, schema, root);
110 - }
111 -}
112 -
113 -
114 -var PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']);
115 -/* @this Ajv */
116 -function getJsonPointer(parsedRef, baseId, schema, root) {
117 - /* jshint validthis: true */
118 - parsedRef.fragment = parsedRef.fragment || '';
119 - if (parsedRef.fragment.slice(0,1) != '/') return;
120 - var parts = parsedRef.fragment.split('/');
121 -
122 - for (var i = 1; i < parts.length; i++) {
123 - var part = parts[i];
124 - if (part) {
125 - part = util.unescapeFragment(part);
126 - schema = schema[part];
127 - if (schema === undefined) break;
128 - var id;
129 - if (!PREVENT_SCOPE_CHANGE[part]) {
130 - id = this._getId(schema);
131 - if (id) baseId = resolveUrl(baseId, id);
132 - if (schema.$ref) {
133 - var $ref = resolveUrl(baseId, schema.$ref);
134 - var res = resolveSchema.call(this, root, $ref);
135 - if (res) {
136 - schema = res.schema;
137 - root = res.root;
138 - baseId = res.baseId;
139 - }
140 - }
141 - }
142 - }
143 - }
144 - if (schema !== undefined && schema !== root.schema)
145 - return { schema: schema, root: root, baseId: baseId };
146 -}
147 -
148 -
149 -var SIMPLE_INLINED = util.toHash([
150 - 'type', 'format', 'pattern',
151 - 'maxLength', 'minLength',
152 - 'maxProperties', 'minProperties',
153 - 'maxItems', 'minItems',
154 - 'maximum', 'minimum',
155 - 'uniqueItems', 'multipleOf',
156 - 'required', 'enum'
157 -]);
158 -function inlineRef(schema, limit) {
159 - if (limit === false) return false;
160 - if (limit === undefined || limit === true) return checkNoRef(schema);
161 - else if (limit) return countKeys(schema) <= limit;
162 -}
163 -
164 -
165 -function checkNoRef(schema) {
166 - var item;
167 - if (Array.isArray(schema)) {
168 - for (var i=0; i<schema.length; i++) {
169 - item = schema[i];
170 - if (typeof item == 'object' && !checkNoRef(item)) return false;
171 - }
172 - } else {
173 - for (var key in schema) {
174 - if (key == '$ref') return false;
175 - item = schema[key];
176 - if (typeof item == 'object' && !checkNoRef(item)) return false;
177 - }
178 - }
179 - return true;
180 -}
181 -
182 -
183 -function countKeys(schema) {
184 - var count = 0, item;
185 - if (Array.isArray(schema)) {
186 - for (var i=0; i<schema.length; i++) {
187 - item = schema[i];
188 - if (typeof item == 'object') count += countKeys(item);
189 - if (count == Infinity) return Infinity;
190 - }
191 - } else {
192 - for (var key in schema) {
193 - if (key == '$ref') return Infinity;
194 - if (SIMPLE_INLINED[key]) {
195 - count++;
196 - } else {
197 - item = schema[key];
198 - if (typeof item == 'object') count += countKeys(item) + 1;
199 - if (count == Infinity) return Infinity;
200 - }
201 - }
202 - }
203 - return count;
204 -}
205 -
206 -
207 -function getFullPath(id, normalize) {
208 - if (normalize !== false) id = normalizeId(id);
209 - var p = URI.parse(id);
210 - return _getFullPath(p);
211 -}
212 -
213 -
214 -function _getFullPath(p) {
215 - return URI.serialize(p).split('#')[0] + '#';
216 -}
217 -
218 -
219 -var TRAILING_SLASH_HASH = /#\/?$/;
220 -function normalizeId(id) {
221 - return id ? id.replace(TRAILING_SLASH_HASH, '') : '';
222 -}
223 -
224 -
225 -function resolveUrl(baseId, id) {
226 - id = normalizeId(id);
227 - return URI.resolve(baseId, id);
228 -}
229 -
230 -
231 -/* @this Ajv */
232 -function resolveIds(schema) {
233 - var schemaId = normalizeId(this._getId(schema));
234 - var baseIds = {'': schemaId};
235 - var fullPaths = {'': getFullPath(schemaId, false)};
236 - var localRefs = {};
237 - var self = this;
238 -
239 - traverse(schema, {allKeys: true}, function(sch, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {
240 - if (jsonPtr === '') return;
241 - var id = self._getId(sch);
242 - var baseId = baseIds[parentJsonPtr];
243 - var fullPath = fullPaths[parentJsonPtr] + '/' + parentKeyword;
244 - if (keyIndex !== undefined)
245 - fullPath += '/' + (typeof keyIndex == 'number' ? keyIndex : util.escapeFragment(keyIndex));
246 -
247 - if (typeof id == 'string') {
248 - id = baseId = normalizeId(baseId ? URI.resolve(baseId, id) : id);
249 -
250 - var refVal = self._refs[id];
251 - if (typeof refVal == 'string') refVal = self._refs[refVal];
252 - if (refVal && refVal.schema) {
253 - if (!equal(sch, refVal.schema))
254 - throw new Error('id "' + id + '" resolves to more than one schema');
255 - } else if (id != normalizeId(fullPath)) {
256 - if (id[0] == '#') {
257 - if (localRefs[id] && !equal(sch, localRefs[id]))
258 - throw new Error('id "' + id + '" resolves to more than one schema');
259 - localRefs[id] = sch;
260 - } else {
261 - self._refs[id] = fullPath;
262 - }
263 - }
264 - }
265 - baseIds[jsonPtr] = baseId;
266 - fullPaths[jsonPtr] = fullPath;
267 - });
268 -
269 - return localRefs;
270 -}
1 -'use strict';
2 -
3 -var ruleModules = require('../dotjs')
4 - , toHash = require('./util').toHash;
5 -
6 -module.exports = function rules() {
7 - var RULES = [
8 - { type: 'number',
9 - rules: [ { 'maximum': ['exclusiveMaximum'] },
10 - { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] },
11 - { type: 'string',
12 - rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },
13 - { type: 'array',
14 - rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] },
15 - { type: 'object',
16 - rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames',
17 - { 'properties': ['additionalProperties', 'patternProperties'] } ] },
18 - { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] }
19 - ];
20 -
21 - var ALL = [ 'type', '$comment' ];
22 - var KEYWORDS = [
23 - '$schema', '$id', 'id', '$data', '$async', 'title',
24 - 'description', 'default', 'definitions',
25 - 'examples', 'readOnly', 'writeOnly',
26 - 'contentMediaType', 'contentEncoding',
27 - 'additionalItems', 'then', 'else'
28 - ];
29 - var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];
30 - RULES.all = toHash(ALL);
31 - RULES.types = toHash(TYPES);
32 -
33 - RULES.forEach(function (group) {
34 - group.rules = group.rules.map(function (keyword) {
35 - var implKeywords;
36 - if (typeof keyword == 'object') {
37 - var key = Object.keys(keyword)[0];
38 - implKeywords = keyword[key];
39 - keyword = key;
40 - implKeywords.forEach(function (k) {
41 - ALL.push(k);
42 - RULES.all[k] = true;
43 - });
44 - }
45 - ALL.push(keyword);
46 - var rule = RULES.all[keyword] = {
47 - keyword: keyword,
48 - code: ruleModules[keyword],
49 - implements: implKeywords
50 - };
51 - return rule;
52 - });
53 -
54 - RULES.all.$comment = {
55 - keyword: '$comment',
56 - code: ruleModules.$comment
57 - };
58 -
59 - if (group.type) RULES.types[group.type] = group;
60 - });
61 -
62 - RULES.keywords = toHash(ALL.concat(KEYWORDS));
63 - RULES.custom = {};
64 -
65 - return RULES;
66 -};
1 -'use strict';
2 -
3 -var util = require('./util');
4 -
5 -module.exports = SchemaObject;
6 -
7 -function SchemaObject(obj) {
8 - util.copy(obj, this);
9 -}
1 -'use strict';
2 -
3 -// https://mathiasbynens.be/notes/javascript-encoding
4 -// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode
5 -module.exports = function ucs2length(str) {
6 - var length = 0
7 - , len = str.length
8 - , pos = 0
9 - , value;
10 - while (pos < len) {
11 - length++;
12 - value = str.charCodeAt(pos++);
13 - if (value >= 0xD800 && value <= 0xDBFF && pos < len) {
14 - // high surrogate, and there is a next character
15 - value = str.charCodeAt(pos);
16 - if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate
17 - }
18 - }
19 - return length;
20 -};
1 -'use strict';
2 -
3 -
4 -module.exports = {
5 - copy: copy,
6 - checkDataType: checkDataType,
7 - checkDataTypes: checkDataTypes,
8 - coerceToTypes: coerceToTypes,
9 - toHash: toHash,
10 - getProperty: getProperty,
11 - escapeQuotes: escapeQuotes,
12 - equal: require('fast-deep-equal'),
13 - ucs2length: require('./ucs2length'),
14 - varOccurences: varOccurences,
15 - varReplace: varReplace,
16 - cleanUpCode: cleanUpCode,
17 - finalCleanUpCode: finalCleanUpCode,
18 - schemaHasRules: schemaHasRules,
19 - schemaHasRulesExcept: schemaHasRulesExcept,
20 - schemaUnknownRules: schemaUnknownRules,
21 - toQuotedString: toQuotedString,
22 - getPathExpr: getPathExpr,
23 - getPath: getPath,
24 - getData: getData,
25 - unescapeFragment: unescapeFragment,
26 - unescapeJsonPointer: unescapeJsonPointer,
27 - escapeFragment: escapeFragment,
28 - escapeJsonPointer: escapeJsonPointer
29 -};
30 -
31 -
32 -function copy(o, to) {
33 - to = to || {};
34 - for (var key in o) to[key] = o[key];
35 - return to;
36 -}
37 -
38 -
39 -function checkDataType(dataType, data, negate) {
40 - var EQUAL = negate ? ' !== ' : ' === '
41 - , AND = negate ? ' || ' : ' && '
42 - , OK = negate ? '!' : ''
43 - , NOT = negate ? '' : '!';
44 - switch (dataType) {
45 - case 'null': return data + EQUAL + 'null';
46 - case 'array': return OK + 'Array.isArray(' + data + ')';
47 - case 'object': return '(' + OK + data + AND +
48 - 'typeof ' + data + EQUAL + '"object"' + AND +
49 - NOT + 'Array.isArray(' + data + '))';
50 - case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND +
51 - NOT + '(' + data + ' % 1)' +
52 - AND + data + EQUAL + data + ')';
53 - default: return 'typeof ' + data + EQUAL + '"' + dataType + '"';
54 - }
55 -}
56 -
57 -
58 -function checkDataTypes(dataTypes, data) {
59 - switch (dataTypes.length) {
60 - case 1: return checkDataType(dataTypes[0], data, true);
61 - default:
62 - var code = '';
63 - var types = toHash(dataTypes);
64 - if (types.array && types.object) {
65 - code = types.null ? '(': '(!' + data + ' || ';
66 - code += 'typeof ' + data + ' !== "object")';
67 - delete types.null;
68 - delete types.array;
69 - delete types.object;
70 - }
71 - if (types.number) delete types.integer;
72 - for (var t in types)
73 - code += (code ? ' && ' : '' ) + checkDataType(t, data, true);
74 -
75 - return code;
76 - }
77 -}
78 -
79 -
80 -var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);
81 -function coerceToTypes(optionCoerceTypes, dataTypes) {
82 - if (Array.isArray(dataTypes)) {
83 - var types = [];
84 - for (var i=0; i<dataTypes.length; i++) {
85 - var t = dataTypes[i];
86 - if (COERCE_TO_TYPES[t]) types[types.length] = t;
87 - else if (optionCoerceTypes === 'array' && t === 'array') types[types.length] = t;
88 - }
89 - if (types.length) return types;
90 - } else if (COERCE_TO_TYPES[dataTypes]) {
91 - return [dataTypes];
92 - } else if (optionCoerceTypes === 'array' && dataTypes === 'array') {
93 - return ['array'];
94 - }
95 -}
96 -
97 -
98 -function toHash(arr) {
99 - var hash = {};
100 - for (var i=0; i<arr.length; i++) hash[arr[i]] = true;
101 - return hash;
102 -}
103 -
104 -
105 -var IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;
106 -var SINGLE_QUOTE = /'|\\/g;
107 -function getProperty(key) {
108 - return typeof key == 'number'
109 - ? '[' + key + ']'
110 - : IDENTIFIER.test(key)
111 - ? '.' + key
112 - : "['" + escapeQuotes(key) + "']";
113 -}
114 -
115 -
116 -function escapeQuotes(str) {
117 - return str.replace(SINGLE_QUOTE, '\\$&')
118 - .replace(/\n/g, '\\n')
119 - .replace(/\r/g, '\\r')
120 - .replace(/\f/g, '\\f')
121 - .replace(/\t/g, '\\t');
122 -}
123 -
124 -
125 -function varOccurences(str, dataVar) {
126 - dataVar += '[^0-9]';
127 - var matches = str.match(new RegExp(dataVar, 'g'));
128 - return matches ? matches.length : 0;
129 -}
130 -
131 -
132 -function varReplace(str, dataVar, expr) {
133 - dataVar += '([^0-9])';
134 - expr = expr.replace(/\$/g, '$$$$');
135 - return str.replace(new RegExp(dataVar, 'g'), expr + '$1');
136 -}
137 -
138 -
139 -var EMPTY_ELSE = /else\s*{\s*}/g
140 - , EMPTY_IF_NO_ELSE = /if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g
141 - , EMPTY_IF_WITH_ELSE = /if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g;
142 -function cleanUpCode(out) {
143 - return out.replace(EMPTY_ELSE, '')
144 - .replace(EMPTY_IF_NO_ELSE, '')
145 - .replace(EMPTY_IF_WITH_ELSE, 'if (!($1))');
146 -}
147 -
148 -
149 -var ERRORS_REGEXP = /[^v.]errors/g
150 - , REMOVE_ERRORS = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g
151 - , REMOVE_ERRORS_ASYNC = /var errors = 0;|var vErrors = null;/g
152 - , RETURN_VALID = 'return errors === 0;'
153 - , RETURN_TRUE = 'validate.errors = null; return true;'
154 - , RETURN_ASYNC = /if \(errors === 0\) return data;\s*else throw new ValidationError\(vErrors\);/
155 - , RETURN_DATA_ASYNC = 'return data;'
156 - , ROOTDATA_REGEXP = /[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g
157 - , REMOVE_ROOTDATA = /if \(rootData === undefined\) rootData = data;/;
158 -
159 -function finalCleanUpCode(out, async) {
160 - var matches = out.match(ERRORS_REGEXP);
161 - if (matches && matches.length == 2) {
162 - out = async
163 - ? out.replace(REMOVE_ERRORS_ASYNC, '')
164 - .replace(RETURN_ASYNC, RETURN_DATA_ASYNC)
165 - : out.replace(REMOVE_ERRORS, '')
166 - .replace(RETURN_VALID, RETURN_TRUE);
167 - }
168 -
169 - matches = out.match(ROOTDATA_REGEXP);
170 - if (!matches || matches.length !== 3) return out;
171 - return out.replace(REMOVE_ROOTDATA, '');
172 -}
173 -
174 -
175 -function schemaHasRules(schema, rules) {
176 - if (typeof schema == 'boolean') return !schema;
177 - for (var key in schema) if (rules[key]) return true;
178 -}
179 -
180 -
181 -function schemaHasRulesExcept(schema, rules, exceptKeyword) {
182 - if (typeof schema == 'boolean') return !schema && exceptKeyword != 'not';
183 - for (var key in schema) if (key != exceptKeyword && rules[key]) return true;
184 -}
185 -
186 -
187 -function schemaUnknownRules(schema, rules) {
188 - if (typeof schema == 'boolean') return;
189 - for (var key in schema) if (!rules[key]) return key;
190 -}
191 -
192 -
193 -function toQuotedString(str) {
194 - return '\'' + escapeQuotes(str) + '\'';
195 -}
196 -
197 -
198 -function getPathExpr(currentPath, expr, jsonPointers, isNumber) {
199 - var path = jsonPointers // false by default
200 - ? '\'/\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \'~0\').replace(/\\//g, \'~1\')')
201 - : (isNumber ? '\'[\' + ' + expr + ' + \']\'' : '\'[\\\'\' + ' + expr + ' + \'\\\']\'');
202 - return joinPaths(currentPath, path);
203 -}
204 -
205 -
206 -function getPath(currentPath, prop, jsonPointers) {
207 - var path = jsonPointers // false by default
208 - ? toQuotedString('/' + escapeJsonPointer(prop))
209 - : toQuotedString(getProperty(prop));
210 - return joinPaths(currentPath, path);
211 -}
212 -
213 -
214 -var JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/;
215 -var RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;
216 -function getData($data, lvl, paths) {
217 - var up, jsonPointer, data, matches;
218 - if ($data === '') return 'rootData';
219 - if ($data[0] == '/') {
220 - if (!JSON_POINTER.test($data)) throw new Error('Invalid JSON-pointer: ' + $data);
221 - jsonPointer = $data;
222 - data = 'rootData';
223 - } else {
224 - matches = $data.match(RELATIVE_JSON_POINTER);
225 - if (!matches) throw new Error('Invalid JSON-pointer: ' + $data);
226 - up = +matches[1];
227 - jsonPointer = matches[2];
228 - if (jsonPointer == '#') {
229 - if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);
230 - return paths[lvl - up];
231 - }
232 -
233 - if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);
234 - data = 'data' + ((lvl - up) || '');
235 - if (!jsonPointer) return data;
236 - }
237 -
238 - var expr = data;
239 - var segments = jsonPointer.split('/');
240 - for (var i=0; i<segments.length; i++) {
241 - var segment = segments[i];
242 - if (segment) {
243 - data += getProperty(unescapeJsonPointer(segment));
244 - expr += ' && ' + data;
245 - }
246 - }
247 - return expr;
248 -}
249 -
250 -
251 -function joinPaths (a, b) {
252 - if (a == '""') return b;
253 - return (a + ' + ' + b).replace(/' \+ '/g, '');
254 -}
255 -
256 -
257 -function unescapeFragment(str) {
258 - return unescapeJsonPointer(decodeURIComponent(str));
259 -}
260 -
261 -
262 -function escapeFragment(str) {
263 - return encodeURIComponent(escapeJsonPointer(str));
264 -}
265 -
266 -
267 -function escapeJsonPointer(str) {
268 - return str.replace(/~/g, '~0').replace(/\//g, '~1');
269 -}
270 -
271 -
272 -function unescapeJsonPointer(str) {
273 - return str.replace(/~1/g, '/').replace(/~0/g, '~');
274 -}
1 -'use strict';
2 -
3 -var KEYWORDS = [
4 - 'multipleOf',
5 - 'maximum',
6 - 'exclusiveMaximum',
7 - 'minimum',
8 - 'exclusiveMinimum',
9 - 'maxLength',
10 - 'minLength',
11 - 'pattern',
12 - 'additionalItems',
13 - 'maxItems',
14 - 'minItems',
15 - 'uniqueItems',
16 - 'maxProperties',
17 - 'minProperties',
18 - 'required',
19 - 'additionalProperties',
20 - 'enum',
21 - 'format',
22 - 'const'
23 -];
24 -
25 -module.exports = function (metaSchema, keywordsJsonPointers) {
26 - for (var i=0; i<keywordsJsonPointers.length; i++) {
27 - metaSchema = JSON.parse(JSON.stringify(metaSchema));
28 - var segments = keywordsJsonPointers[i].split('/');
29 - var keywords = metaSchema;
30 - var j;
31 - for (j=1; j<segments.length; j++)
32 - keywords = keywords[segments[j]];
33 -
34 - for (j=0; j<KEYWORDS.length; j++) {
35 - var key = KEYWORDS[j];
36 - var schema = keywords[key];
37 - if (schema) {
38 - keywords[key] = {
39 - anyOf: [
40 - schema,
41 - { $ref: 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#' }
42 - ]
43 - };
44 - }
45 - }
46 - }
47 -
48 - return metaSchema;
49 -};
1 -'use strict';
2 -
3 -var metaSchema = require('./refs/json-schema-draft-07.json');
4 -
5 -module.exports = {
6 - $id: 'https://github.com/epoberezkin/ajv/blob/master/lib/definition_schema.js',
7 - definitions: {
8 - simpleTypes: metaSchema.definitions.simpleTypes
9 - },
10 - type: 'object',
11 - dependencies: {
12 - schema: ['validate'],
13 - $data: ['validate'],
14 - statements: ['inline'],
15 - valid: {not: {required: ['macro']}}
16 - },
17 - properties: {
18 - type: metaSchema.properties.type,
19 - schema: {type: 'boolean'},
20 - statements: {type: 'boolean'},
21 - dependencies: {
22 - type: 'array',
23 - items: {type: 'string'}
24 - },
25 - metaSchema: {type: 'object'},
26 - modifying: {type: 'boolean'},
27 - valid: {type: 'boolean'},
28 - $data: {type: 'boolean'},
29 - async: {type: 'boolean'},
30 - errors: {
31 - anyOf: [
32 - {type: 'boolean'},
33 - {const: 'full'}
34 - ]
35 - }
36 - }
37 -};
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.setupKeyword }}
4 -{{# def.$data }}
5 -
6 -{{## def.setExclusiveLimit:
7 - $exclusive = true;
8 - $errorKeyword = $exclusiveKeyword;
9 - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;
10 -#}}
11 -
12 -{{
13 - var $isMax = $keyword == 'maximum'
14 - , $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum'
15 - , $schemaExcl = it.schema[$exclusiveKeyword]
16 - , $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data
17 - , $op = $isMax ? '<' : '>'
18 - , $notOp = $isMax ? '>' : '<'
19 - , $errorKeyword = undefined;
20 -}}
21 -
22 -{{? $isDataExcl }}
23 - {{
24 - var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr)
25 - , $exclusive = 'exclusive' + $lvl
26 - , $exclType = 'exclType' + $lvl
27 - , $exclIsNumber = 'exclIsNumber' + $lvl
28 - , $opExpr = 'op' + $lvl
29 - , $opStr = '\' + ' + $opExpr + ' + \'';
30 - }}
31 - var schemaExcl{{=$lvl}} = {{=$schemaValueExcl}};
32 - {{ $schemaValueExcl = 'schemaExcl' + $lvl; }}
33 -
34 - var {{=$exclusive}};
35 - var {{=$exclType}} = typeof {{=$schemaValueExcl}};
36 - if ({{=$exclType}} != 'boolean' && {{=$exclType}} != 'undefined' && {{=$exclType}} != 'number') {
37 - {{ var $errorKeyword = $exclusiveKeyword; }}
38 - {{# def.error:'_exclusiveLimit' }}
39 - } else if ({{# def.$dataNotType:'number' }}
40 - {{=$exclType}} == 'number'
41 - ? (
42 - ({{=$exclusive}} = {{=$schemaValue}} === undefined || {{=$schemaValueExcl}} {{=$op}}= {{=$schemaValue}})
43 - ? {{=$data}} {{=$notOp}}= {{=$schemaValueExcl}}
44 - : {{=$data}} {{=$notOp}} {{=$schemaValue}}
45 - )
46 - : (
47 - ({{=$exclusive}} = {{=$schemaValueExcl}} === true)
48 - ? {{=$data}} {{=$notOp}}= {{=$schemaValue}}
49 - : {{=$data}} {{=$notOp}} {{=$schemaValue}}
50 - )
51 - || {{=$data}} !== {{=$data}}) {
52 - var op{{=$lvl}} = {{=$exclusive}} ? '{{=$op}}' : '{{=$op}}=';
53 - {{
54 - if ($schema === undefined) {
55 - $errorKeyword = $exclusiveKeyword;
56 - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;
57 - $schemaValue = $schemaValueExcl;
58 - $isData = $isDataExcl;
59 - }
60 - }}
61 -{{??}}
62 - {{
63 - var $exclIsNumber = typeof $schemaExcl == 'number'
64 - , $opStr = $op; /*used in error*/
65 - }}
66 -
67 - {{? $exclIsNumber && $isData }}
68 - {{ var $opExpr = '\'' + $opStr + '\''; /*used in error*/ }}
69 - if ({{# def.$dataNotType:'number' }}
70 - ( {{=$schemaValue}} === undefined
71 - || {{=$schemaExcl}} {{=$op}}= {{=$schemaValue}}
72 - ? {{=$data}} {{=$notOp}}= {{=$schemaExcl}}
73 - : {{=$data}} {{=$notOp}} {{=$schemaValue}} )
74 - || {{=$data}} !== {{=$data}}) {
75 - {{??}}
76 - {{
77 - if ($exclIsNumber && $schema === undefined) {
78 - {{# def.setExclusiveLimit }}
79 - $schemaValue = $schemaExcl;
80 - $notOp += '=';
81 - } else {
82 - if ($exclIsNumber)
83 - $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);
84 -
85 - if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {
86 - {{# def.setExclusiveLimit }}
87 - $notOp += '=';
88 - } else {
89 - $exclusive = false;
90 - $opStr += '=';
91 - }
92 - }
93 -
94 - var $opExpr = '\'' + $opStr + '\''; /*used in error*/
95 - }}
96 -
97 - if ({{# def.$dataNotType:'number' }}
98 - {{=$data}} {{=$notOp}} {{=$schemaValue}}
99 - || {{=$data}} !== {{=$data}}) {
100 - {{?}}
101 -{{?}}
102 - {{ $errorKeyword = $errorKeyword || $keyword; }}
103 - {{# def.error:'_limit' }}
104 - } {{? $breakOnError }} else { {{?}}
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.setupKeyword }}
4 -{{# def.$data }}
5 -
6 -{{ var $op = $keyword == 'maxItems' ? '>' : '<'; }}
7 -if ({{# def.$dataNotType:'number' }} {{=$data}}.length {{=$op}} {{=$schemaValue}}) {
8 - {{ var $errorKeyword = $keyword; }}
9 - {{# def.error:'_limitItems' }}
10 -} {{? $breakOnError }} else { {{?}}
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.setupKeyword }}
4 -{{# def.$data }}
5 -
6 -{{ var $op = $keyword == 'maxLength' ? '>' : '<'; }}
7 -if ({{# def.$dataNotType:'number' }} {{# def.strLength }} {{=$op}} {{=$schemaValue}}) {
8 - {{ var $errorKeyword = $keyword; }}
9 - {{# def.error:'_limitLength' }}
10 -} {{? $breakOnError }} else { {{?}}
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.setupKeyword }}
4 -{{# def.$data }}
5 -
6 -{{ var $op = $keyword == 'maxProperties' ? '>' : '<'; }}
7 -if ({{# def.$dataNotType:'number' }} Object.keys({{=$data}}).length {{=$op}} {{=$schemaValue}}) {
8 - {{ var $errorKeyword = $keyword; }}
9 - {{# def.error:'_limitProperties' }}
10 -} {{? $breakOnError }} else { {{?}}
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.setupKeyword }}
4 -{{# def.setupNextLevel }}
5 -
6 -{{
7 - var $currentBaseId = $it.baseId
8 - , $allSchemasEmpty = true;
9 -}}
10 -
11 -{{~ $schema:$sch:$i }}
12 - {{? {{# def.nonEmptySchema:$sch }} }}
13 - {{
14 - $allSchemasEmpty = false;
15 - $it.schema = $sch;
16 - $it.schemaPath = $schemaPath + '[' + $i + ']';
17 - $it.errSchemaPath = $errSchemaPath + '/' + $i;
18 - }}
19 -
20 - {{# def.insertSubschemaCode }}
21 -
22 - {{# def.ifResultValid }}
23 - {{?}}
24 -{{~}}
25 -
26 -{{? $breakOnError }}
27 - {{? $allSchemasEmpty }}
28 - if (true) {
29 - {{??}}
30 - {{= $closingBraces.slice(0,-1) }}
31 - {{?}}
32 -{{?}}
33 -
34 -{{# def.cleanUp }}
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.setupKeyword }}
4 -{{# def.setupNextLevel }}
5 -
6 -{{
7 - var $noEmptySchema = $schema.every(function($sch) {
8 - return {{# def.nonEmptySchema:$sch }};
9 - });
10 -}}
11 -{{? $noEmptySchema }}
12 - {{ var $currentBaseId = $it.baseId; }}
13 - var {{=$errs}} = errors;
14 - var {{=$valid}} = false;
15 -
16 - {{# def.setCompositeRule }}
17 -
18 - {{~ $schema:$sch:$i }}
19 - {{
20 - $it.schema = $sch;
21 - $it.schemaPath = $schemaPath + '[' + $i + ']';
22 - $it.errSchemaPath = $errSchemaPath + '/' + $i;
23 - }}
24 -
25 - {{# def.insertSubschemaCode }}
26 -
27 - {{=$valid}} = {{=$valid}} || {{=$nextValid}};
28 -
29 - if (!{{=$valid}}) {
30 - {{ $closingBraces += '}'; }}
31 - {{~}}
32 -
33 - {{# def.resetCompositeRule }}
34 -
35 - {{= $closingBraces }}
36 -
37 - if (!{{=$valid}}) {
38 - {{# def.extraError:'anyOf' }}
39 - } else {
40 - {{# def.resetErrors }}
41 - {{? it.opts.allErrors }} } {{?}}
42 -
43 - {{# def.cleanUp }}
44 -{{??}}
45 - {{? $breakOnError }}
46 - if (true) {
47 - {{?}}
48 -{{?}}
1 -{{## def.coerceType:
2 - {{
3 - var $dataType = 'dataType' + $lvl
4 - , $coerced = 'coerced' + $lvl;
5 - }}
6 - var {{=$dataType}} = typeof {{=$data}};
7 - {{? it.opts.coerceTypes == 'array'}}
8 - if ({{=$dataType}} == 'object' && Array.isArray({{=$data}})) {{=$dataType}} = 'array';
9 - {{?}}
10 -
11 - var {{=$coerced}} = undefined;
12 -
13 - {{ var $bracesCoercion = ''; }}
14 - {{~ $coerceToTypes:$type:$i }}
15 - {{? $i }}
16 - if ({{=$coerced}} === undefined) {
17 - {{ $bracesCoercion += '}'; }}
18 - {{?}}
19 -
20 - {{? it.opts.coerceTypes == 'array' && $type != 'array' }}
21 - if ({{=$dataType}} == 'array' && {{=$data}}.length == 1) {
22 - {{=$coerced}} = {{=$data}} = {{=$data}}[0];
23 - {{=$dataType}} = typeof {{=$data}};
24 - /*if ({{=$dataType}} == 'object' && Array.isArray({{=$data}})) {{=$dataType}} = 'array';*/
25 - }
26 - {{?}}
27 -
28 - {{? $type == 'string' }}
29 - if ({{=$dataType}} == 'number' || {{=$dataType}} == 'boolean')
30 - {{=$coerced}} = '' + {{=$data}};
31 - else if ({{=$data}} === null) {{=$coerced}} = '';
32 - {{?? $type == 'number' || $type == 'integer' }}
33 - if ({{=$dataType}} == 'boolean' || {{=$data}} === null
34 - || ({{=$dataType}} == 'string' && {{=$data}} && {{=$data}} == +{{=$data}}
35 - {{? $type == 'integer' }} && !({{=$data}} % 1){{?}}))
36 - {{=$coerced}} = +{{=$data}};
37 - {{?? $type == 'boolean' }}
38 - if ({{=$data}} === 'false' || {{=$data}} === 0 || {{=$data}} === null)
39 - {{=$coerced}} = false;
40 - else if ({{=$data}} === 'true' || {{=$data}} === 1)
41 - {{=$coerced}} = true;
42 - {{?? $type == 'null' }}
43 - if ({{=$data}} === '' || {{=$data}} === 0 || {{=$data}} === false)
44 - {{=$coerced}} = null;
45 - {{?? it.opts.coerceTypes == 'array' && $type == 'array' }}
46 - if ({{=$dataType}} == 'string' || {{=$dataType}} == 'number' || {{=$dataType}} == 'boolean' || {{=$data}} == null)
47 - {{=$coerced}} = [{{=$data}}];
48 - {{?}}
49 - {{~}}
50 -
51 - {{= $bracesCoercion }}
52 -
53 - if ({{=$coerced}} === undefined) {
54 - {{# def.error:'type' }}
55 - } else {
56 - {{# def.setParentData }}
57 - {{=$data}} = {{=$coerced}};
58 - {{? !$dataLvl }}if ({{=$parentData}} !== undefined){{?}}
59 - {{=$parentData}}[{{=$parentDataProperty}}] = {{=$coerced}};
60 - }
61 -#}}
1 -{{# def.definitions }}
2 -{{# def.setupKeyword }}
3 -
4 -{{ var $comment = it.util.toQuotedString($schema); }}
5 -{{? it.opts.$comment === true }}
6 - console.log({{=$comment}});
7 -{{?? typeof it.opts.$comment == 'function' }}
8 - self._opts.$comment({{=$comment}}, {{=it.util.toQuotedString($errSchemaPath)}}, validate.root.schema);
9 -{{?}}
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.setupKeyword }}
4 -{{# def.$data }}
5 -
6 -{{? !$isData }}
7 - var schema{{=$lvl}} = validate.schema{{=$schemaPath}};
8 -{{?}}
9 -var {{=$valid}} = equal({{=$data}}, schema{{=$lvl}});
10 -{{# def.checkError:'const' }}
11 -{{? $breakOnError }} else { {{?}}
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.setupKeyword }}
4 -{{# def.setupNextLevel }}
5 -
6 -
7 -{{
8 - var $idx = 'i' + $lvl
9 - , $dataNxt = $it.dataLevel = it.dataLevel + 1
10 - , $nextData = 'data' + $dataNxt
11 - , $currentBaseId = it.baseId
12 - , $nonEmptySchema = {{# def.nonEmptySchema:$schema }};
13 -}}
14 -
15 -var {{=$errs}} = errors;
16 -var {{=$valid}};
17 -
18 -{{? $nonEmptySchema }}
19 - {{# def.setCompositeRule }}
20 -
21 - {{
22 - $it.schema = $schema;
23 - $it.schemaPath = $schemaPath;
24 - $it.errSchemaPath = $errSchemaPath;
25 - }}
26 -
27 - var {{=$nextValid}} = false;
28 -
29 - for (var {{=$idx}} = 0; {{=$idx}} < {{=$data}}.length; {{=$idx}}++) {
30 - {{
31 - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);
32 - var $passData = $data + '[' + $idx + ']';
33 - $it.dataPathArr[$dataNxt] = $idx;
34 - }}
35 -
36 - {{# def.generateSubschemaCode }}
37 - {{# def.optimizeValidate }}
38 -
39 - if ({{=$nextValid}}) break;
40 - }
41 -
42 - {{# def.resetCompositeRule }}
43 - {{= $closingBraces }}
44 -
45 - if (!{{=$nextValid}}) {
46 -{{??}}
47 - if ({{=$data}}.length == 0) {
48 -{{?}}
49 -
50 - {{# def.error:'contains' }}
51 - } else {
52 - {{? $nonEmptySchema }}
53 - {{# def.resetErrors }}
54 - {{?}}
55 - {{? it.opts.allErrors }} } {{?}}
56 -
57 -{{# def.cleanUp }}
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.setupKeyword }}
4 -{{# def.$data }}
5 -
6 -{{
7 - var $rule = this
8 - , $definition = 'definition' + $lvl
9 - , $rDef = $rule.definition
10 - , $closingBraces = '';
11 - var $validate = $rDef.validate;
12 - var $compile, $inline, $macro, $ruleValidate, $validateCode;
13 -}}
14 -
15 -{{? $isData && $rDef.$data }}
16 - {{
17 - $validateCode = 'keywordValidate' + $lvl;
18 - var $validateSchema = $rDef.validateSchema;
19 - }}
20 - var {{=$definition}} = RULES.custom['{{=$keyword}}'].definition;
21 - var {{=$validateCode}} = {{=$definition}}.validate;
22 -{{??}}
23 - {{
24 - $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);
25 - if (!$ruleValidate) return;
26 - $schemaValue = 'validate.schema' + $schemaPath;
27 - $validateCode = $ruleValidate.code;
28 - $compile = $rDef.compile;
29 - $inline = $rDef.inline;
30 - $macro = $rDef.macro;
31 - }}
32 -{{?}}
33 -
34 -{{
35 - var $ruleErrs = $validateCode + '.errors'
36 - , $i = 'i' + $lvl
37 - , $ruleErr = 'ruleErr' + $lvl
38 - , $asyncKeyword = $rDef.async;
39 -
40 - if ($asyncKeyword && !it.async)
41 - throw new Error('async keyword in sync schema');
42 -}}
43 -
44 -
45 -{{? !($inline || $macro) }}{{=$ruleErrs}} = null;{{?}}
46 -var {{=$errs}} = errors;
47 -var {{=$valid}};
48 -
49 -{{## def.callRuleValidate:
50 - {{=$validateCode}}.call(
51 - {{? it.opts.passContext }}this{{??}}self{{?}}
52 - {{? $compile || $rDef.schema === false }}
53 - , {{=$data}}
54 - {{??}}
55 - , {{=$schemaValue}}
56 - , {{=$data}}
57 - , validate.schema{{=it.schemaPath}}
58 - {{?}}
59 - , {{# def.dataPath }}
60 - {{# def.passParentData }}
61 - , rootData
62 - )
63 -#}}
64 -
65 -{{## def.extendErrors:_inline:
66 - for (var {{=$i}}={{=$errs}}; {{=$i}}<errors; {{=$i}}++) {
67 - var {{=$ruleErr}} = vErrors[{{=$i}}];
68 - if ({{=$ruleErr}}.dataPath === undefined)
69 - {{=$ruleErr}}.dataPath = (dataPath || '') + {{= it.errorPath }};
70 - {{# _inline ? 'if (\{\{=$ruleErr\}\}.schemaPath === undefined) {' : '' }}
71 - {{=$ruleErr}}.schemaPath = "{{=$errSchemaPath}}";
72 - {{# _inline ? '}' : '' }}
73 - {{? it.opts.verbose }}
74 - {{=$ruleErr}}.schema = {{=$schemaValue}};
75 - {{=$ruleErr}}.data = {{=$data}};
76 - {{?}}
77 - }
78 -#}}
79 -
80 -
81 -{{? $isData && $rDef.$data }}
82 - {{ $closingBraces += '}'; }}
83 - if ({{=$schemaValue}} === undefined) {
84 - {{=$valid}} = true;
85 - } else {
86 - {{? $validateSchema }}
87 - {{ $closingBraces += '}'; }}
88 - {{=$valid}} = {{=$definition}}.validateSchema({{=$schemaValue}});
89 - if ({{=$valid}}) {
90 - {{?}}
91 -{{?}}
92 -
93 -{{? $inline }}
94 - {{? $rDef.statements }}
95 - {{= $ruleValidate.validate }}
96 - {{??}}
97 - {{=$valid}} = {{= $ruleValidate.validate }};
98 - {{?}}
99 -{{?? $macro }}
100 - {{# def.setupNextLevel }}
101 - {{
102 - $it.schema = $ruleValidate.validate;
103 - $it.schemaPath = '';
104 - }}
105 - {{# def.setCompositeRule }}
106 - {{ var $code = it.validate($it).replace(/validate\.schema/g, $validateCode); }}
107 - {{# def.resetCompositeRule }}
108 - {{= $code }}
109 -{{??}}
110 - {{# def.beginDefOut}}
111 - {{# def.callRuleValidate }}
112 - {{# def.storeDefOut:def_callRuleValidate }}
113 -
114 - {{? $rDef.errors === false }}
115 - {{=$valid}} = {{? $asyncKeyword }}await {{?}}{{= def_callRuleValidate }};
116 - {{??}}
117 - {{? $asyncKeyword }}
118 - {{ $ruleErrs = 'customErrors' + $lvl; }}
119 - var {{=$ruleErrs}} = null;
120 - try {
121 - {{=$valid}} = await {{= def_callRuleValidate }};
122 - } catch (e) {
123 - {{=$valid}} = false;
124 - if (e instanceof ValidationError) {{=$ruleErrs}} = e.errors;
125 - else throw e;
126 - }
127 - {{??}}
128 - {{=$ruleErrs}} = null;
129 - {{=$valid}} = {{= def_callRuleValidate }};
130 - {{?}}
131 - {{?}}
132 -{{?}}
133 -
134 -{{? $rDef.modifying }}
135 - if ({{=$parentData}}) {{=$data}} = {{=$parentData}}[{{=$parentDataProperty}}];
136 -{{?}}
137 -
138 -{{= $closingBraces }}
139 -
140 -{{## def.notValidationResult:
141 - {{? $rDef.valid === undefined }}
142 - !{{? $macro }}{{=$nextValid}}{{??}}{{=$valid}}{{?}}
143 - {{??}}
144 - {{= !$rDef.valid }}
145 - {{?}}
146 -#}}
147 -
148 -{{? $rDef.valid }}
149 - {{? $breakOnError }} if (true) { {{?}}
150 -{{??}}
151 - if ({{# def.notValidationResult }}) {
152 - {{ $errorKeyword = $rule.keyword; }}
153 - {{# def.beginDefOut}}
154 - {{# def.error:'custom' }}
155 - {{# def.storeDefOut:def_customError }}
156 -
157 - {{? $inline }}
158 - {{? $rDef.errors }}
159 - {{? $rDef.errors != 'full' }}
160 - {{# def.extendErrors:true }}
161 - {{?}}
162 - {{??}}
163 - {{? $rDef.errors === false}}
164 - {{= def_customError }}
165 - {{??}}
166 - if ({{=$errs}} == errors) {
167 - {{= def_customError }}
168 - } else {
169 - {{# def.extendErrors:true }}
170 - }
171 - {{?}}
172 - {{?}}
173 - {{?? $macro }}
174 - {{# def.extraError:'custom' }}
175 - {{??}}
176 - {{? $rDef.errors === false}}
177 - {{= def_customError }}
178 - {{??}}
179 - if (Array.isArray({{=$ruleErrs}})) {
180 - if (vErrors === null) vErrors = {{=$ruleErrs}};
181 - else vErrors = vErrors.concat({{=$ruleErrs}});
182 - errors = vErrors.length;
183 - {{# def.extendErrors:false }}
184 - } else {
185 - {{= def_customError }}
186 - }
187 - {{?}}
188 - {{?}}
189 -
190 - } {{? $breakOnError }} else { {{?}}
191 -{{?}}
1 -{{## def.assignDefault:
2 - {{? it.compositeRule }}
3 - {{
4 - if (it.opts.strictDefaults) {
5 - var $defaultMsg = 'default is ignored for: ' + $passData;
6 - if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);
7 - else throw new Error($defaultMsg);
8 - }
9 - }}
10 - {{??}}
11 - if ({{=$passData}} === undefined
12 - {{? it.opts.useDefaults == 'empty' }}
13 - || {{=$passData}} === null
14 - || {{=$passData}} === ''
15 - {{?}}
16 - )
17 - {{=$passData}} = {{? it.opts.useDefaults == 'shared' }}
18 - {{= it.useDefault($sch.default) }}
19 - {{??}}
20 - {{= JSON.stringify($sch.default) }}
21 - {{?}};
22 - {{?}}
23 -#}}
24 -
25 -
26 -{{## def.defaultProperties:
27 - {{
28 - var $schema = it.schema.properties
29 - , $schemaKeys = Object.keys($schema); }}
30 - {{~ $schemaKeys:$propertyKey }}
31 - {{ var $sch = $schema[$propertyKey]; }}
32 - {{? $sch.default !== undefined }}
33 - {{ var $passData = $data + it.util.getProperty($propertyKey); }}
34 - {{# def.assignDefault }}
35 - {{?}}
36 - {{~}}
37 -#}}
38 -
39 -
40 -{{## def.defaultItems:
41 - {{~ it.schema.items:$sch:$i }}
42 - {{? $sch.default !== undefined }}
43 - {{ var $passData = $data + '[' + $i + ']'; }}
44 - {{# def.assignDefault }}
45 - {{?}}
46 - {{~}}
47 -#}}
1 -{{## def.setupKeyword:
2 - {{
3 - var $lvl = it.level;
4 - var $dataLvl = it.dataLevel;
5 - var $schema = it.schema[$keyword];
6 - var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
7 - var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
8 - var $breakOnError = !it.opts.allErrors;
9 - var $errorKeyword;
10 -
11 - var $data = 'data' + ($dataLvl || '');
12 - var $valid = 'valid' + $lvl;
13 - var $errs = 'errs__' + $lvl;
14 - }}
15 -#}}
16 -
17 -
18 -{{## def.setCompositeRule:
19 - {{
20 - var $wasComposite = it.compositeRule;
21 - it.compositeRule = $it.compositeRule = true;
22 - }}
23 -#}}
24 -
25 -
26 -{{## def.resetCompositeRule:
27 - {{ it.compositeRule = $it.compositeRule = $wasComposite; }}
28 -#}}
29 -
30 -
31 -{{## def.setupNextLevel:
32 - {{
33 - var $it = it.util.copy(it);
34 - var $closingBraces = '';
35 - $it.level++;
36 - var $nextValid = 'valid' + $it.level;
37 - }}
38 -#}}
39 -
40 -
41 -{{## def.ifValid:
42 - {{? $breakOnError }}
43 - if ({{=$valid}}) {
44 - {{ $closingBraces += '}'; }}
45 - {{?}}
46 -#}}
47 -
48 -
49 -{{## def.ifResultValid:
50 - {{? $breakOnError }}
51 - if ({{=$nextValid}}) {
52 - {{ $closingBraces += '}'; }}
53 - {{?}}
54 -#}}
55 -
56 -
57 -{{## def.elseIfValid:
58 - {{? $breakOnError }}
59 - {{ $closingBraces += '}'; }}
60 - else {
61 - {{?}}
62 -#}}
63 -
64 -
65 -{{## def.nonEmptySchema:_schema:
66 - (it.opts.strictKeywords
67 - ? typeof _schema == 'object' && Object.keys(_schema).length > 0
68 - : it.util.schemaHasRules(_schema, it.RULES.all))
69 -#}}
70 -
71 -
72 -{{## def.strLength:
73 - {{? it.opts.unicode === false }}
74 - {{=$data}}.length
75 - {{??}}
76 - ucs2length({{=$data}})
77 - {{?}}
78 -#}}
79 -
80 -
81 -{{## def.willOptimize:
82 - it.util.varOccurences($code, $nextData) < 2
83 -#}}
84 -
85 -
86 -{{## def.generateSubschemaCode:
87 - {{
88 - var $code = it.validate($it);
89 - $it.baseId = $currentBaseId;
90 - }}
91 -#}}
92 -
93 -
94 -{{## def.insertSubschemaCode:
95 - {{= it.validate($it) }}
96 - {{ $it.baseId = $currentBaseId; }}
97 -#}}
98 -
99 -
100 -{{## def._optimizeValidate:
101 - it.util.varReplace($code, $nextData, $passData)
102 -#}}
103 -
104 -
105 -{{## def.optimizeValidate:
106 - {{? {{# def.willOptimize}} }}
107 - {{= {{# def._optimizeValidate }} }}
108 - {{??}}
109 - var {{=$nextData}} = {{=$passData}};
110 - {{= $code }}
111 - {{?}}
112 -#}}
113 -
114 -
115 -{{## def.cleanUp: {{ out = it.util.cleanUpCode(out); }} #}}
116 -
117 -
118 -{{## def.finalCleanUp: {{ out = it.util.finalCleanUpCode(out, $async); }} #}}
119 -
120 -
121 -{{## def.$data:
122 - {{
123 - var $isData = it.opts.$data && $schema && $schema.$data
124 - , $schemaValue;
125 - }}
126 - {{? $isData }}
127 - var schema{{=$lvl}} = {{= it.util.getData($schema.$data, $dataLvl, it.dataPathArr) }};
128 - {{ $schemaValue = 'schema' + $lvl; }}
129 - {{??}}
130 - {{ $schemaValue = $schema; }}
131 - {{?}}
132 -#}}
133 -
134 -
135 -{{## def.$dataNotType:_type:
136 - {{?$isData}} ({{=$schemaValue}} !== undefined && typeof {{=$schemaValue}} != _type) || {{?}}
137 -#}}
138 -
139 -
140 -{{## def.check$dataIsArray:
141 - if (schema{{=$lvl}} === undefined) {{=$valid}} = true;
142 - else if (!Array.isArray(schema{{=$lvl}})) {{=$valid}} = false;
143 - else {
144 -#}}
145 -
146 -
147 -{{## def.beginDefOut:
148 - {{
149 - var $$outStack = $$outStack || [];
150 - $$outStack.push(out);
151 - out = '';
152 - }}
153 -#}}
154 -
155 -
156 -{{## def.storeDefOut:_variable:
157 - {{
158 - var _variable = out;
159 - out = $$outStack.pop();
160 - }}
161 -#}}
162 -
163 -
164 -{{## def.dataPath:(dataPath || ''){{? it.errorPath != '""'}} + {{= it.errorPath }}{{?}}#}}
165 -
166 -{{## def.setParentData:
167 - {{
168 - var $parentData = $dataLvl ? 'data' + (($dataLvl-1)||'') : 'parentData'
169 - , $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';
170 - }}
171 -#}}
172 -
173 -{{## def.passParentData:
174 - {{# def.setParentData }}
175 - , {{= $parentData }}
176 - , {{= $parentDataProperty }}
177 -#}}
178 -
179 -
180 -{{## def.iterateProperties:
181 - {{? $ownProperties }}
182 - {{=$dataProperties}} = {{=$dataProperties}} || Object.keys({{=$data}});
183 - for (var {{=$idx}}=0; {{=$idx}}<{{=$dataProperties}}.length; {{=$idx}}++) {
184 - var {{=$key}} = {{=$dataProperties}}[{{=$idx}}];
185 - {{??}}
186 - for (var {{=$key}} in {{=$data}}) {
187 - {{?}}
188 -#}}
189 -
190 -
191 -{{## def.noPropertyInData:
192 - {{=$useData}} === undefined
193 - {{? $ownProperties }}
194 - || !{{# def.isOwnProperty }}
195 - {{?}}
196 -#}}
197 -
198 -
199 -{{## def.isOwnProperty:
200 - Object.prototype.hasOwnProperty.call({{=$data}}, '{{=it.util.escapeQuotes($propertyKey)}}')
201 -#}}
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.missing }}
4 -{{# def.setupKeyword }}
5 -{{# def.setupNextLevel }}
6 -
7 -
8 -{{## def.propertyInData:
9 - {{=$data}}{{= it.util.getProperty($property) }} !== undefined
10 - {{? $ownProperties }}
11 - && Object.prototype.hasOwnProperty.call({{=$data}}, '{{=it.util.escapeQuotes($property)}}')
12 - {{?}}
13 -#}}
14 -
15 -
16 -{{
17 - var $schemaDeps = {}
18 - , $propertyDeps = {}
19 - , $ownProperties = it.opts.ownProperties;
20 -
21 - for ($property in $schema) {
22 - var $sch = $schema[$property];
23 - var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;
24 - $deps[$property] = $sch;
25 - }
26 -}}
27 -
28 -var {{=$errs}} = errors;
29 -
30 -{{ var $currentErrorPath = it.errorPath; }}
31 -
32 -var missing{{=$lvl}};
33 -{{ for (var $property in $propertyDeps) { }}
34 - {{ $deps = $propertyDeps[$property]; }}
35 - {{? $deps.length }}
36 - if ({{# def.propertyInData }}
37 - {{? $breakOnError }}
38 - && ({{# def.checkMissingProperty:$deps }})) {
39 - {{# def.errorMissingProperty:'dependencies' }}
40 - {{??}}
41 - ) {
42 - {{~ $deps:$propertyKey }}
43 - {{# def.allErrorsMissingProperty:'dependencies' }}
44 - {{~}}
45 - {{?}}
46 - } {{# def.elseIfValid }}
47 - {{?}}
48 -{{ } }}
49 -
50 -{{
51 - it.errorPath = $currentErrorPath;
52 - var $currentBaseId = $it.baseId;
53 -}}
54 -
55 -
56 -{{ for (var $property in $schemaDeps) { }}
57 - {{ var $sch = $schemaDeps[$property]; }}
58 - {{? {{# def.nonEmptySchema:$sch }} }}
59 - {{=$nextValid}} = true;
60 -
61 - if ({{# def.propertyInData }}) {
62 - {{
63 - $it.schema = $sch;
64 - $it.schemaPath = $schemaPath + it.util.getProperty($property);
65 - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);
66 - }}
67 -
68 - {{# def.insertSubschemaCode }}
69 - }
70 -
71 - {{# def.ifResultValid }}
72 - {{?}}
73 -{{ } }}
74 -
75 -{{? $breakOnError }}
76 - {{= $closingBraces }}
77 - if ({{=$errs}} == errors) {
78 -{{?}}
79 -
80 -{{# def.cleanUp }}
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.setupKeyword }}
4 -{{# def.$data }}
5 -
6 -{{
7 - var $i = 'i' + $lvl
8 - , $vSchema = 'schema' + $lvl;
9 -}}
10 -
11 -{{? !$isData }}
12 - var {{=$vSchema}} = validate.schema{{=$schemaPath}};
13 -{{?}}
14 -var {{=$valid}};
15 -
16 -{{?$isData}}{{# def.check$dataIsArray }}{{?}}
17 -
18 -{{=$valid}} = false;
19 -
20 -for (var {{=$i}}=0; {{=$i}}<{{=$vSchema}}.length; {{=$i}}++)
21 - if (equal({{=$data}}, {{=$vSchema}}[{{=$i}}])) {
22 - {{=$valid}} = true;
23 - break;
24 - }
25 -
26 -{{? $isData }} } {{?}}
27 -
28 -{{# def.checkError:'enum' }}
29 -
30 -{{? $breakOnError }} else { {{?}}
1 -{{# def.definitions }}
2 -
3 -{{## def._error:_rule:
4 - {{ 'istanbul ignore else'; }}
5 - {{? it.createErrors !== false }}
6 - {
7 - keyword: '{{= $errorKeyword || _rule }}'
8 - , dataPath: (dataPath || '') + {{= it.errorPath }}
9 - , schemaPath: {{=it.util.toQuotedString($errSchemaPath)}}
10 - , params: {{# def._errorParams[_rule] }}
11 - {{? it.opts.messages !== false }}
12 - , message: {{# def._errorMessages[_rule] }}
13 - {{?}}
14 - {{? it.opts.verbose }}
15 - , schema: {{# def._errorSchemas[_rule] }}
16 - , parentSchema: validate.schema{{=it.schemaPath}}
17 - , data: {{=$data}}
18 - {{?}}
19 - }
20 - {{??}}
21 - {}
22 - {{?}}
23 -#}}
24 -
25 -
26 -{{## def._addError:_rule:
27 - if (vErrors === null) vErrors = [err];
28 - else vErrors.push(err);
29 - errors++;
30 -#}}
31 -
32 -
33 -{{## def.addError:_rule:
34 - var err = {{# def._error:_rule }};
35 - {{# def._addError:_rule }}
36 -#}}
37 -
38 -
39 -{{## def.error:_rule:
40 - {{# def.beginDefOut}}
41 - {{# def._error:_rule }}
42 - {{# def.storeDefOut:__err }}
43 -
44 - {{? !it.compositeRule && $breakOnError }}
45 - {{ 'istanbul ignore if'; }}
46 - {{? it.async }}
47 - throw new ValidationError([{{=__err}}]);
48 - {{??}}
49 - validate.errors = [{{=__err}}];
50 - return false;
51 - {{?}}
52 - {{??}}
53 - var err = {{=__err}};
54 - {{# def._addError:_rule }}
55 - {{?}}
56 -#}}
57 -
58 -
59 -{{## def.extraError:_rule:
60 - {{# def.addError:_rule}}
61 - {{? !it.compositeRule && $breakOnError }}
62 - {{ 'istanbul ignore if'; }}
63 - {{? it.async }}
64 - throw new ValidationError(vErrors);
65 - {{??}}
66 - validate.errors = vErrors;
67 - return false;
68 - {{?}}
69 - {{?}}
70 -#}}
71 -
72 -
73 -{{## def.checkError:_rule:
74 - if (!{{=$valid}}) {
75 - {{# def.error:_rule }}
76 - }
77 -#}}
78 -
79 -
80 -{{## def.resetErrors:
81 - errors = {{=$errs}};
82 - if (vErrors !== null) {
83 - if ({{=$errs}}) vErrors.length = {{=$errs}};
84 - else vErrors = null;
85 - }
86 -#}}
87 -
88 -
89 -{{## def.concatSchema:{{?$isData}}' + {{=$schemaValue}} + '{{??}}{{=$schema}}{{?}}#}}
90 -{{## def.appendSchema:{{?$isData}}' + {{=$schemaValue}}{{??}}{{=$schemaValue}}'{{?}}#}}
91 -{{## def.concatSchemaEQ:{{?$isData}}' + {{=$schemaValue}} + '{{??}}{{=it.util.escapeQuotes($schema)}}{{?}}#}}
92 -
93 -{{## def._errorMessages = {
94 - 'false schema': "'boolean schema is false'",
95 - $ref: "'can\\\'t resolve reference {{=it.util.escapeQuotes($schema)}}'",
96 - additionalItems: "'should NOT have more than {{=$schema.length}} items'",
97 - additionalProperties: "'{{? it.opts._errorDataPathProperty }}is an invalid additional property{{??}}should NOT have additional properties{{?}}'",
98 - anyOf: "'should match some schema in anyOf'",
99 - const: "'should be equal to constant'",
100 - contains: "'should contain a valid item'",
101 - 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'",
102 - 'enum': "'should be equal to one of the allowed values'",
103 - format: "'should match format \"{{#def.concatSchemaEQ}}\"'",
104 - 'if': "'should match \"' + {{=$ifClause}} + '\" schema'",
105 - _limit: "'should be {{=$opStr}} {{#def.appendSchema}}",
106 - _exclusiveLimit: "'{{=$exclusiveKeyword}} should be boolean'",
107 - _limitItems: "'should NOT have {{?$keyword=='maxItems'}}more{{??}}fewer{{?}} than {{#def.concatSchema}} items'",
108 - _limitLength: "'should NOT be {{?$keyword=='maxLength'}}longer{{??}}shorter{{?}} than {{#def.concatSchema}} characters'",
109 - _limitProperties:"'should NOT have {{?$keyword=='maxProperties'}}more{{??}}fewer{{?}} than {{#def.concatSchema}} properties'",
110 - multipleOf: "'should be multiple of {{#def.appendSchema}}",
111 - not: "'should NOT be valid'",
112 - oneOf: "'should match exactly one schema in oneOf'",
113 - pattern: "'should match pattern \"{{#def.concatSchemaEQ}}\"'",
114 - propertyNames: "'property name \\'{{=$invalidName}}\\' is invalid'",
115 - required: "'{{? it.opts._errorDataPathProperty }}is a required property{{??}}should have required property \\'{{=$missingProperty}}\\'{{?}}'",
116 - type: "'should be {{? $typeIsArray }}{{= $typeSchema.join(\",\") }}{{??}}{{=$typeSchema}}{{?}}'",
117 - uniqueItems: "'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)'",
118 - custom: "'should pass \"{{=$rule.keyword}}\" keyword validation'",
119 - patternRequired: "'should have property matching pattern \\'{{=$missingPattern}}\\''",
120 - switch: "'should pass \"switch\" keyword validation'",
121 - _formatLimit: "'should be {{=$opStr}} \"{{#def.concatSchemaEQ}}\"'",
122 - _formatExclusiveLimit: "'{{=$exclusiveKeyword}} should be boolean'"
123 -} #}}
124 -
125 -
126 -{{## def.schemaRefOrVal: {{?$isData}}validate.schema{{=$schemaPath}}{{??}}{{=$schema}}{{?}} #}}
127 -{{## def.schemaRefOrQS: {{?$isData}}validate.schema{{=$schemaPath}}{{??}}{{=it.util.toQuotedString($schema)}}{{?}} #}}
128 -
129 -{{## def._errorSchemas = {
130 - 'false schema': "false",
131 - $ref: "{{=it.util.toQuotedString($schema)}}",
132 - additionalItems: "false",
133 - additionalProperties: "false",
134 - anyOf: "validate.schema{{=$schemaPath}}",
135 - const: "validate.schema{{=$schemaPath}}",
136 - contains: "validate.schema{{=$schemaPath}}",
137 - dependencies: "validate.schema{{=$schemaPath}}",
138 - 'enum': "validate.schema{{=$schemaPath}}",
139 - format: "{{#def.schemaRefOrQS}}",
140 - 'if': "validate.schema{{=$schemaPath}}",
141 - _limit: "{{#def.schemaRefOrVal}}",
142 - _exclusiveLimit: "validate.schema{{=$schemaPath}}",
143 - _limitItems: "{{#def.schemaRefOrVal}}",
144 - _limitLength: "{{#def.schemaRefOrVal}}",
145 - _limitProperties:"{{#def.schemaRefOrVal}}",
146 - multipleOf: "{{#def.schemaRefOrVal}}",
147 - not: "validate.schema{{=$schemaPath}}",
148 - oneOf: "validate.schema{{=$schemaPath}}",
149 - pattern: "{{#def.schemaRefOrQS}}",
150 - propertyNames: "validate.schema{{=$schemaPath}}",
151 - required: "validate.schema{{=$schemaPath}}",
152 - type: "validate.schema{{=$schemaPath}}",
153 - uniqueItems: "{{#def.schemaRefOrVal}}",
154 - custom: "validate.schema{{=$schemaPath}}",
155 - patternRequired: "validate.schema{{=$schemaPath}}",
156 - switch: "validate.schema{{=$schemaPath}}",
157 - _formatLimit: "{{#def.schemaRefOrQS}}",
158 - _formatExclusiveLimit: "validate.schema{{=$schemaPath}}"
159 -} #}}
160 -
161 -
162 -{{## def.schemaValueQS: {{?$isData}}{{=$schemaValue}}{{??}}{{=it.util.toQuotedString($schema)}}{{?}} #}}
163 -
164 -{{## def._errorParams = {
165 - 'false schema': "{}",
166 - $ref: "{ ref: '{{=it.util.escapeQuotes($schema)}}' }",
167 - additionalItems: "{ limit: {{=$schema.length}} }",
168 - additionalProperties: "{ additionalProperty: '{{=$additionalProperty}}' }",
169 - anyOf: "{}",
170 - const: "{ allowedValue: schema{{=$lvl}} }",
171 - contains: "{}",
172 - dependencies: "{ property: '{{= it.util.escapeQuotes($property) }}', missingProperty: '{{=$missingProperty}}', depsCount: {{=$deps.length}}, deps: '{{= it.util.escapeQuotes($deps.length==1 ? $deps[0] : $deps.join(\", \")) }}' }",
173 - 'enum': "{ allowedValues: schema{{=$lvl}} }",
174 - format: "{ format: {{#def.schemaValueQS}} }",
175 - 'if': "{ failingKeyword: {{=$ifClause}} }",
176 - _limit: "{ comparison: {{=$opExpr}}, limit: {{=$schemaValue}}, exclusive: {{=$exclusive}} }",
177 - _exclusiveLimit: "{}",
178 - _limitItems: "{ limit: {{=$schemaValue}} }",
179 - _limitLength: "{ limit: {{=$schemaValue}} }",
180 - _limitProperties:"{ limit: {{=$schemaValue}} }",
181 - multipleOf: "{ multipleOf: {{=$schemaValue}} }",
182 - not: "{}",
183 - oneOf: "{ passingSchemas: {{=$passingSchemas}} }",
184 - pattern: "{ pattern: {{#def.schemaValueQS}} }",
185 - propertyNames: "{ propertyName: '{{=$invalidName}}' }",
186 - required: "{ missingProperty: '{{=$missingProperty}}' }",
187 - type: "{ type: '{{? $typeIsArray }}{{= $typeSchema.join(\",\") }}{{??}}{{=$typeSchema}}{{?}}' }",
188 - uniqueItems: "{ i: i, j: j }",
189 - custom: "{ keyword: '{{=$rule.keyword}}' }",
190 - patternRequired: "{ missingPattern: '{{=$missingPattern}}' }",
191 - switch: "{ caseIndex: {{=$caseIndex}} }",
192 - _formatLimit: "{ comparison: {{=$opExpr}}, limit: {{#def.schemaValueQS}}, exclusive: {{=$exclusive}} }",
193 - _formatExclusiveLimit: "{}"
194 -} #}}
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.setupKeyword }}
4 -
5 -{{## def.skipFormat:
6 - {{? $breakOnError }} if (true) { {{?}}
7 - {{ return out; }}
8 -#}}
9 -
10 -{{? it.opts.format === false }}{{# def.skipFormat }}{{?}}
11 -
12 -
13 -{{# def.$data }}
14 -
15 -
16 -{{## def.$dataCheckFormat:
17 - {{# def.$dataNotType:'string' }}
18 - ({{? $unknownFormats != 'ignore' }}
19 - ({{=$schemaValue}} && !{{=$format}}
20 - {{? $allowUnknown }}
21 - && self._opts.unknownFormats.indexOf({{=$schemaValue}}) == -1
22 - {{?}}) ||
23 - {{?}}
24 - ({{=$format}} && {{=$formatType}} == '{{=$ruleType}}'
25 - && !(typeof {{=$format}} == 'function'
26 - ? {{? it.async}}
27 - (async{{=$lvl}} ? await {{=$format}}({{=$data}}) : {{=$format}}({{=$data}}))
28 - {{??}}
29 - {{=$format}}({{=$data}})
30 - {{?}}
31 - : {{=$format}}.test({{=$data}}))))
32 -#}}
33 -
34 -{{## def.checkFormat:
35 - {{
36 - var $formatRef = 'formats' + it.util.getProperty($schema);
37 - if ($isObject) $formatRef += '.validate';
38 - }}
39 - {{? typeof $format == 'function' }}
40 - {{=$formatRef}}({{=$data}})
41 - {{??}}
42 - {{=$formatRef}}.test({{=$data}})
43 - {{?}}
44 -#}}
45 -
46 -
47 -{{
48 - var $unknownFormats = it.opts.unknownFormats
49 - , $allowUnknown = Array.isArray($unknownFormats);
50 -}}
51 -
52 -{{? $isData }}
53 - {{
54 - var $format = 'format' + $lvl
55 - , $isObject = 'isObject' + $lvl
56 - , $formatType = 'formatType' + $lvl;
57 - }}
58 - var {{=$format}} = formats[{{=$schemaValue}}];
59 - var {{=$isObject}} = typeof {{=$format}} == 'object'
60 - && !({{=$format}} instanceof RegExp)
61 - && {{=$format}}.validate;
62 - var {{=$formatType}} = {{=$isObject}} && {{=$format}}.type || 'string';
63 - if ({{=$isObject}}) {
64 - {{? it.async}}
65 - var async{{=$lvl}} = {{=$format}}.async;
66 - {{?}}
67 - {{=$format}} = {{=$format}}.validate;
68 - }
69 - if ({{# def.$dataCheckFormat }}) {
70 -{{??}}
71 - {{ var $format = it.formats[$schema]; }}
72 - {{? !$format }}
73 - {{? $unknownFormats == 'ignore' }}
74 - {{ it.logger.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"'); }}
75 - {{# def.skipFormat }}
76 - {{?? $allowUnknown && $unknownFormats.indexOf($schema) >= 0 }}
77 - {{# def.skipFormat }}
78 - {{??}}
79 - {{ throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"'); }}
80 - {{?}}
81 - {{?}}
82 - {{
83 - var $isObject = typeof $format == 'object'
84 - && !($format instanceof RegExp)
85 - && $format.validate;
86 - var $formatType = $isObject && $format.type || 'string';
87 - if ($isObject) {
88 - var $async = $format.async === true;
89 - $format = $format.validate;
90 - }
91 - }}
92 - {{? $formatType != $ruleType }}
93 - {{# def.skipFormat }}
94 - {{?}}
95 - {{? $async }}
96 - {{
97 - if (!it.async) throw new Error('async format in sync schema');
98 - var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';
99 - }}
100 - if (!(await {{=$formatRef}}({{=$data}}))) {
101 - {{??}}
102 - if (!{{# def.checkFormat }}) {
103 - {{?}}
104 -{{?}}
105 - {{# def.error:'format' }}
106 - } {{? $breakOnError }} else { {{?}}
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.setupKeyword }}
4 -{{# def.setupNextLevel }}
5 -
6 -
7 -{{## def.validateIfClause:_clause:
8 - {{
9 - $it.schema = it.schema['_clause'];
10 - $it.schemaPath = it.schemaPath + '._clause';
11 - $it.errSchemaPath = it.errSchemaPath + '/_clause';
12 - }}
13 - {{# def.insertSubschemaCode }}
14 - {{=$valid}} = {{=$nextValid}};
15 - {{? $thenPresent && $elsePresent }}
16 - {{ $ifClause = 'ifClause' + $lvl; }}
17 - var {{=$ifClause}} = '_clause';
18 - {{??}}
19 - {{ $ifClause = '\'_clause\''; }}
20 - {{?}}
21 -#}}
22 -
23 -{{
24 - var $thenSch = it.schema['then']
25 - , $elseSch = it.schema['else']
26 - , $thenPresent = $thenSch !== undefined && {{# def.nonEmptySchema:$thenSch }}
27 - , $elsePresent = $elseSch !== undefined && {{# def.nonEmptySchema:$elseSch }}
28 - , $currentBaseId = $it.baseId;
29 -}}
30 -
31 -{{? $thenPresent || $elsePresent }}
32 - {{
33 - var $ifClause;
34 - $it.createErrors = false;
35 - $it.schema = $schema;
36 - $it.schemaPath = $schemaPath;
37 - $it.errSchemaPath = $errSchemaPath;
38 - }}
39 - var {{=$errs}} = errors;
40 - var {{=$valid}} = true;
41 -
42 - {{# def.setCompositeRule }}
43 - {{# def.insertSubschemaCode }}
44 - {{ $it.createErrors = true; }}
45 - {{# def.resetErrors }}
46 - {{# def.resetCompositeRule }}
47 -
48 - {{? $thenPresent }}
49 - if ({{=$nextValid}}) {
50 - {{# def.validateIfClause:then }}
51 - }
52 - {{? $elsePresent }}
53 - else {
54 - {{?}}
55 - {{??}}
56 - if (!{{=$nextValid}}) {
57 - {{?}}
58 -
59 - {{? $elsePresent }}
60 - {{# def.validateIfClause:else }}
61 - }
62 - {{?}}
63 -
64 - if (!{{=$valid}}) {
65 - {{# def.extraError:'if' }}
66 - }
67 - {{? $breakOnError }} else { {{?}}
68 -
69 - {{# def.cleanUp }}
70 -{{??}}
71 - {{? $breakOnError }}
72 - if (true) {
73 - {{?}}
74 -{{?}}
75 -
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.setupKeyword }}
4 -{{# def.setupNextLevel }}
5 -
6 -
7 -{{## def.validateItems:startFrom:
8 - for (var {{=$idx}} = {{=startFrom}}; {{=$idx}} < {{=$data}}.length; {{=$idx}}++) {
9 - {{
10 - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);
11 - var $passData = $data + '[' + $idx + ']';
12 - $it.dataPathArr[$dataNxt] = $idx;
13 - }}
14 -
15 - {{# def.generateSubschemaCode }}
16 - {{# def.optimizeValidate }}
17 -
18 - {{? $breakOnError }}
19 - if (!{{=$nextValid}}) break;
20 - {{?}}
21 - }
22 -#}}
23 -
24 -{{
25 - var $idx = 'i' + $lvl
26 - , $dataNxt = $it.dataLevel = it.dataLevel + 1
27 - , $nextData = 'data' + $dataNxt
28 - , $currentBaseId = it.baseId;
29 -}}
30 -
31 -var {{=$errs}} = errors;
32 -var {{=$valid}};
33 -
34 -{{? Array.isArray($schema) }}
35 - {{ /* 'items' is an array of schemas */}}
36 - {{ var $additionalItems = it.schema.additionalItems; }}
37 - {{? $additionalItems === false }}
38 - {{=$valid}} = {{=$data}}.length <= {{= $schema.length }};
39 - {{
40 - var $currErrSchemaPath = $errSchemaPath;
41 - $errSchemaPath = it.errSchemaPath + '/additionalItems';
42 - }}
43 - {{# def.checkError:'additionalItems' }}
44 - {{ $errSchemaPath = $currErrSchemaPath; }}
45 - {{# def.elseIfValid}}
46 - {{?}}
47 -
48 - {{~ $schema:$sch:$i }}
49 - {{? {{# def.nonEmptySchema:$sch }} }}
50 - {{=$nextValid}} = true;
51 -
52 - if ({{=$data}}.length > {{=$i}}) {
53 - {{
54 - var $passData = $data + '[' + $i + ']';
55 - $it.schema = $sch;
56 - $it.schemaPath = $schemaPath + '[' + $i + ']';
57 - $it.errSchemaPath = $errSchemaPath + '/' + $i;
58 - $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);
59 - $it.dataPathArr[$dataNxt] = $i;
60 - }}
61 -
62 - {{# def.generateSubschemaCode }}
63 - {{# def.optimizeValidate }}
64 - }
65 -
66 - {{# def.ifResultValid }}
67 - {{?}}
68 - {{~}}
69 -
70 - {{? typeof $additionalItems == 'object' && {{# def.nonEmptySchema:$additionalItems }} }}
71 - {{
72 - $it.schema = $additionalItems;
73 - $it.schemaPath = it.schemaPath + '.additionalItems';
74 - $it.errSchemaPath = it.errSchemaPath + '/additionalItems';
75 - }}
76 - {{=$nextValid}} = true;
77 -
78 - if ({{=$data}}.length > {{= $schema.length }}) {
79 - {{# def.validateItems: $schema.length }}
80 - }
81 -
82 - {{# def.ifResultValid }}
83 - {{?}}
84 -
85 -{{?? {{# def.nonEmptySchema:$schema }} }}
86 - {{ /* 'items' is a single schema */}}
87 - {{
88 - $it.schema = $schema;
89 - $it.schemaPath = $schemaPath;
90 - $it.errSchemaPath = $errSchemaPath;
91 - }}
92 - {{# def.validateItems: 0 }}
93 -{{?}}
94 -
95 -{{? $breakOnError }}
96 - {{= $closingBraces }}
97 - if ({{=$errs}} == errors) {
98 -{{?}}
99 -
100 -{{# def.cleanUp }}
1 -{{## def.checkMissingProperty:_properties:
2 - {{~ _properties:$propertyKey:$i }}
3 - {{?$i}} || {{?}}
4 - {{
5 - var $prop = it.util.getProperty($propertyKey)
6 - , $useData = $data + $prop;
7 - }}
8 - ( ({{# def.noPropertyInData }}) && (missing{{=$lvl}} = {{= it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop) }}) )
9 - {{~}}
10 -#}}
11 -
12 -
13 -{{## def.errorMissingProperty:_error:
14 - {{
15 - var $propertyPath = 'missing' + $lvl
16 - , $missingProperty = '\' + ' + $propertyPath + ' + \'';
17 - if (it.opts._errorDataPathProperty) {
18 - it.errorPath = it.opts.jsonPointers
19 - ? it.util.getPathExpr($currentErrorPath, $propertyPath, true)
20 - : $currentErrorPath + ' + ' + $propertyPath;
21 - }
22 - }}
23 - {{# def.error:_error }}
24 -#}}
25 -
26 -
27 -{{## def.allErrorsMissingProperty:_error:
28 - {{
29 - var $prop = it.util.getProperty($propertyKey)
30 - , $missingProperty = it.util.escapeQuotes($propertyKey)
31 - , $useData = $data + $prop;
32 - if (it.opts._errorDataPathProperty) {
33 - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);
34 - }
35 - }}
36 - if ({{# def.noPropertyInData }}) {
37 - {{# def.addError:_error }}
38 - }
39 -#}}
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.setupKeyword }}
4 -{{# def.$data }}
5 -
6 -var division{{=$lvl}};
7 -if ({{?$isData}}
8 - {{=$schemaValue}} !== undefined && (
9 - typeof {{=$schemaValue}} != 'number' ||
10 - {{?}}
11 - (division{{=$lvl}} = {{=$data}} / {{=$schemaValue}},
12 - {{? it.opts.multipleOfPrecision }}
13 - Math.abs(Math.round(division{{=$lvl}}) - division{{=$lvl}}) > 1e-{{=it.opts.multipleOfPrecision}}
14 - {{??}}
15 - division{{=$lvl}} !== parseInt(division{{=$lvl}})
16 - {{?}}
17 - )
18 - {{?$isData}} ) {{?}} ) {
19 - {{# def.error:'multipleOf' }}
20 -} {{? $breakOnError }} else { {{?}}
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.setupKeyword }}
4 -{{# def.setupNextLevel }}
5 -
6 -{{? {{# def.nonEmptySchema:$schema }} }}
7 - {{
8 - $it.schema = $schema;
9 - $it.schemaPath = $schemaPath;
10 - $it.errSchemaPath = $errSchemaPath;
11 - }}
12 -
13 - var {{=$errs}} = errors;
14 -
15 - {{# def.setCompositeRule }}
16 -
17 - {{
18 - $it.createErrors = false;
19 - var $allErrorsOption;
20 - if ($it.opts.allErrors) {
21 - $allErrorsOption = $it.opts.allErrors;
22 - $it.opts.allErrors = false;
23 - }
24 - }}
25 - {{= it.validate($it) }}
26 - {{
27 - $it.createErrors = true;
28 - if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;
29 - }}
30 -
31 - {{# def.resetCompositeRule }}
32 -
33 - if ({{=$nextValid}}) {
34 - {{# def.error:'not' }}
35 - } else {
36 - {{# def.resetErrors }}
37 - {{? it.opts.allErrors }} } {{?}}
38 -{{??}}
39 - {{# def.addError:'not' }}
40 - {{? $breakOnError}}
41 - if (false) {
42 - {{?}}
43 -{{?}}
1 -{{# def.definitions }}
2 -{{# def.errors }}
3 -{{# def.setupKeyword }}
4 -{{# def.setupNextLevel }}
5 -
6 -{{
7 - var $currentBaseId = $it.baseId
8 - , $prevValid = 'prevValid' + $lvl
9 - , $passingSchemas = 'passingSchemas' + $lvl;
10 -}}
11 -
12 -var {{=$errs}} = errors
13 - , {{=$prevValid}} = false
14 - , {{=$valid}} = false
15 - , {{=$passingSchemas}} = null;
16 -
17 -{{# def.setCompositeRule }}
18 -
19 -{{~ $schema:$sch:$i }}
20 - {{? {{# def.nonEmptySchema:$sch }} }}
21 - {{
22 - $it.schema = $sch;
23 - $it.schemaPath = $schemaPath + '[' + $i + ']';
24 - $it.errSchemaPath = $errSchemaPath + '/' + $i;
25 - }}
26 -
27 - {{# def.insertSubschemaCode }}
28 - {{??}}
29 - var {{=$nextValid}} = true;
30 - {{?}}
31 -
32 - {{? $i }}
33 - if ({{=$nextValid}} && {{=$prevValid}}) {
34 - {{=$valid}} = false;
35 - {{=$passingSchemas}} = [{{=$passingSchemas}}, {{=$i}}];
36 - } else {
37 - {{ $closingBraces += '}'; }}
38 - {{?}}
39 -
40 - if ({{=$nextValid}}) {
41 - {{=$valid}} = {{=$prevValid}} = true;
42 - {{=$passingSchemas}} = {{=$i}};
43 - }
44 -{{~}}
45 -
46 -{{# def.resetCompositeRule }}
47 -
48 -{{= $closingBraces }}
49 -
50 -if (!{{=$valid}}) {
51 - {{# def.extraError:'oneOf' }}
52 -} else {
53 - {{# def.resetErrors }}
54 -{{? it.opts.allErrors }} } {{?}}
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.